[vmkit-commits] [vmkit] r86488 - in /vmkit/trunk: Makefile.rules lib/JnJVM/Compiler/JavaJIT.cpp lib/JnJVM/Compiler/JavaJITOpcodes.cpp lib/Mvm/Compiler/JIT.cpp lib/Mvm/Compiler/LLVMRuntime.ll lib/Mvm/MMTk/MvmGC.cpp lib/Mvm/Makefile mmtk/mmtk-j3/VM.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Nov 8 15:01:50 PST 2009


Author: geoffray
Date: Sun Nov  8 17:01:50 2009
New Revision: 86488

URL: http://llvm.org/viewvc/llvm-project?rev=86488&view=rev
Log:
Starters for gcmalloc inlining.


Modified:
    vmkit/trunk/Makefile.rules
    vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp
    vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp
    vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
    vmkit/trunk/lib/Mvm/Compiler/LLVMRuntime.ll
    vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
    vmkit/trunk/lib/Mvm/Makefile
    vmkit/trunk/mmtk/mmtk-j3/VM.cpp

Modified: vmkit/trunk/Makefile.rules
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/Makefile.rules?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/Makefile.rules (original)
+++ vmkit/trunk/Makefile.rules Sun Nov  8 17:01:50 2009
@@ -127,15 +127,12 @@
 ifdef RUN_ANT
 ifdef ANT
 
-ifeq ($(WITH_LLVM_GCC), 1)
 ADDITIONAL_ARGS := -load-bc=$(LibDir)/MMTKRuntime.bc
-else
-ADDITIONAL_ARGS := -load=$(LibDir)/MMTKRuntime$(SHLIBEXT) 
-endif
 
 all::
 	$(Verb) $(ANT)
 	$(Echo) Building $(BuildMode) $(JARNAME).jar $(notdir $@)
+	$(Verb) $(LOPT) -load=$(LibDir)/JITGCPass$(SHLIBEXT) -std-compile-opts -JITGCPass -f $(LibDir)/MMTKRuntime.bc -o $(LibDir)/MMTKRuntime.bc
 	$(Verb) $(VMJC) -std-compile-opts $(ADDITIONAL_ARGS) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -LowerMagic -verify $(JARNAME).jar -disable-exceptions -disable-cooperativegc -with-clinit=org/mmtk/vm/VM,org/mmtk/utility/*,org/mmtk/policy/*,org/j3/config/* -Dmmtk.hostjvm=org.j3.mmtk.Factory -o $(JARNAME).bc -Dmmtk.properties=vmkit.properties -disable-stubs -assume-compiled
 	$(Verb) $(LOPT) -load=$(LibDir)/MMTKMagic$(SHLIBEXT) -std-compile-opts -LowerJavaRT -f $(JARNAME).bc -o $(JARNAME)-optimized.bc
 

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJIT.cpp Sun Nov  8 17:01:50 2009
@@ -1869,7 +1869,8 @@
     Size = CallInst::Create(module->GetObjectSizeFromClassFunction, Cl,
                             "", currentBlock);
   }
-  
+ 
+  VT = new BitCastInst(VT, module->ptrType, "", currentBlock);
   Value* val = invoke(module->AllocateFunction, Size, VT, "",
                       currentBlock);
  

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITOpcodes.cpp Sun Nov  8 17:01:50 2009
@@ -2023,6 +2023,7 @@
         Value* size =
           BinaryOperator::CreateAdd(module->JavaArraySizeConstant, mult,
                                     "", currentBlock);
+        TheVT = new BitCastInst(TheVT, module->ptrType, "", currentBlock);
         Value* res = invoke(module->AllocateFunction, size, TheVT, "",
                             currentBlock);
         Value* cast = new BitCastInst(res, module->JavaArrayType, "",

Modified: vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/JIT.cpp?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/JIT.cpp Sun Nov  8 17:01:50 2009
@@ -426,6 +426,7 @@
   unconditionalSafePoint = module->getFunction("unconditionalSafePoint");
   conditionalSafePoint = module->getFunction("conditionalSafePoint");
   AllocateFunction = module->getFunction("gcmalloc");
+  assert(AllocateFunction && "No allocate function");
 }
 
 
@@ -542,6 +543,17 @@
       F->setAttributes(SF->getAttributes());
     }
   }
+  Function* SF = Src->getFunction("gcmalloc");
+  if (SF && !SF->isDeclaration()) {
+    Function* F = Function::Create(SF->getFunctionType(),
+                                   GlobalValue::ExternalLinkage,
+                                   SF->getName(), Dst);
+    F->setAttributes(SF->getAttributes());
+    if (executionEngine) {
+      void* ptr = executionEngine->getPointerToFunction(SF);
+      executionEngine->updateGlobalMapping(F, ptr);
+    }
+  }
 }
 
 void JITMethodInfo::scan(void* TL, void* ip, void* addr) {

Modified: vmkit/trunk/lib/Mvm/Compiler/LLVMRuntime.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/LLVMRuntime.ll?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/LLVMRuntime.ll (original)
+++ vmkit/trunk/lib/Mvm/Compiler/LLVMRuntime.ll Sun Nov  8 17:01:50 2009
@@ -82,4 +82,4 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 declare void @llvm.gcroot(i8**, i8*)
-declare i8* @gcmalloc(i32, %VT*)
+declare i8* @gcmalloc(i32, i8*)

Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp Sun Nov  8 17:01:50 2009
@@ -95,10 +95,3 @@
   }
 }
 
-extern "C" void* gcmalloc(size_t sz, VirtualTable* VT) {
-  gc* res = 0;
-  llvm_gcroot(res, 0);
-  res = (gc*)gc::operator new(sz, VT);
-  return res;
-}
-

Modified: vmkit/trunk/lib/Mvm/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Makefile?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/Makefile (original)
+++ vmkit/trunk/lib/Mvm/Makefile Sun Nov  8 17:01:50 2009
@@ -12,6 +12,6 @@
 
 EXTRA_DIST = BoehmGC GCMmap2 MMTk
 
-DIRS = Allocator CommonThread $(GCLIB) Runtime Compiler StaticGCPass
+DIRS = Allocator CommonThread $(GCLIB) Runtime Compiler StaticGCPass JITGCPass
 
 include $(LEVEL)/Makefile.common

Modified: vmkit/trunk/mmtk/mmtk-j3/VM.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/VM.cpp?rev=86488&r1=86487&r2=86488&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/VM.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/VM.cpp Sun Nov  8 17:01:50 2009
@@ -40,3 +40,19 @@
   return true;
 }
 
+extern "C" void* gcmalloc(size_t sz, void* _VT) {
+  gc* res = 0;
+  llvm_gcroot(res, 0);
+  VirtualTable* VT = (VirtualTable*)_VT;
+  sz = llvm::RoundUpToAlignment(sz, sizeof(void*));
+  uintptr_t Mutator = mvm::MutatorThread::get()->MutatorContext;
+  int allocator = gc::MMTkCheckAllocator(Mutator, sz, 0, 0);
+  res = (gc*)gc::MMTkGCAllocator(Mutator, sz, 0, 0, allocator, 0);
+  res->setVirtualTable(VT);
+  gc::MMTkGCPostAllocator(Mutator, (uintptr_t)res, (uintptr_t)VT, sz, allocator);
+    
+  if (VT->destructor) {
+    mvm::Thread::get()->MyVM->addFinalizationCandidate(res);
+  }
+  return res;
+}





More information about the vmkit-commits mailing list