« Return to Thread: SF.net SVN: jikesrvm:[15716] rvmroot/trunk/rvm/src/org/jikesrvm/compilers/ baseline/ia32/BaselineCompilerImpl.java

SF.net SVN: jikesrvm:[15716] rvmroot/trunk/rvm/src/org/jikesrvm/compilers/ baseline/ia32/BaselineCompilerImpl.java

by dframpton-oss :: Rate this Message:

Reply to Author | View in Thread

Revision: 15716
          http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=15716&view=rev
Author:   dframpton-oss
Date:     2009-06-27 04:53:58 +0000 (Sat, 27 Jun 2009)

Log Message:
-----------
Fix for RVM-833. Modify check was broken for long/double values.

Modified Paths:
--------------
    rvmroot/trunk/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java

Modified: rvmroot/trunk/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java
===================================================================
--- rvmroot/trunk/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java 2009-06-23 12:08:56 UTC (rev 15715)
+++ rvmroot/trunk/rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java 2009-06-27 04:53:58 UTC (rev 15716)
@@ -754,7 +754,7 @@
    */
   @Override
   protected final void emit_lastore() {
-    Barriers.compileModifyCheck(asm, 3*WORDSIZE);
+    Barriers.compileModifyCheck(asm, 12);
     if (VM.BuildFor32Addr) {
       if (SSE2_BASE) {
         asm.emitMOVQ_Reg_RegInd(XMM0,SP); // XMM0 is the value
@@ -2850,6 +2850,7 @@
    */
   @Override
   protected final void emit_unresolved_putfield(FieldReference fieldRef) {
+    Barriers.compileModifyCheck(asm, fieldRef.getNumberOfStackSlots() * WORDSIZE);
     TypeReference fieldType = fieldRef.getFieldContentsType();
     emitDynamicLinkingSequence(asm, T0, fieldRef, true);
     if (fieldType.isReferenceType()) {
@@ -2920,9 +2921,9 @@
    */
   @Override
   protected final void emit_resolved_putfield(FieldReference fieldRef) {
+    Barriers.compileModifyCheck(asm, fieldRef.getNumberOfStackSlots() * WORDSIZE);
     RVMField field = fieldRef.peekResolvedField();
     Offset fieldOffset = field.getOffset();
-    Barriers.compileModifyCheck(asm, 4);
     if (field.isReferenceType()) {
       // 32/64bit reference store
       if (MemoryManagerConstants.NEEDS_WRITE_BARRIER && !field.isUntraced()) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.

------------------------------------------------------------------------------
_______________________________________________
Jikesrvm-commits mailing list
Jikesrvm-commits@...
https://lists.sourceforge.net/lists/listinfo/jikesrvm-commits

 « Return to Thread: SF.net SVN: jikesrvm:[15716] rvmroot/trunk/rvm/src/org/jikesrvm/compilers/ baseline/ia32/BaselineCompilerImpl.java