[vmkit-commits] [vmkit] r109978 - in /vmkit/trunk: include/j3/J3Intrinsics.h lib/J3/Compiler/J3Intrinsics.cpp lib/J3/Compiler/LowerConstantCalls.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Aug 1 06:22:21 PDT 2010


Author: geoffray
Date: Sun Aug  1 08:22:20 2010
New Revision: 109978

URL: http://llvm.org/viewvc/llvm-project?rev=109978&view=rev
Log:
Remove getFinalObjectField, as it does not work with copying GCs. Also, ensure that all loads on Java objects are volatile.


Modified:
    vmkit/trunk/include/j3/J3Intrinsics.h
    vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp
    vmkit/trunk/lib/J3/Compiler/LowerConstantCalls.cpp

Modified: vmkit/trunk/include/j3/J3Intrinsics.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/J3Intrinsics.h?rev=109978&r1=109977&r2=109978&view=diff
==============================================================================
--- vmkit/trunk/include/j3/J3Intrinsics.h (original)
+++ vmkit/trunk/include/j3/J3Intrinsics.h Sun Aug  1 08:22:20 2010
@@ -116,7 +116,6 @@
   llvm::Function* GetFinalLongFieldFunction;
   llvm::Function* GetFinalFloatFieldFunction;
   llvm::Function* GetFinalDoubleFieldFunction;
-  llvm::Function* GetFinalObjectFieldFunction;
   
   llvm::Constant* JavaArraySizeOffsetConstant;
   llvm::Constant* JavaArrayElementsOffsetConstant;

Modified: vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp?rev=109978&r1=109977&r2=109978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp Sun Aug  1 08:22:20 2010
@@ -225,7 +225,6 @@
   GetFinalLongFieldFunction = module->getFunction("getFinalLongField");
   GetFinalFloatFieldFunction = module->getFunction("getFinalFloatField");
   GetFinalDoubleFieldFunction = module->getFunction("getFinalDoubleField");
-  GetFinalObjectFieldFunction = module->getFunction("getFinalObjectField");
 
 #ifdef ISOLATE_SHARING
   GetCtpClassFunction = module->getFunction("getCtpClass");

Modified: vmkit/trunk/lib/J3/Compiler/LowerConstantCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/LowerConstantCalls.cpp?rev=109978&r1=109977&r2=109978&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/LowerConstantCalls.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/LowerConstantCalls.cpp Sun Aug  1 08:22:20 2010
@@ -197,6 +197,13 @@
         }
         continue;
       }
+      // Make sure all Loads on objects are volatile to cooperate with the GC.
+      if (LoadInst* LI = dyn_cast<LoadInst>(I)) {
+        if (LI->getType() == intrinsics->JavaObjectType &&
+            dyn_cast<AllocaInst>(LI->getPointerOperand()) != NULL) {
+          assert(LI->isVolatile());
+        }
+      }
 
       CallSite Call = CallSite::get(I);
       Instruction* CI = Call.getInstruction();
@@ -577,8 +584,7 @@
                    V == intrinsics->GetFinalInt32FieldFunction ||
                    V == intrinsics->GetFinalLongFieldFunction ||
                    V == intrinsics->GetFinalFloatFieldFunction ||
-                   V == intrinsics->GetFinalDoubleFieldFunction ||
-                   V == intrinsics->GetFinalObjectFieldFunction) {
+                   V == intrinsics->GetFinalDoubleFieldFunction) {
           Changed = true;
           Value* val = Call.getArgument(0);
           Value* res = new LoadInst(val, "", CI);





More information about the vmkit-commits mailing list