[vmkit-commits] [vmkit] r180450 - Add VTAllocate intrinsic to make distinction between customized and generic gcmalloc.

Peter Senna Tschudin peter.senna at gmail.com
Thu Apr 25 10:12:20 PDT 2013


Author: peter.senna
Date: Thu Apr 25 12:10:48 2013
New Revision: 180450

URL: http://llvm.org/viewvc/llvm-project?rev=180450&view=rev
Log:
Add VTAllocate intrinsic to make distinction between customized and generic gcmalloc.
(cherry picked from commit 645b0664833cb4ef2a4ec1a36f14bbf1aa95191b)

Modified:
    vmkit/trunk/include/j3/J3Intrinsics.h
    vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp
    vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp
    vmkit/trunk/lib/j3/Compiler/JavaJITOpcodes.cpp
    vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp
    vmkit/trunk/mmtk/magic/LowerJavaRT.cpp

Modified: vmkit/trunk/include/j3/J3Intrinsics.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/J3Intrinsics.h?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/include/j3/J3Intrinsics.h (original)
+++ vmkit/trunk/include/j3/J3Intrinsics.h Thu Apr 25 12:10:48 2013
@@ -48,6 +48,9 @@ public:
   llvm::Type* MutatorThreadType;
   llvm::Type* J3DenseMapType;
   
+  llvm::Function* VTAllocateFunction;
+  llvm::Function* VTAllocateUnresolvedFunction;
+
   llvm::Function* StartJNIFunction;
   llvm::Function* EndJNIFunction;
   llvm::Function* InterfaceLookupFunction;

Modified: vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/J3Intrinsics.cpp Thu Apr 25 12:10:48 2013
@@ -35,9 +35,9 @@ void J3Intrinsics::init(llvm::Module* mo
   BaseIntrinsics::init(module);
 
   // Overloading allocation function to use VTgcmalloc
-  AllocateUnresolvedFunction = module->getFunction("VTgcmallocUnresolved");
-  assert(AllocateUnresolvedFunction && "No allocateUnresolved function");
-  AllocateFunction = module->getFunction("VTgcmalloc");
+  VTAllocateUnresolvedFunction = module->getFunction("VTgcmallocUnresolved");
+  assert(VTAllocateUnresolvedFunction && "No allocateUnresolved function");
+  VTAllocateFunction = module->getFunction("VTgcmalloc");
 
   j3::llvm_runtime::makeLLVMModuleContents(module);
   

Modified: vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJIT.cpp Thu Apr 25 12:10:48 2013
@@ -1884,8 +1884,8 @@ void JavaJIT::invokeNew(uint16 index) {
   }
  
   VT = new BitCastInst(VT, intrinsics->ptrType, "", currentBlock);
-  Instruction* val = invoke(cl ? intrinsics->AllocateFunction :
-                           intrinsics->AllocateUnresolvedFunction,
+  Instruction* val = invoke(cl ? intrinsics->VTAllocateFunction :
+                           intrinsics->VTAllocateUnresolvedFunction,
                            Size, VT, "", currentBlock);
 
   addHighLevelType(val, cl ? cl : upcalls->OfObject);

Modified: vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJITCompiler.cpp Thu Apr 25 12:10:48 2013
@@ -177,10 +177,10 @@ JavaJITCompiler::JavaJITCompiler(const s
   // Set the pointer to methods that will be inlined, so that these methods
   // do not get compiled by the JIT.
   executionEngine->updateGlobalMapping(
-      JavaIntrinsics.AllocateFunction, (void*)(word_t)VTgcmalloc);
-  executionEngine->updateGlobalMapping(
       JavaIntrinsics.AllocateFunction, (void*)(word_t)vmkitgcmalloc);
   executionEngine->updateGlobalMapping(
+      JavaIntrinsics.VTAllocateFunction, (void*)(word_t)VTgcmalloc);
+  executionEngine->updateGlobalMapping(
       JavaIntrinsics.ArrayWriteBarrierFunction, (void*)(word_t)arrayWriteBarrier);
   executionEngine->updateGlobalMapping(
       JavaIntrinsics.FieldWriteBarrierFunction, (void*)(word_t)fieldWriteBarrier);

Modified: vmkit/trunk/lib/j3/Compiler/JavaJITOpcodes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/JavaJITOpcodes.cpp?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/JavaJITOpcodes.cpp Thu Apr 25 12:10:48 2013
@@ -2177,7 +2177,7 @@ void JavaJIT::compileOpcodes(Reader& rea
           BinaryOperator::CreateAdd(intrinsics->JavaArraySizeConstant, mult,
                                     "", currentBlock);
         TheVT = new BitCastInst(TheVT, intrinsics->ptrType, "", currentBlock);
-        Instruction* res = invoke(intrinsics->AllocateFunction, size, TheVT, "",
+        Instruction* res = invoke(intrinsics->VTAllocateFunction, size, TheVT, "",
                                   currentBlock);
         Value* cast = new BitCastInst(res, intrinsics->JavaArrayType, "",
                                       currentBlock);

Modified: vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp (original)
+++ vmkit/trunk/lib/j3/Compiler/LowerConstantCalls.cpp Thu Apr 25 12:10:48 2013
@@ -89,7 +89,7 @@ bool LowerConstantCalls::runOnFunction(F
               (InsArg->getOpcode() == Instruction::Call ||
                InsArg->getOpcode() == Instruction::Invoke)) { 
             CallSite Ca(Arg);
-            if (Ca.getCalledValue() == intrinsics->AllocateFunction) {
+            if (Ca.getCalledValue() == intrinsics->VTAllocateFunction) {
               Changed = true;
               Cmp->replaceAllUsesWith(ConstantInt::getFalse(*Context));
               Cmp->eraseFromParent();

Modified: vmkit/trunk/mmtk/magic/LowerJavaRT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/magic/LowerJavaRT.cpp?rev=180450&r1=180449&r2=180450&view=diff
==============================================================================
--- vmkit/trunk/mmtk/magic/LowerJavaRT.cpp (original)
+++ vmkit/trunk/mmtk/magic/LowerJavaRT.cpp Thu Apr 25 12:10:48 2013
@@ -135,13 +135,6 @@ bool LowerJavaRT::runOnModule(Module& M)
   Ma->replaceAllUsesWith(NewFunction);
   Ma->eraseFromParent();
 
-//  // Replace vmkitgcmalloc with the allocator of MMTk objects in VMKit
-//  F = M.getFunction("vmkitgcmalloc");
-//
-//  F->replaceAllUsesWith(NewFunction);
-//  F->eraseFromParent();
-
-
   // Finally, remove GC info from the methods. They must not have any
   // gcroot.
   for (Module::iterator I = M.begin(), E = M.end(); I != E; I++) {





More information about the vmkit-commits mailing list