[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