[vmkit-commits] [vmkit] r83248 - in /vmkit/trunk: include/mvm/PrintBuffer.h lib/N3/VMCore/Assembly.cpp lib/N3/VMCore/CLIJit.cpp lib/N3/VMCore/CLISignature.cpp lib/N3/VMCore/N3Initialise.cpp lib/N3/VMCore/VMClass.cpp lib/N3/VMCore/VMClass.h lib/N3/VMCore/VirtualTables.cpp
Gael Thomas
gael.thomas at lip6.fr
Fri Oct 2 07:52:23 PDT 2009
Author: gthomas
Date: Fri Oct 2 09:52:22 2009
New Revision: 83248
URL: http://llvm.org/viewvc/llvm-project?rev=83248&view=rev
Log:
VMClass(es) are now allocated with BumpPtrAllocator.
Add a generic method in PrintBuffer to call printString even if the object is not an instance of mvm::Object.
Modified:
vmkit/trunk/include/mvm/PrintBuffer.h
vmkit/trunk/lib/N3/VMCore/Assembly.cpp
vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
vmkit/trunk/lib/N3/VMCore/CLISignature.cpp
vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
vmkit/trunk/lib/N3/VMCore/VMClass.cpp
vmkit/trunk/lib/N3/VMCore/VMClass.h
vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/include/mvm/PrintBuffer.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/PrintBuffer.h?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/PrintBuffer.h (original)
+++ vmkit/trunk/include/mvm/PrintBuffer.h Fri Oct 2 09:52:22 2009
@@ -186,6 +186,13 @@
return pbf;
}
+ template <typename T>
+ static char *objectToString(T *obj) {
+ PrintBuffer *buf = alloc();
+ obj->print(buf);
+ return buf->contents()->cString();
+ }
+
/// tracer - Traces this PrintBuffer.
///
static void staticTracer(PrintBuffer* obj) {
Modified: vmkit/trunk/lib/N3/VMCore/Assembly.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/Assembly.cpp?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Assembly.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/Assembly.cpp Fri Oct 2 09:52:22 2009
@@ -244,7 +244,7 @@
}
static VMCommonClass* arrayDup(ClassNameCmp &cmp, Assembly* ass) {
- VMClassArray* cl = gc_new(VMClassArray)();
+ VMClassArray* cl = new(ass->allocator, "VMClassArray") VMClassArray();
cl->initialise(ass->vm, true);
cl->name = cmp.name;
cl->nameSpace = cmp.nameSpace;
@@ -280,7 +280,7 @@
}
static VMCommonClass* pointerDup(ClassNameCmp &cmp, Assembly* ass) {
- VMClassPointer* cl = gc_new(VMClassPointer)();
+ VMClassPointer* cl = new(ass->allocator, "VMClassPointer") VMClassPointer();
cl->initialise(ass->vm, false);
cl->isPointer = true;
cl->name = cmp.name;
@@ -317,7 +317,7 @@
}
static VMCommonClass* classDup(ClassNameCmp &cmp, Assembly* ass) {
- VMClass* cl = gc_new(VMClass)();
+ VMClass* cl = new(ass->allocator, "VMClass") VMClass();
cl->initialise(ass->vm, false);
cl->name = cmp.name;
cl->nameSpace = cmp.nameSpace;
@@ -341,7 +341,7 @@
}
static VMCommonClass* genClassDup(ClassNameCmp &cmp, Assembly* ass) {
- VMClass* cl = gc_new(VMGenericClass)();
+ VMClass* cl = new(ass->allocator, "VMGenericClass") VMGenericClass();
cl->initialise(ass->vm, false);
cl->name = cmp.name;
cl->nameSpace = cmp.nameSpace;
Modified: vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/CLIJit.cpp?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLIJit.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLIJit.cpp Fri Oct 2 09:52:22 2009
@@ -608,7 +608,7 @@
Value* obj = 0;
if (type->isPointer) {
- VMThread::get()->vm->error("implement me %s", type->printString());
+ VMThread::get()->vm->error("implement me %s", mvm::PrintBuffer::objectToString(type));
} else if (type->isArray) {
VMClassArray* arrayType = (VMClassArray*)type;
Value* valCl = new LoadInst(arrayType->llvmVar(), "", currentBlock);
@@ -920,8 +920,7 @@
else if (name == N3::invokeName) return invokeDelegate();
else VMThread::get()->vm->error("implement me");
} else {
- VMThread::get()->vm->error("implement me %s",
- compilingClass->printString());
+ VMThread::get()->vm->error("implement me %s", mvm::PrintBuffer::objectToString(compilingClass));
}
return 0;
}
Modified: vmkit/trunk/lib/N3/VMCore/CLISignature.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/CLISignature.cpp?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLISignature.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLISignature.cpp Fri Oct 2 09:52:22 2009
@@ -182,7 +182,7 @@
uint32 numSizes = ass->uncompressSignature(offset);
if (numSizes != 0) {
- printf("type = %s\n", cl->printString());
+ printf("type = %s\n", mvm::PrintBuffer::objectToString(cl));
VMThread::get()->vm->error("implement me");
}
@@ -302,7 +302,7 @@
// of generic methods we need create a placeholder for each of them,
// this is done by creating a dummy VMClass which has the assembly field
// set to NULL, the token field is used to store the generic argument number
- VMClass* cl = gc_new(VMClass)();
+ VMClass* cl = new(ass->allocator, "VMClass") VMClass();
cl->token = number;
cl->assembly = ass;
cl->nameSpace = ass->name;
Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Fri Oct 2 09:52:22 2009
@@ -191,11 +191,6 @@
INIT(ArrayDouble);
INIT(ArrayObject);
INIT(UTF8);
- INIT(VMCommonClass);
- INIT(VMClass);
- INIT(VMClassPointer);
- INIT(VMGenericClass);
- INIT(VMClassArray);
INIT(VMMethod);
INIT(VMGenericMethod);
INIT(VMField);
Modified: vmkit/trunk/lib/N3/VMCore/VMClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMClass.cpp?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMClass.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMClass.cpp Fri Oct 2 09:52:22 2009
@@ -563,7 +563,7 @@
if (!res) {
VMThread::get()->vm->error(VirtualMachine::MissingMethodException,
"unable to find %s in %s",
- name->printString(), this->printString());
+ mvm::PrintBuffer::objectToString(name), mvm::PrintBuffer::objectToString(this));
}
return res;
}
@@ -610,7 +610,7 @@
if (!res) {
VMThread::get()->vm->error(VirtualMachine::MissingFieldException,
"unable to find %s in %s",
- name->printString(), this->printString());
+ mvm::PrintBuffer::objectToString(name), mvm::PrintBuffer::objectToString(this));
}
return res;
}
Modified: vmkit/trunk/lib/N3/VMCore/VMClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMClass.h?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMClass.h (original)
+++ vmkit/trunk/lib/N3/VMCore/VMClass.h Fri Oct 2 09:52:22 2009
@@ -44,9 +44,8 @@
}VMClassState;
-class VMCommonClass : public mvm::Object {
+class VMCommonClass : public mvm::PermanentObject {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -131,7 +130,6 @@
class VMClass : public VMCommonClass {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -157,7 +155,6 @@
// add flag to VMClass instead
class VMGenericClass : public VMClass {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -166,7 +163,6 @@
class VMClassArray : public VMCommonClass {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -188,7 +184,6 @@
class VMClassPointer : public VMCommonClass {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
Modified: vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp?rev=83248&r1=83247&r2=83248&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Fri Oct 2 09:52:22 2009
@@ -38,11 +38,6 @@
INIT(ArrayDouble);
INIT(ArrayObject);
INIT(UTF8);
- INIT(VMCommonClass);
- INIT(VMClass);
- INIT(VMGenericClass);
- INIT(VMClassArray);
- INIT(VMClassPointer);
INIT(VMMethod);
INIT(VMGenericMethod);
INIT(VMField);
@@ -67,7 +62,7 @@
void CLIJit::TRACER {
compilingMethod->MARK_AND_TRACE;
- compilingClass->MARK_AND_TRACE;
+ compilingClass->CALL_TRACER;
}
void ThreadSystem::TRACER {
@@ -81,7 +76,7 @@
void CacheNode::TRACER {
((mvm::Object*)methPtr)->MARK_AND_TRACE;
- lastCible->MARK_AND_TRACE;
+ lastCible->CALL_TRACER;
next->MARK_AND_TRACE;
enveloppe->MARK_AND_TRACE;
}
@@ -136,8 +131,8 @@
void VMCommonClass::TRACER {
name->MARK_AND_TRACE;
nameSpace->MARK_AND_TRACE;
- super->MARK_AND_TRACE;
- TRACE_VECTOR(VMClass*, interfaces, std::allocator);
+ super->CALL_TRACER;
+ CALL_TRACER_VECTOR(VMClass*, interfaces, std::allocator);
//lockVar->MARK_AND_TRACE;
//condVar->MARK_AND_TRACE;
TRACE_VECTOR(VMMethod*, virtualMethods, std::allocator);
@@ -145,7 +140,7 @@
TRACE_VECTOR(VMField*, virtualFields, std::allocator);
TRACE_VECTOR(VMField*, staticFields, std::allocator);
delegatee->MARK_AND_TRACE;
- TRACE_VECTOR(VMCommonClass*, display, std::allocator);
+ CALL_TRACER_VECTOR(VMCommonClass*, display, std::allocator);
vm->CALL_TRACER;
assembly->CALL_TRACER;
@@ -157,31 +152,31 @@
VMCommonClass::CALL_TRACER;
staticInstance->MARK_AND_TRACE;
virtualInstance->MARK_AND_TRACE;
- TRACE_VECTOR(VMClass*, innerClasses, std::allocator);
- outerClass->MARK_AND_TRACE;
+ CALL_TRACER_VECTOR(VMClass*, innerClasses, std::allocator);
+ outerClass->CALL_TRACER;
TRACE_VECTOR(VMMethod*, genericMethods, std::allocator);
}
void VMGenericClass::TRACER {
VMClass::CALL_TRACER;
- TRACE_VECTOR(VMCommonClass*, genericParams, std::allocator);
+ CALL_TRACER_VECTOR(VMCommonClass*, genericParams, std::allocator);
}
void VMClassArray::TRACER {
VMCommonClass::CALL_TRACER;
- baseClass->MARK_AND_TRACE;
+ baseClass->CALL_TRACER;
}
void VMClassPointer::TRACER {
VMCommonClass::CALL_TRACER;
- baseClass->MARK_AND_TRACE;
+ baseClass->CALL_TRACER;
}
void VMMethod::TRACER {
delegatee->MARK_AND_TRACE;
//signature->MARK_AND_TRACE;
- classDef->MARK_AND_TRACE;
+ classDef->CALL_TRACER;
TRACE_VECTOR(Param*, params, gc_allocator);
TRACE_VECTOR(Enveloppe*, caches, gc_allocator);
name->MARK_AND_TRACE;
@@ -189,12 +184,12 @@
void VMGenericMethod::TRACER {
VMMethod::CALL_TRACER;
- TRACE_VECTOR(VMCommonClass*, genericParams, std::allocator);
+ CALL_TRACER_VECTOR(VMCommonClass*, genericParams, std::allocator);
}
void VMField::TRACER {
- signature->MARK_AND_TRACE;
- classDef->MARK_AND_TRACE;
+ signature->CALL_TRACER;
+ classDef->CALL_TRACER;
name->MARK_AND_TRACE;
}
@@ -211,7 +206,7 @@
}
void VMObject::TRACER {
- classOf->MARK_AND_TRACE;
+ classOf->CALL_TRACER;
lockObj->MARK_AND_TRACE;
}
@@ -241,7 +236,7 @@
}
void Property::TRACER {
- type->MARK_AND_TRACE;
+ type->CALL_TRACER;
//signature->MARK_AND_TRACE;
name->MARK_AND_TRACE;
delegatee->MARK_AND_TRACE;
@@ -295,7 +290,7 @@
}
void Exception::TRACER {
- catchClass->MARK_AND_TRACE;
+ catchClass->CALL_TRACER;
}
#ifdef MULTIPLE_GC
@@ -303,7 +298,7 @@
#else
extern "C" void CLIObjectTracer(VMObject* obj) {
#endif
- obj->classOf->MARK_AND_TRACE;
+ obj->classOf->CALL_TRACER;
obj->lockObj->MARK_AND_TRACE;
}
More information about the vmkit-commits
mailing list