[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