[vmkit-commits] [vmkit] r140468 - in /vmkit/trunk: include/j3/JavaLLVMCompiler.h lib/J3/Compiler/JavaAOTCompiler.cpp tools/precompiler/Precompiler.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Sep 25 02:47:13 PDT 2011
Author: geoffray
Date: Sun Sep 25 04:47:13 2011
New Revision: 140468
URL: http://llvm.org/viewvc/llvm-project?rev=140468&view=rev
Log:
Use the information of the JIT compiler to know what method to compile. Don't rely on JavaMethod.code.
Modified:
vmkit/trunk/include/j3/JavaLLVMCompiler.h
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/tools/precompiler/Precompiler.cpp
Modified: vmkit/trunk/include/j3/JavaLLVMCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaLLVMCompiler.h?rev=140468&r1=140467&r2=140468&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaLLVMCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaLLVMCompiler.h Sun Sep 25 04:47:13 2011
@@ -42,6 +42,7 @@
class Signdef;
class JavaLLVMCompiler : public JavaCompiler {
+ friend class JavaAOTCompiler;
friend class LLVMClassInfo;
friend class LLVMMethodInfo;
friend class LLVMSignatureInfo;
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=140468&r1=140467&r2=140468&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Sep 25 04:47:13 2011
@@ -2307,6 +2307,8 @@
}
void JavaAOTCompiler::compileClassLoader(JnjvmBootstrapLoader* loader) {
+ JavaJITCompiler* jitCompiler = (JavaJITCompiler*)loader->getCompiler();
+ loader->setCompiler(this);
compileRT = true;
precompile = true;
addJavaPasses();
@@ -2334,34 +2336,15 @@
}
}
- for (ClassMap::iterator i = loader->getClasses()->map.begin(),
- e = loader->getClasses()->map.end(); i!= e; ++i) {
- getNativeClass(i->second);
- if (i->second->isClass()) {
- Class* cl = i->second->asClass();
- for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {
- JavaMethod& meth = cl->virtualMethods[i];
- if (meth.code != NULL) {
- parseFunction(&meth);
- }
- }
-
- for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
- JavaMethod& meth = cl->staticMethods[i];
- if (meth.code != NULL) {
- parseFunction(&meth);
- }
- }
- }
+ for (method_info_iterator I = jitCompiler->method_infos.begin(),
+ E = jitCompiler->method_infos.end(); I != E; I++) {
+ if (!isAbstract(I->first->access)) parseFunction(I->first);
}
while (!toCompile.empty()) {
JavaMethod* meth = toCompile.back();
toCompile.pop_back();
- getNativeClass(meth->classDef);
- Function* Func = parseFunction(meth);
- // Also update code to notify that this function has been emitted.
- meth->code = Func;
+ parseFunction(meth);
}
// Make sure classes and arrays already referenced in constant pools
Modified: vmkit/trunk/tools/precompiler/Precompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/precompiler/Precompiler.cpp?rev=140468&r1=140467&r2=140468&view=diff
==============================================================================
--- vmkit/trunk/tools/precompiler/Precompiler.cpp (original)
+++ vmkit/trunk/tools/precompiler/Precompiler.cpp Sun Sep 25 04:47:13 2011
@@ -43,8 +43,9 @@
static void mainCompilerLoaderStart(JavaThread* th) {
Jnjvm* vm = th->getJVM();
JnjvmBootstrapLoader* bootstrapLoader = vm->bootstrapLoader;
- JavaAOTCompiler* M = (JavaAOTCompiler*)bootstrapLoader->getCompiler();
- M->compileClassLoader(bootstrapLoader);
+ JavaAOTCompiler* AOT = new JavaAOTCompiler("AOT");
+ AOT->compileClassLoader(bootstrapLoader);
+ AOT->printStats();
vm->exit();
}
@@ -67,8 +68,9 @@
// Create the allocator that will allocate the bootstrap loader and the JVM.
mvm::BumpPtrAllocator Allocator;
- JavaAOTCompiler* AOT = new JavaAOTCompiler("AOT");
+ JavaAOTCompiler* AOT;
if (EmitClassBytes) {
+ AOT = new JavaAOTCompiler("AOT");
OutputFilename = "classes.bc";
JnjvmBootstrapLoader* loader = new(Allocator, "Bootstrap loader")
JnjvmBootstrapLoader(Allocator, AOT, true);
@@ -85,16 +87,15 @@
vm->waitForExit();
// Now AOT Compile all compiled methods.
- loader->setCompiler(AOT);
-
vm->doExit = false;
JavaThread* th = new JavaThread(vm);
vm->setMainThread(th);
th->start((void (*)(mvm::Thread*))mainCompilerLoaderStart);
vm->waitForExit();
+
+ AOT = (JavaAOTCompiler*)loader->getCompiler();
}
- AOT->printStats();
// Emit the bytecode in file.
std::string ErrorInfo;
More information about the vmkit-commits
mailing list