[vmkit-commits] [vmkit] r70141 - in /vmkit/trunk: include/mvm/GC/GC.h include/mvm/Object.h include/mvm/PrintBuffer.h lib/JnJVM/Compiler/JavaJITCompiler.cpp lib/JnJVM/VMCore/JavaInitialise.cpp lib/JnJVM/VMCore/Jnjvm.cpp lib/Mvm/Runtime/Object.cpp tools/jnjvm/Main.cpp tools/n3-mono/Main.cpp tools/n3-pnetlib/Main.cpp tools/vmjc/vmjc.cpp tools/vmkit/Launcher.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Apr 26 11:19:53 PDT 2009


Author: geoffray
Date: Sun Apr 26 13:19:52 2009
New Revision: 70141

URL: http://llvm.org/viewvc/llvm-project?rev=70141&view=rev
Log:
Create virtual tables statically and remove mvm::Object::initialize from the
boot sequence.


Modified:
    vmkit/trunk/include/mvm/GC/GC.h
    vmkit/trunk/include/mvm/Object.h
    vmkit/trunk/include/mvm/PrintBuffer.h
    vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
    vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
    vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
    vmkit/trunk/lib/Mvm/Runtime/Object.cpp
    vmkit/trunk/tools/jnjvm/Main.cpp
    vmkit/trunk/tools/n3-mono/Main.cpp
    vmkit/trunk/tools/n3-pnetlib/Main.cpp
    vmkit/trunk/tools/vmjc/vmjc.cpp
    vmkit/trunk/tools/vmkit/Launcher.cpp

Modified: vmkit/trunk/include/mvm/GC/GC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/GC/GC.h?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/include/mvm/GC/GC.h (original)
+++ vmkit/trunk/include/mvm/GC/GC.h Sun Apr 26 13:19:52 2009
@@ -23,6 +23,16 @@
   uintptr_t* getFunctions() {
     return &destructor;
   }
+
+  VirtualTable(uintptr_t d, uintptr_t o, uintptr_t t) {
+    destructor = d;
+    operatorDelete = o;
+    tracer = t;
+  }
+
+  VirtualTable() {}
+
+  static void emptyTracer(void*) {}
 };
 
 class gcRoot {

Modified: vmkit/trunk/include/mvm/Object.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/Object.h?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/include/mvm/Object.h (original)
+++ vmkit/trunk/include/mvm/Object.h Sun Apr 26 13:19:52 2009
@@ -50,12 +50,6 @@
   ///
   virtual intptr_t  hashCode(){ return (intptr_t)this;}
   
-  /// initialise - All virtual machines must call Object::initialise to
-  /// property initialise the PrintBuffer and NativeString classes. These
-  /// classes are mainly used for debugging but also for object hashing.
-  ///
-  static void initialise();
-
 };
 
 } // end namespace mvm

Modified: vmkit/trunk/include/mvm/PrintBuffer.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/PrintBuffer.h?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/include/mvm/PrintBuffer.h (original)
+++ vmkit/trunk/include/mvm/PrintBuffer.h Sun Apr 26 13:19:52 2009
@@ -10,8 +10,8 @@
 #ifndef MVM_PRINTBUFFER_H
 #define MVM_PRINTBUFFER_H
 
-#include <stdio.h> // sprintf
-#include <string.h> // memcpy
+#include <cstdio> // sprintf
+#include <cstring> // memcpy
 
 #include "types.h"
 #include "mvm/Object.h"
@@ -22,12 +22,12 @@
 /// NativeString - This class is the equivalent of a char*, but allocated
 /// by the GC, hence has a virtual table.
 ///
-class NativeString : public Object {
+class NativeString : public gc {
 public:
   
   /// VT - The virtual table of this class.
   ///
-  static VirtualTable* VT;
+  static VirtualTable VT;
 
   /// cString - Returns the C equivalent of the NativeString.
   ///
@@ -44,7 +44,7 @@
   /// alloc - Allocates a NativeString of size len.
   ///
   static inline NativeString *alloc(size_t len) {
-    return (NativeString *)gc::operator new(len + sizeof(VirtualTable*), VT);
+    return (NativeString *)gc::operator new(len + sizeof(VirtualTable*), &VT);
   }
 
   /// realloc - Reallocate a native string of size len.
@@ -69,7 +69,7 @@
 
 /// PrintBuffer - This class is a buffered string.
 ///
-class PrintBuffer : public Object {
+class PrintBuffer : public gc {
 private:
  
   /// _contents - The buffer.
@@ -90,7 +90,7 @@
   
   /// VT - The virtual table of this class.
   ///
-  static VirtualTable* VT;
+  static VirtualTable VT;
   
   
   /// contents - Returns the buffer.
@@ -179,7 +179,7 @@
   /// alloc - Allocates a default PrintBuffer.
   ///
   static PrintBuffer *alloc(void) {
-    PrintBuffer* pbf = gc_new(PrintBuffer)();
+    PrintBuffer* pbf = new(&VT) PrintBuffer();
     pbf->capacity= 32;
     pbf->writePosition= 0;
     pbf->setContents(NativeString::alloc(pbf->capacity));
@@ -188,7 +188,9 @@
 
   /// tracer - Traces this PrintBuffer.
   ///
-  virtual void TRACER;
+  static void STATIC_TRACER(PrintBuffer) {
+    obj->contents()->MARK_AND_TRACE;
+  }
 };
 
 } // end namespace mvm

Modified: vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaJITCompiler.cpp Sun Apr 26 13:19:52 2009
@@ -243,7 +243,6 @@
   llvm::llvm_shutdown_obj X;  
    
   mvm::MvmModule::initialise();
-  mvm::Object::initialise();
   Collector::initialise(0);
  
   char** newArgv = new char*[argc + 1];

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp Sun Apr 26 13:19:52 2009
@@ -32,6 +32,9 @@
   INIT(LockObj);
   INIT(VMClassLoader);
 
+  LockObj::VT->destructor = 0;
+  LockObj::VT->operatorDelete = 0;
+  VMClassLoader::VT->operatorDelete = VMClassLoader::VT->destructor;
 #ifdef ISOLATE_SHARING
   INIT(JnjvmSharedLoader);
   INIT(SharedClassByteMap);

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Sun Apr 26 13:19:52 2009
@@ -1143,7 +1143,6 @@
 
 // Helper function to run Jnjvm without JIT.
 extern "C" int StartJnjvmWithoutJIT(int argc, char** argv, char* mainClass) {
-  mvm::Object::initialise();
   Collector::initialise(0);
   
   char** newArgv = new char*[argc + 1];

Modified: vmkit/trunk/lib/Mvm/Runtime/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/Object.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/Object.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/Object.cpp Sun Apr 26 13:19:52 2009
@@ -20,8 +20,8 @@
 using namespace mvm;
 
 
-VirtualTable *NativeString::VT = 0;
-VirtualTable *PrintBuffer::VT = 0;
+VirtualTable NativeString::VT(0, 0, (uintptr_t)VirtualTable::emptyTracer);
+VirtualTable PrintBuffer::VT(0, 0, (uintptr_t)PrintBuffer::staticTracer);
 
 extern "C" void printFloat(float f) {
   fprintf(stderr, "%f\n", f);
@@ -44,24 +44,6 @@
 }
 
 
-void Object::initialise() {
-# define INIT(X) { \
-  X fake; \
-  X::VT = ((VirtualTable**)(void*)(&fake))[0]; \
-  X::VT->operatorDelete = 0; \
-  X::VT->destructor = 0; }
-  
-  INIT(NativeString);
-  INIT(PrintBuffer);
-  
-#undef INIT
-}
-
-void PrintBuffer::TRACER {
-  this->contents()->MARK_AND_TRACE;
-}
-
-
 PrintBuffer *PrintBuffer::writeObj(const Object *obj) {
   Object *beg = (Object*)Collector::begOf(obj);
   

Modified: vmkit/trunk/tools/jnjvm/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/jnjvm/Main.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/tools/jnjvm/Main.cpp (original)
+++ vmkit/trunk/tools/jnjvm/Main.cpp Sun Apr 26 13:19:52 2009
@@ -27,7 +27,6 @@
   llvm::llvm_shutdown_obj X;  
     
   MvmModule::initialise();
-  Object::initialise();
   Collector::initialise(0);
  
   JavaJITCompiler* Comp = new JavaJITCompiler("JITModule");

Modified: vmkit/trunk/tools/n3-mono/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/n3-mono/Main.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/tools/n3-mono/Main.cpp (original)
+++ vmkit/trunk/tools/n3-mono/Main.cpp Sun Apr 26 13:19:52 2009
@@ -21,7 +21,6 @@
   llvm::llvm_shutdown_obj X;  
     
   MvmModule::initialise();
-  Object::initialise();
   Collector::initialise(0);
 
   VirtualMachine::initialiseCLIVM();

Modified: vmkit/trunk/tools/n3-pnetlib/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/n3-pnetlib/Main.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/tools/n3-pnetlib/Main.cpp (original)
+++ vmkit/trunk/tools/n3-pnetlib/Main.cpp Sun Apr 26 13:19:52 2009
@@ -21,7 +21,6 @@
   llvm::llvm_shutdown_obj X;  
     
   MvmModule::initialise();
-  Object::initialise();
   Collector::initialise(0);
 
   VirtualMachine::initialiseCLIVM();

Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Sun Apr 26 13:19:52 2009
@@ -213,7 +213,6 @@
       Comp = new JavaJITCompiler("JIT");
     }
 
-    mvm::Object::initialise();
     Collector::initialise(0);
     Collector::enable(0);
 

Modified: vmkit/trunk/tools/vmkit/Launcher.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmkit/Launcher.cpp?rev=70141&r1=70140&r2=70141&view=diff

==============================================================================
--- vmkit/trunk/tools/vmkit/Launcher.cpp (original)
+++ vmkit/trunk/tools/vmkit/Launcher.cpp Sun Apr 26 13:19:52 2009
@@ -133,7 +133,6 @@
   }
   
   mvm::MvmModule::initialise(Fast);
-  mvm::Object::initialise();
   Collector::initialise(0);
 
   if (VMToRun == RunJava) {





More information about the vmkit-commits mailing list