[vmkit-commits] [vmkit] r75131 - in /vmkit/trunk: include/jnjvm/JnjvmModule.h lib/JnJVM/Compiler/JavaAOTCompiler.cpp tools/vmjc/vmjc.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Thu Jul 9 03:27:02 PDT 2009


Author: geoffray
Date: Thu Jul  9 05:27:00 2009
New Revision: 75131

URL: http://llvm.org/viewvc/llvm-project?rev=75131&view=rev
Log:
One can set properties to the VM (-Da=b) when  static compiling. This
may be useful for clinits.


Modified:
    vmkit/trunk/include/jnjvm/JnjvmModule.h
    vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/tools/vmjc/vmjc.cpp

Modified: vmkit/trunk/include/jnjvm/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JnjvmModule.h?rev=75131&r1=75130&r2=75131&view=diff

==============================================================================
--- vmkit/trunk/include/jnjvm/JnjvmModule.h (original)
+++ vmkit/trunk/include/jnjvm/JnjvmModule.h Thu Jul  9 05:27:00 2009
@@ -47,6 +47,7 @@
 class JavaObject;
 class JavaString;
 class JavaVirtualTable;
+class Jnjvm;
 class JnjvmClassLoader;
 class JnjvmModule;
 class Typedef;
@@ -648,7 +649,7 @@
   
   void printStats();
   
-  void compileFile(JnjvmClassLoader* JCL, const char* name);
+  void compileFile(Jnjvm* vm, const char* name);
   void compileClass(Class* cl);
   void generateMain(const char* name, bool jit);
 

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

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Thu Jul  9 05:27:00 2009
@@ -1733,10 +1733,8 @@
   
 }
 
-void JavaAOTCompiler::compileFile(JnjvmClassLoader* JCL, const char* n) {
+void JavaAOTCompiler::compileFile(Jnjvm* vm, const char* n) {
   name = n;
-  mvm::BumpPtrAllocator A;
-  Jnjvm* vm = new(A, "Bootstrap loader") Jnjvm(A, (JnjvmBootstrapLoader*)JCL);
   JavaThread* th = new JavaThread(0, 0, vm);
   vm->setMainThread(th);
   th->start((void (*)(mvm::Thread*))mainCompilerStart);

Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=75131&r1=75130&r2=75131&view=diff

==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Thu Jul  9 05:27:00 2009
@@ -47,6 +47,7 @@
 #include "jnjvm/JnjvmModuleProvider.h"
 
 #include "../../lib/JnJVM/VMCore/JnjvmClassLoader.h"
+#include "../../lib/JnJVM/VMCore/Jnjvm.h"
 
 #include <iostream>
 #include <fstream>
@@ -114,6 +115,9 @@
            cl::desc("Print stats by the AOT compiler"));
 
 
+static cl::list<std::string> 
+Properties("D", cl::desc("Set a property"), cl::Prefix, cl::ZeroOrMore);
+
 
 
 inline void addPass(FunctionPassManager *PM, Pass *P) {
@@ -218,7 +222,25 @@
     if (DisableStubs) Comp->generateStubs = false;
     if (AssumeCompiled) Comp->assumeCompiled = true;
     if (WithClinit) Comp->runClinit = true;
-    Comp->compileFile(JCL, InputFilename.c_str());
+    
+    mvm::BumpPtrAllocator A;
+    Jnjvm* vm = new(A, "Bootstrap loader") Jnjvm(A, (JnjvmBootstrapLoader*)JCL);
+  
+    for (std::vector<std::string>::iterator i = Properties.begin(),
+         e = Properties.end(); i != e; ++i) {
+
+      char* key = new char [(*i).size()+1];
+      strcpy(key, (*i).c_str());
+      char* value = strchr(key, '=');
+      if (!value) {
+        delete[] key;
+      } else {
+        value[0] = 0;
+        vm->addProperty(key, &value[1]);
+      }
+    }
+
+    Comp->compileFile(vm, InputFilename.c_str());
 
     if (!MainClass.empty()) {
       Comp->generateMain(MainClass.c_str(), WithJIT);





More information about the vmkit-commits mailing list