[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