[vmkit-commits] [vmkit] r96166 - in /vmkit/trunk: include/j3/JavaAOTCompiler.h include/j3/JnjvmModule.h include/j3/LLVMMaterializer.h lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/Compiler/LLVMMaterializer.cpp tools/vmjc/vmjc.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Feb 14 07:40:01 PST 2010
Author: geoffray
Date: Sun Feb 14 09:40:01 2010
New Revision: 96166
URL: http://llvm.org/viewvc/llvm-project?rev=96166&view=rev
Log:
Code refactoring. No functionality change.
Added:
vmkit/trunk/include/j3/JavaAOTCompiler.h
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/LLVMMaterializer.cpp
vmkit/trunk/tools/vmjc/vmjc.cpp
Added: vmkit/trunk/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaAOTCompiler.h?rev=96166&view=auto
==============================================================================
--- vmkit/trunk/include/j3/JavaAOTCompiler.h (added)
+++ vmkit/trunk/include/j3/JavaAOTCompiler.h Sun Feb 14 09:40:01 2010
@@ -0,0 +1,186 @@
+//===------ JavaAOTCompiler.h - The J3 ahead of time compiler -------------===//
+//
+// The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef J3_AOT_COMPILER_H
+#define J3_AOT_COMPILER_H
+
+#include "j3/JnjvmModule.h"
+
+namespace j3 {
+
+class JavaAOTCompiler : public JavaLLVMCompiler {
+
+public:
+ JavaAOTCompiler(const std::string &ModuleID);
+
+ virtual bool isStaticCompiling() {
+ return true;
+ }
+
+ virtual bool emitFunctionName() {
+ return true;
+ }
+
+ virtual JavaCompiler* Create(const std::string& ModuleID) {
+ return new JavaAOTCompiler(ModuleID);
+ }
+
+ virtual void* materializeFunction(JavaMethod* meth) {
+ fprintf(stderr, "Can not materiale a function in AOT mode.");
+ abort();
+ }
+
+ virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
+ bool stat, llvm::BasicBlock* insert);
+
+ virtual void makeVT(Class* cl);
+ virtual void makeIMT(Class* cl);
+
+ llvm::Constant* HandleMagic(JavaObject* obj, CommonClass* cl);
+ virtual llvm::Constant* getFinalObject(JavaObject* obj, CommonClass* cl);
+ virtual JavaObject* getFinalObject(llvm::Value* C);
+ virtual llvm::Constant* getNativeClass(CommonClass* cl);
+ virtual llvm::Constant* getJavaClass(CommonClass* cl);
+ virtual llvm::Constant* getJavaClassPtr(CommonClass* cl);
+ virtual llvm::Constant* getStaticInstance(Class* cl);
+ virtual llvm::Constant* getVirtualTable(JavaVirtualTable*);
+ virtual llvm::Constant* getMethodInClass(JavaMethod* meth);
+
+ virtual llvm::Constant* getString(JavaString* str);
+ virtual llvm::Constant* getStringPtr(JavaString** str);
+ virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp);
+ virtual llvm::Constant* getNativeFunction(JavaMethod* meth, void* natPtr);
+
+ virtual void setMethod(JavaMethod* meth, void* ptr, const char* name);
+
+
+#ifdef SERVICE
+ virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where);
+#endif
+
+ virtual ~JavaAOTCompiler() {}
+
+ virtual void* loadMethod(void* handle, const char* symbol);
+
+ virtual CommonClass* getUniqueBaseClass(CommonClass* cl);
+
+private:
+
+ //--------------- Static compiler specific functions -----------------------//
+ llvm::Constant* CreateConstantFromVT(JavaVirtualTable* VT);
+ llvm::Constant* CreateConstantFromUTF8(const UTF8* val);
+ llvm::Constant* CreateConstantFromCommonClass(CommonClass* cl);
+ llvm::Constant* CreateConstantFromClass(Class* cl);
+ llvm::Constant* CreateConstantFromClassPrimitive(ClassPrimitive* cl);
+ llvm::Constant* CreateConstantFromClassArray(ClassArray* cl);
+ llvm::Constant* CreateConstantFromAttribut(Attribut& attribut);
+ llvm::Constant* CreateConstantFromJavaField(JavaField& field);
+ llvm::Constant* CreateConstantFromJavaMethod(JavaMethod& method);
+ llvm::Constant* CreateConstantFromStaticInstance(Class* cl);
+ llvm::Constant* CreateConstantFromJavaString(JavaString* str);
+ llvm::Constant* CreateConstantFromJavaClass(CommonClass* cl);
+ llvm::Constant* CreateConstantForBaseObject(CommonClass* cl);
+ llvm::Constant* CreateConstantFromJavaObject(JavaObject* obj);
+ llvm::Constant* getUTF8(const UTF8* val);
+
+ template<typename T>
+ llvm::Constant* CreateConstantFromIntArray(const T* val, const llvm::Type* Ty);
+
+ template<typename T>
+ llvm::Constant* CreateConstantFromFPArray(const T* val, const llvm::Type* Ty);
+
+ llvm::Constant* CreateConstantFromObjectArray(const ArrayObject* val);
+
+ std::map<const CommonClass*, llvm::Constant*> nativeClasses;
+ std::map<const ClassArray*, llvm::GlobalVariable*> arrayClasses;
+ std::map<const CommonClass*, llvm::Constant*> javaClasses;
+ std::map<const JavaVirtualTable*, llvm::Constant*> virtualTables;
+ std::map<const Class*, llvm::Constant*> staticInstances;
+ std::map<const JavaConstantPool*, llvm::Constant*> constantPools;
+ std::map<const JavaString*, llvm::Constant*> strings;
+ std::map<const JavaMethod*, llvm::Constant*> nativeFunctions;
+ std::map<const UTF8*, llvm::Constant*> utf8s;
+ std::map<const Class*, llvm::Constant*> virtualMethods;
+ std::map<const JavaObject*, llvm::Constant*> finalObjects;
+ std::map<const llvm::Constant*, JavaObject*> reverseFinalObjects;
+
+ typedef std::map<const JavaObject*, llvm::Constant*>::iterator
+ final_object_iterator;
+
+ typedef std::map<const llvm::Constant*, JavaObject*>::iterator
+ reverse_final_object_iterator;
+
+ typedef std::map<const Class*, llvm::Constant*>::iterator
+ method_iterator;
+
+ typedef std::map<const CommonClass*, llvm::Constant*>::iterator
+ native_class_iterator;
+
+ typedef std::map<const ClassArray*, llvm::GlobalVariable*>::iterator
+ array_class_iterator;
+
+ typedef std::map<const CommonClass*, llvm::Constant*>::iterator
+ java_class_iterator;
+
+ typedef std::map<const JavaVirtualTable*, llvm::Constant*>::iterator
+ virtual_table_iterator;
+
+ typedef std::map<const Class*, llvm::Constant*>::iterator
+ static_instance_iterator;
+
+ typedef std::map<const JavaConstantPool*, llvm::Constant*>::iterator
+ constant_pool_iterator;
+
+ typedef std::map<const JavaString*, llvm::Constant*>::iterator
+ string_iterator;
+
+ typedef std::map<const JavaMethod*, llvm::Constant*>::iterator
+ native_function_iterator;
+
+ typedef std::map<const UTF8*, llvm::Constant*>::iterator
+ utf8_iterator;
+
+#ifdef SERVICE
+ virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where);
+ std::map<const Jnjvm*, llvm::GlobalVariable*> isolates;
+ typedef std::map<const Jnjvm*, llvm::GlobalVariable*>::iterator
+ isolate_iterator;
+#endif
+
+ bool isCompiling(const CommonClass* cl) const;
+
+public:
+ llvm::Function* StaticInitializer;
+ llvm::Function* ObjectPrinter;
+ llvm::Function* Callback;
+
+ bool generateStubs;
+ bool assumeCompiled;
+ bool compileRT;
+
+ std::vector<std::string>* clinits;
+
+
+ void CreateStaticInitializer();
+
+ static void setNoInline(Class* cl);
+
+ void printStats();
+
+ void compileFile(Jnjvm* vm, const char* name);
+ void compileClass(Class* cl);
+ void generateMain(const char* name, bool jit);
+
+private:
+ void compileAllStubs(Signdef* sign);
+};
+
+} // end namespace j3
+
+#endif
Modified: vmkit/trunk/include/j3/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JnjvmModule.h?rev=96166&r1=96165&r2=96166&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JnjvmModule.h (original)
+++ vmkit/trunk/include/j3/JnjvmModule.h Sun Feb 14 09:40:01 2010
@@ -526,16 +526,6 @@
};
-struct CallbackInfo {
- Class* cl;
- uint16 index;
- bool stat;
-
- CallbackInfo(Class* c, uint32 i, bool s) :
- cl(c), index(i), stat(s) {}
-
-};
-
class JavaJITMethodInfo : public mvm::JITMethodInfo {
protected:
JavaMethod* meth;
@@ -557,11 +547,6 @@
class JavaJITCompiler : public JavaLLVMCompiler {
public:
- std::map<llvm::Function*, CallbackInfo> callbacks;
-
- typedef std::map<llvm::Function*, CallbackInfo>::iterator callback_iterator;
-
-
bool EmitFunctionName;
JavaJITCompiler(const std::string &ModuleID);
@@ -633,190 +618,6 @@
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 {
-
-public:
- JavaAOTCompiler(const std::string &ModuleID);
-
- virtual bool isStaticCompiling() {
- return true;
- }
-
- virtual bool emitFunctionName() {
- return true;
- }
-
- virtual JavaCompiler* Create(const std::string& ModuleID) {
- return new JavaAOTCompiler(ModuleID);
- }
-
- virtual void* materializeFunction(JavaMethod* meth) {
- fprintf(stderr, "Can not materiale a function in AOT mode.");
- abort();
- }
-
- virtual llvm::Value* addCallback(Class* cl, uint16 index, Signdef* sign,
- bool stat, llvm::BasicBlock* insert);
-
- virtual void makeVT(Class* cl);
- virtual void makeIMT(Class* cl);
-
- llvm::Constant* HandleMagic(JavaObject* obj, CommonClass* cl);
- virtual llvm::Constant* getFinalObject(JavaObject* obj, CommonClass* cl);
- virtual JavaObject* getFinalObject(llvm::Value* C);
- virtual llvm::Constant* getNativeClass(CommonClass* cl);
- virtual llvm::Constant* getJavaClass(CommonClass* cl);
- virtual llvm::Constant* getJavaClassPtr(CommonClass* cl);
- virtual llvm::Constant* getStaticInstance(Class* cl);
- virtual llvm::Constant* getVirtualTable(JavaVirtualTable*);
- virtual llvm::Constant* getMethodInClass(JavaMethod* meth);
-
- virtual llvm::Constant* getString(JavaString* str);
- virtual llvm::Constant* getStringPtr(JavaString** str);
- virtual llvm::Constant* getConstantPool(JavaConstantPool* ctp);
- virtual llvm::Constant* getNativeFunction(JavaMethod* meth, void* natPtr);
-
- virtual void setMethod(JavaMethod* meth, void* ptr, const char* name);
-
-
-#ifdef SERVICE
- virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where);
-#endif
-
- virtual ~JavaAOTCompiler() {}
-
- virtual void* loadMethod(void* handle, const char* symbol);
-
- virtual CommonClass* getUniqueBaseClass(CommonClass* cl);
-
-private:
-
- //--------------- Static compiler specific functions -----------------------//
- llvm::Constant* CreateConstantFromVT(JavaVirtualTable* VT);
- llvm::Constant* CreateConstantFromUTF8(const UTF8* val);
- llvm::Constant* CreateConstantFromCommonClass(CommonClass* cl);
- llvm::Constant* CreateConstantFromClass(Class* cl);
- llvm::Constant* CreateConstantFromClassPrimitive(ClassPrimitive* cl);
- llvm::Constant* CreateConstantFromClassArray(ClassArray* cl);
- llvm::Constant* CreateConstantFromAttribut(Attribut& attribut);
- llvm::Constant* CreateConstantFromJavaField(JavaField& field);
- llvm::Constant* CreateConstantFromJavaMethod(JavaMethod& method);
- llvm::Constant* CreateConstantFromStaticInstance(Class* cl);
- llvm::Constant* CreateConstantFromJavaString(JavaString* str);
- llvm::Constant* CreateConstantFromJavaClass(CommonClass* cl);
- llvm::Constant* CreateConstantForBaseObject(CommonClass* cl);
- llvm::Constant* CreateConstantFromJavaObject(JavaObject* obj);
- llvm::Constant* getUTF8(const UTF8* val);
-
- template<typename T>
- llvm::Constant* CreateConstantFromIntArray(const T* val, const llvm::Type* Ty);
-
- template<typename T>
- llvm::Constant* CreateConstantFromFPArray(const T* val, const llvm::Type* Ty);
-
- llvm::Constant* CreateConstantFromObjectArray(const ArrayObject* val);
-
- std::map<const CommonClass*, llvm::Constant*> nativeClasses;
- std::map<const ClassArray*, llvm::GlobalVariable*> arrayClasses;
- std::map<const CommonClass*, llvm::Constant*> javaClasses;
- std::map<const JavaVirtualTable*, llvm::Constant*> virtualTables;
- std::map<const Class*, llvm::Constant*> staticInstances;
- std::map<const JavaConstantPool*, llvm::Constant*> constantPools;
- std::map<const JavaString*, llvm::Constant*> strings;
- std::map<const JavaMethod*, llvm::Constant*> nativeFunctions;
- std::map<const UTF8*, llvm::Constant*> utf8s;
- std::map<const Class*, llvm::Constant*> virtualMethods;
- std::map<const JavaObject*, llvm::Constant*> finalObjects;
- std::map<const llvm::Constant*, JavaObject*> reverseFinalObjects;
-
- typedef std::map<const JavaObject*, llvm::Constant*>::iterator
- final_object_iterator;
-
- typedef std::map<const llvm::Constant*, JavaObject*>::iterator
- reverse_final_object_iterator;
-
- typedef std::map<const Class*, llvm::Constant*>::iterator
- method_iterator;
-
- typedef std::map<const CommonClass*, llvm::Constant*>::iterator
- native_class_iterator;
-
- typedef std::map<const ClassArray*, llvm::GlobalVariable*>::iterator
- array_class_iterator;
-
- typedef std::map<const CommonClass*, llvm::Constant*>::iterator
- java_class_iterator;
-
- typedef std::map<const JavaVirtualTable*, llvm::Constant*>::iterator
- virtual_table_iterator;
-
- typedef std::map<const Class*, llvm::Constant*>::iterator
- static_instance_iterator;
-
- typedef std::map<const JavaConstantPool*, llvm::Constant*>::iterator
- constant_pool_iterator;
-
- typedef std::map<const JavaString*, llvm::Constant*>::iterator
- string_iterator;
-
- typedef std::map<const JavaMethod*, llvm::Constant*>::iterator
- native_function_iterator;
-
- typedef std::map<const UTF8*, llvm::Constant*>::iterator
- utf8_iterator;
-
-#ifdef SERVICE
- virtual llvm::Value* getIsolate(Jnjvm* vm, llvm::Value* Where);
- std::map<const Jnjvm*, llvm::GlobalVariable*> isolates;
- typedef std::map<const Jnjvm*, llvm::GlobalVariable*>::iterator
- isolate_iterator;
-#endif
-
- bool isCompiling(const CommonClass* cl) const;
-
-public:
- llvm::Function* StaticInitializer;
- llvm::Function* ObjectPrinter;
- llvm::Function* Callback;
-
- bool generateStubs;
- bool assumeCompiled;
- bool compileRT;
-
- std::vector<std::string>* clinits;
-
-
- void CreateStaticInitializer();
-
- static void setNoInline(Class* cl);
-
- void printStats();
-
- void compileFile(Jnjvm* vm, const char* name);
- void compileClass(Class* cl);
- void generateMain(const char* name, bool jit);
-
-private:
- void compileAllStubs(Signdef* sign);
-};
-
}
#endif
Modified: vmkit/trunk/include/j3/LLVMMaterializer.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/LLVMMaterializer.h?rev=96166&r1=96165&r2=96166&view=diff
==============================================================================
--- vmkit/trunk/include/j3/LLVMMaterializer.h (original)
+++ vmkit/trunk/include/j3/LLVMMaterializer.h Sun Feb 14 09:40:01 2010
@@ -14,7 +14,40 @@
namespace j3 {
-class JavaLLVMLazyJITCompiler;
+class LLVMMaterializer;
+
+struct CallbackInfo {
+ Class* cl;
+ uint16 index;
+ bool stat;
+
+ CallbackInfo(Class* c, uint32 i, bool s) :
+ cl(c), index(i), stat(s) {}
+
+};
+
+class JavaLLVMLazyJITCompiler : public JavaJITCompiler {
+private:
+ std::map<llvm::Function*, CallbackInfo> callbacks;
+ typedef std::map<llvm::Function*, CallbackInfo>::iterator callback_iterator;
+
+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();
+
+ friend class LLVMMaterializer;
+};
class LLVMMaterializer : public llvm::GVMaterializer {
public:
Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=96166&r1=96165&r2=96166&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Feb 14 09:40:01 2010
@@ -18,6 +18,7 @@
#include "mvm/Threads/Thread.h"
#include "j3/JnjvmModule.h"
+#include "j3/JavaAOTCompiler.h"
#include "JavaArray.h"
#include "JavaConstantPool.h"
Modified: vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp?rev=96166&r1=96165&r2=96166&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/LLVMMaterializer.cpp Sun Feb 14 09:40:01 2010
@@ -109,7 +109,7 @@
if (!meth) {
// It's a callback
- JavaJITCompiler::callback_iterator I = Comp->callbacks.find(F);
+ JavaLLVMLazyJITCompiler::callback_iterator I = Comp->callbacks.find(F);
assert(I != Comp->callbacks.end() && "No callbacks found");
meth = staticLookup(I->second);
}
Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=96166&r1=96165&r2=96166&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Sun Feb 14 09:40:01 2010
@@ -42,6 +42,7 @@
#include "mvm/VirtualMachine.h"
#include "mvm/Threads/Thread.h"
+#include "j3/JavaAOTCompiler.h"
#include "j3/JnjvmModule.h"
#include "../../lib/J3/VMCore/JnjvmClassLoader.h"
More information about the vmkit-commits
mailing list