[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