[vmkit-commits] [vmkit] r117216 - in /vmkit/branches/precise: include/j3/JavaJITCompiler.h include/j3/JavaLLVMCompiler.h include/j3/LLVMMaterializer.h lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/Compiler/JavaJITCompiler.cpp lib/J3/Compiler/JavaLLVMCompiler.cpp lib/J3/Compiler/LLVMMaterializer.cpp lib/J3/VMCore/JavaClass.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Oct 23 11:56:31 PDT 2010


Author: geoffray
Date: Sat Oct 23 13:56:31 2010
New Revision: 117216

URL: http://llvm.org/viewvc/llvm-project?rev=117216&view=rev
Log:
The bootstrap classes can not really be trusted either (eg Array.sort).


Modified:
    vmkit/branches/precise/include/j3/JavaJITCompiler.h
    vmkit/branches/precise/include/j3/JavaLLVMCompiler.h
    vmkit/branches/precise/include/j3/LLVMMaterializer.h
    vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp
    vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp
    vmkit/branches/precise/lib/J3/Compiler/JavaLLVMCompiler.cpp
    vmkit/branches/precise/lib/J3/Compiler/LLVMMaterializer.cpp
    vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp

Modified: vmkit/branches/precise/include/j3/JavaJITCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/JavaJITCompiler.h?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/JavaJITCompiler.h (original)
+++ vmkit/branches/precise/include/j3/JavaJITCompiler.h Sat Oct 23 13:56:31 2010
@@ -40,7 +40,7 @@
   llvm::ExecutionEngine* executionEngine;
   llvm::GCStrategy* TheGCStrategy;
 
-  JavaJITCompiler(const std::string &ModuleID, bool trusted = false);
+  JavaJITCompiler(const std::string &ModuleID);
   ~JavaJITCompiler();
   
   virtual bool isStaticCompiling() {
@@ -104,10 +104,10 @@
   virtual uintptr_t getPointerOrStub(JavaMethod& meth, int side);
   
   virtual JavaCompiler* Create(const std::string& ModuleID) {
-    return new JavaJ3LazyJITCompiler(ModuleID, false);
+    return new JavaJ3LazyJITCompiler(ModuleID);
   }
 
-  JavaJ3LazyJITCompiler(const std::string& ModuleID, bool trusted);
+  JavaJ3LazyJITCompiler(const std::string& ModuleID);
 };
 
 } // end namespace j3

Modified: vmkit/branches/precise/include/j3/JavaLLVMCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/JavaLLVMCompiler.h?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/JavaLLVMCompiler.h (original)
+++ vmkit/branches/precise/include/j3/JavaLLVMCompiler.h Sat Oct 23 13:56:31 2010
@@ -80,7 +80,7 @@
   virtual bool isStaticCompiling() = 0;
   virtual bool emitFunctionName() = 0;
   virtual void* GenerateStub(llvm::Function* F) = 0;
-  void addJavaPasses(bool trusted);
+  void addJavaPasses();
   
   llvm::DIFactory* getDebugFactory() {
     return DebugFactory;

Modified: vmkit/branches/precise/include/j3/LLVMMaterializer.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/include/j3/LLVMMaterializer.h?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/include/j3/LLVMMaterializer.h (original)
+++ vmkit/branches/precise/include/j3/LLVMMaterializer.h Sat Oct 23 13:56:31 2010
@@ -41,10 +41,10 @@
   virtual uintptr_t getPointerOrStub(JavaMethod& meth, int side);
   
   virtual JavaCompiler* Create(const std::string& ModuleID) {
-    return new JavaLLVMLazyJITCompiler(ModuleID, false);
+    return new JavaLLVMLazyJITCompiler(ModuleID);
   }
 
-  JavaLLVMLazyJITCompiler(const std::string& ModuleID, bool trusted);
+  JavaLLVMLazyJITCompiler(const std::string& ModuleID);
   
   virtual ~JavaLLVMLazyJITCompiler();
   

Modified: vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/JavaAOTCompiler.cpp Sat Oct 23 13:56:31 2010
@@ -1959,6 +1959,9 @@
   if (!M->clinits->empty()) {
     Comp = JavaJITCompiler::CreateCompiler("JIT");
     Comp->EmitFunctionName = true;
+    if (!M->useCooperativeGC()) {
+      Comp->disableCooperativeGC();
+    }
     bootstrapLoader->setCompiler(Comp);
     bootstrapLoader->analyseClasspathEnv(vm->classpath);
   } else {
@@ -1980,7 +1983,7 @@
 
     extractFiles(bytes, M, bootstrapLoader, classes);
     // Now that we know if we can trust this compiler, add the Java passes.
-    M->addJavaPasses(M->compileRT);
+    M->addJavaPasses();
 
 
       // First resolve everyone so that there can not be unknown references in
@@ -2058,7 +2061,7 @@
       }
 
     } else {
-      M->addJavaPasses(false);
+      M->addJavaPasses();
       char* realName = (char*)allocator.Allocate(size + 1);
       if (size > 6 && !strcmp(&name[size - 6], ".class")) {
         memcpy(realName, name, size - 6);

Modified: vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/JavaJITCompiler.cpp Sat Oct 23 13:56:31 2010
@@ -243,7 +243,7 @@
   return ConstantExpr::getIntToPtr(CI, valPtrType);
 }
 
-JavaJITCompiler::JavaJITCompiler(const std::string &ModuleID, bool trusted) :
+JavaJITCompiler::JavaJITCompiler(const std::string &ModuleID) :
   JavaLLVMCompiler(ModuleID), listener(this) {
 
   EmitFunctionName = false;
@@ -258,7 +258,7 @@
  
   executionEngine->RegisterJITEventListener(&listener);
 
-  addJavaPasses(trusted);
+  addJavaPasses();
 }
 
 JavaJITCompiler::~JavaJITCompiler() {
@@ -482,9 +482,8 @@
   return (meth == NULL || meth->code == NULL);
 }
 
-JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(const std::string& ModuleID,
-                                             bool trusted)
-    : JavaJITCompiler(ModuleID, trusted) {}
+JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(const std::string& ModuleID)
+    : JavaJITCompiler(ModuleID) {}
 
 
 static llvm::cl::opt<bool> LLVMLazy("llvm-lazy", 
@@ -494,7 +493,7 @@
 JavaJITCompiler* JavaJITCompiler::CreateCompiler(const std::string& ModuleID) {
   // This is called for the first compiler.
   if (LLVMLazy) {
-    return new JavaLLVMLazyJITCompiler(ModuleID, true);
+    return new JavaLLVMLazyJITCompiler(ModuleID);
   }
-  return new JavaJ3LazyJITCompiler(ModuleID, true);
+  return new JavaJ3LazyJITCompiler(ModuleID);
 }

Modified: vmkit/branches/precise/lib/J3/Compiler/JavaLLVMCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/JavaLLVMCompiler.cpp?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/JavaLLVMCompiler.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/JavaLLVMCompiler.cpp Sat Oct 23 13:56:31 2010
@@ -116,7 +116,7 @@
   llvm::FunctionPass* createLowerConstantCallsPass(JavaLLVMCompiler* I);
 }
 
-void JavaLLVMCompiler::addJavaPasses(bool trusted) {
+void JavaLLVMCompiler::addJavaPasses() {
   JavaNativeFunctionPasses = new FunctionPassManager(TheModule);
   JavaNativeFunctionPasses->add(new TargetData(TheModule));
   // Lower constant calls to lower things like getClass used
@@ -124,9 +124,7 @@
   JavaNativeFunctionPasses->add(createLowerConstantCallsPass(this));
   
   JavaFunctionPasses = new FunctionPassManager(TheModule);
-  // Add safe points in loops if we don't trust the code (trusted code doesn't
-  // do infinite loops).
-  if (cooperativeGC && !trusted)
+  if (cooperativeGC)
     JavaFunctionPasses->add(mvm::createLoopSafePointsPass());
   // Add other passes after the loop pass, because safepoints may move objects.
   // Moving objects disable many optimizations.

Modified: vmkit/branches/precise/lib/J3/Compiler/LLVMMaterializer.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/Compiler/LLVMMaterializer.cpp?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/Compiler/LLVMMaterializer.cpp (original)
+++ vmkit/branches/precise/lib/J3/Compiler/LLVMMaterializer.cpp Sat Oct 23 13:56:31 2010
@@ -27,9 +27,8 @@
 using namespace j3;
 
 
-JavaLLVMLazyJITCompiler::JavaLLVMLazyJITCompiler(const std::string& ModuleID,
-                                                 bool trusted)
-    : JavaJITCompiler(ModuleID, trusted) {
+JavaLLVMLazyJITCompiler::JavaLLVMLazyJITCompiler(const std::string& ModuleID)
+    : JavaJITCompiler(ModuleID) {
   TheMaterializer = new LLVMMaterializer(TheModule, this);
   executionEngine->DisableLazyCompilation(false);   
 }

Modified: vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp?rev=117216&r1=117215&r2=117216&view=diff
==============================================================================
--- vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/branches/precise/lib/J3/VMCore/JavaClass.cpp Sat Oct 23 13:56:31 2010
@@ -1767,6 +1767,7 @@
   for(uint16 i = 0; i < codeInfoLength; ++i) {
     if (codeInfo[i].address == ip) {
       Attribut* codeAtt = lookupAttribut(Attribut::codeAttribut);      
+      if (codeAtt == NULL) return 0;
       Reader reader(codeAtt, &(classDef->bytes));
       reader.readU2(); // max_stack
       reader.readU2(); // max_locals;





More information about the vmkit-commits mailing list