[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