[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