[vmkit-commits] [vmkit] r96163 - in /vmkit/trunk: include/j3/JnjvmModule.h include/j3/LLVMMaterializer.h lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/Compiler/JavaJITCompiler.cpp lib/J3/Compiler/JnjvmModule.cpp lib/J3/Compiler/LLVMMaterializer.cpp lib/Mvm/Compiler/JIT.cpp tools/j3/Main.cpp tools/vmkit/Launcher.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Feb 14 02:16:39 PST 2010
Author: geoffray
Date: Sun Feb 14 04:16:38 2010
New Revision: 96163
URL: http://llvm.org/viewvc/llvm-project?rev=96163&view=rev
Log:
Use J3 lazy compilation mechanism by default instead of LLVM's.
Modified:
vmkit/trunk/include/j3/JnjvmModule.h
vmkit/trunk/include/j3/LLVMMaterializer.h
vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp
vmkit/trunk/lib/J3/Compiler/JnjvmModule.cpp
vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp
vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
vmkit/trunk/tools/j3/Main.cpp
vmkit/trunk/tools/vmkit/Launcher.cpp
Modified: vmkit/trunk/include/j3/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JnjvmModule.h?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JnjvmModule.h (original)
+++ vmkit/trunk/include/j3/JnjvmModule.h Sun Feb 14 04:16:38 2010
@@ -397,7 +397,6 @@
protected:
llvm::Module* TheModule;
- llvm::GVMaterializer* TheModuleProvider;
JnjvmModule JavaIntrinsics;
void addJavaPasses();
@@ -578,10 +577,6 @@
virtual void makeVT(Class* cl);
virtual void makeIMT(Class* cl);
- virtual JavaCompiler* Create(const std::string& ModuleID) {
- return new JavaJITCompiler(ModuleID);
- }
-
virtual void* materializeFunction(JavaMethod* meth);
virtual llvm::Constant* getFinalObject(JavaObject* obj, CommonClass* cl);
@@ -604,12 +599,10 @@
#ifdef SERVICE
virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where);
#endif
-
- virtual ~JavaJITCompiler() {}
-
+
virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
- bool stat, llvm::BasicBlock* insert);
- virtual uintptr_t getPointerOrStub(JavaMethod& meth, int type);
+ bool stat, llvm::BasicBlock* insert) = 0;
+ virtual uintptr_t getPointerOrStub(JavaMethod& meth, int type) = 0;
#ifdef WITH_LLVM_GCC
virtual mvm::StackScanner* createStackScanner() {
@@ -621,6 +614,8 @@
#endif
virtual void* loadMethod(void* handle, const char* symbol);
+
+ static JavaJITCompiler* CreateCompiler(const std::string& ModuleID);
};
@@ -635,8 +630,24 @@
return new JavaJ3LazyJITCompiler(ModuleID);
}
- JavaJ3LazyJITCompiler(const std::string& ModuleID)
- : JavaJITCompiler(ModuleID) {}
+ JavaJ3LazyJITCompiler(const std::string& ModuleID);
+};
+
+class JavaLLVMLazyJITCompiler : public JavaJITCompiler {
+public:
+ llvm::GVMaterializer* TheMaterializer;
+
+ virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
+ bool stat, llvm::BasicBlock* insert);
+ virtual uintptr_t getPointerOrStub(JavaMethod& meth, int side);
+
+ virtual JavaCompiler* Create(const std::string& ModuleID) {
+ return new JavaLLVMLazyJITCompiler(ModuleID);
+ }
+
+ JavaLLVMLazyJITCompiler(const std::string& ModuleID);
+
+ virtual ~JavaLLVMLazyJITCompiler();
};
class JavaAOTCompiler : public JavaLLVMCompiler {
Modified: vmkit/trunk/include/j3/LLVMMaterializer.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/LLVMMaterializer.h?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/include/j3/LLVMMaterializer.h (original)
+++ vmkit/trunk/include/j3/LLVMMaterializer.h Sun Feb 14 04:16:38 2010
@@ -7,22 +7,22 @@
//
//===----------------------------------------------------------------------===//
-#ifndef JNJVM_MODULE_PROVIDER_H
-#define JNJVM_MODULE_PROVIDER_H
+#ifndef J3_LLVM_MATERIALIZER_H
+#define J3_LLVM_MATERIALIZER_H
#include <llvm/GVMaterializer.h>
namespace j3 {
-class JavaJITCompiler;
+class JavaLLVMLazyJITCompiler;
class LLVMMaterializer : public llvm::GVMaterializer {
public:
- JavaJITCompiler* Comp;
+ JavaLLVMLazyJITCompiler* Comp;
llvm::Module* TheModule;
- LLVMMaterializer(llvm::Module* M, JavaJITCompiler* C);
+ LLVMMaterializer(llvm::Module* M, JavaLLVMLazyJITCompiler* C);
virtual bool Materialize(llvm::GlobalValue *GV, std::string *ErrInfo = 0);
virtual bool isMaterializable(const llvm::GlobalValue*) const;
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Feb 14 04:16:38 2010
@@ -1926,7 +1926,7 @@
try {
if (!M->clinits->empty()) {
- Comp = new JavaJITCompiler("JIT");
+ Comp = JavaJITCompiler::CreateCompiler("JIT");
Comp->EmitFunctionName = true;
bootstrapLoader->setCompiler(Comp);
bootstrapLoader->analyseClasspathEnv(vm->classpath);
Modified: vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaJITCompiler.cpp Sun Feb 14 04:16:38 2010
@@ -18,6 +18,7 @@
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/ExecutionEngine/ExecutionEngine.h"
#include "llvm/ExecutionEngine/JITEventListener.h"
+#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
@@ -214,7 +215,6 @@
#else
EmitFunctionName = false;
#endif
- TheModuleProvider = new LLVMMaterializer(TheModule, this);
JnjvmModule::protectEngine.lock();
JnjvmModule::executionEngine->addModule(TheModule);
@@ -398,7 +398,7 @@
newArgv[0] = newArgv[1];
newArgv[1] = mainClass;
- JavaJITCompiler* Comp = new JavaJITCompiler("JITModule");
+ JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
mvm::MvmModule::AddStandardCompilePasses();
JnjvmClassLoader* JCL = mvm::VirtualMachine::initialiseJVM(Comp);
mvm::VirtualMachine* vm = mvm::VirtualMachine::createJVM(JCL);
@@ -412,15 +412,15 @@
void* JavaJITCompiler::loadMethod(void* handle, const char* symbol) {
Function* F = mvm::MvmModule::globalModule->getFunction(symbol);
if (F) {
- void* res = mvm::MvmModule::executionEngine->getPointerToFunctionOrStub(F);
+ void* res = mvm::MvmModule::executionEngine->getPointerToFunction(F);
return res;
}
return JavaCompiler::loadMethod(handle, symbol);
}
-uintptr_t JavaJITCompiler::getPointerOrStub(JavaMethod& meth,
- int side) {
+uintptr_t JavaLLVMLazyJITCompiler::getPointerOrStub(JavaMethod& meth,
+ int side) {
ExecutionEngine* EE = mvm::MvmModule::executionEngine;
LLVMMethodInfo* LMI = getMethodInfo(&meth);
Function* func = LMI->getMethod();
@@ -458,3 +458,27 @@
*needsInit = true;
return (meth == NULL || meth->code == NULL);
}
+
+JavaJ3LazyJITCompiler::JavaJ3LazyJITCompiler(const std::string& ModuleID)
+ : JavaJITCompiler(ModuleID) {}
+
+JavaLLVMLazyJITCompiler::JavaLLVMLazyJITCompiler(const std::string& ModuleID)
+ : JavaJITCompiler(ModuleID) {
+ TheMaterializer = new LLVMMaterializer(TheModule, this);
+}
+
+JavaLLVMLazyJITCompiler::~JavaLLVMLazyJITCompiler() {
+ delete TheMaterializer;
+}
+
+static llvm::cl::opt<bool> LLVMLazy("llvm-lazy",
+ cl::desc("Use LLVM lazy stubs"),
+ cl::init(false));
+
+JavaJITCompiler* JavaJITCompiler::CreateCompiler(const std::string& ModuleID) {
+ if (LLVMLazy) {
+ JnjvmModule::executionEngine->DisableLazyCompilation(false);
+ return new JavaLLVMLazyJITCompiler(ModuleID);
+ }
+ return new JavaJ3LazyJITCompiler(ModuleID);
+}
Modified: vmkit/trunk/lib/J3/Compiler/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JnjvmModule.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JnjvmModule.cpp Sun Feb 14 04:16:38 2010
@@ -398,7 +398,6 @@
JavaLLVMCompiler::~JavaLLVMCompiler() {
delete JavaFunctionPasses;
delete JavaNativeFunctionPasses;
- delete TheModuleProvider;
}
namespace mvm {
Modified: vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp Sun Feb 14 04:16:38 2010
@@ -48,9 +48,9 @@
}
-Value* JavaJITCompiler::addCallback(Class* cl, uint16 index,
- Signdef* sign, bool stat,
- BasicBlock* insert) {
+Value* JavaLLVMLazyJITCompiler::addCallback(Class* cl, uint16 index,
+ Signdef* sign, bool stat,
+ BasicBlock* insert) {
Function* F = 0;
LLVMSignatureInfo* LSI = getSignatureInfo(sign);
@@ -147,7 +147,8 @@
}
-LLVMMaterializer::LLVMMaterializer(llvm::Module* m, JavaJITCompiler* C) {
+LLVMMaterializer::LLVMMaterializer(
+ llvm::Module* m, JavaLLVMLazyJITCompiler* C) {
Comp = C;
TheModule = m;
m->setMaterializer(this);
Modified: vmkit/trunk/lib/Mvm/Compiler/JIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Compiler/JIT.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Compiler/JIT.cpp (original)
+++ vmkit/trunk/lib/Mvm/Compiler/JIT.cpp Sun Feb 14 04:16:38 2010
@@ -133,7 +133,6 @@
Allocator = new BumpPtrAllocator();
executionEngine->RegisterJITEventListener(&JITListener);
- executionEngine->DisableLazyCompilation(false);
std::string str =
executionEngine->getTargetData()->getStringRepresentation();
globalModule->setDataLayout(str);
Modified: vmkit/trunk/tools/j3/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/j3/Main.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/tools/j3/Main.cpp (original)
+++ vmkit/trunk/tools/j3/Main.cpp Sun Feb 14 04:16:38 2010
@@ -28,7 +28,7 @@
MvmModule::initialise();
Collector::initialise();
- JavaJITCompiler* Comp = new JavaJITCompiler("JITModule");
+ JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
mvm::MvmModule::AddStandardCompilePasses();
JnjvmClassLoader* JCL = VirtualMachine::initialiseJVM(Comp);
VirtualMachine* vm = VirtualMachine::createJVM(JCL);
Modified: vmkit/trunk/tools/vmkit/Launcher.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmkit/Launcher.cpp?rev=96163&r1=96162&r2=96163&view=diff
==============================================================================
--- vmkit/trunk/tools/vmkit/Launcher.cpp (original)
+++ vmkit/trunk/tools/vmkit/Launcher.cpp Sun Feb 14 04:16:38 2010
@@ -56,7 +56,6 @@
"potentially sacrificing code quality"),
cl::init(false));
-
static cl::opt<bool>
DisableOptimizations("disable-opt",
cl::desc("Do not run any optimization passes"));
@@ -140,7 +139,7 @@
if (VMToRun == RunJava) {
#if WITH_J3
- JavaJITCompiler* Comp = new JavaJITCompiler("JITModule");
+ JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
JnjvmClassLoader* JCL = mvm::VirtualMachine::initialiseJVM(Comp);
addCommandLinePass(argv);
mvm::VirtualMachine* vm = mvm::VirtualMachine::createJVM(JCL);
@@ -157,7 +156,7 @@
} else {
mvm::CommandLine MyCl;
#if WITH_J3
- JavaJITCompiler* Comp = new JavaJITCompiler("JITModule");
+ JavaJITCompiler* Comp = JavaJITCompiler::CreateCompiler("JITModule");
JnjvmClassLoader* JCL = mvm::VirtualMachine::initialiseJVM(Comp);
addCommandLinePass(argv);
MyCl.vmlets["java"] = (create_vm_t)(mvm::VirtualMachine::createJVM);
More information about the vmkit-commits
mailing list