[vmkit-commits] [vmkit] r83247 - in /vmkit/trunk/lib/N3: PNetLib/PNetLib.cpp VMCore/Assembly.cpp VMCore/Assembly.h VMCore/LockedMap.h VMCore/N3.cpp VMCore/N3.h VMCore/N3Initialise.cpp VMCore/Reader.cpp VMCore/Reader.h VMCore/VirtualTables.cpp
Gael Thomas
gael.thomas at lip6.fr
Fri Oct 2 07:02:29 PDT 2009
Author: gthomas
Date: Fri Oct 2 09:02:28 2009
New Revision: 83247
URL: http://llvm.org/viewvc/llvm-project?rev=83247&view=rev
Log:
A reader is now allocated by a BumpPtrAllocator. Use constructors whenever possible (and remove static allocate functions).
Modified:
vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp
vmkit/trunk/lib/N3/VMCore/Assembly.cpp
vmkit/trunk/lib/N3/VMCore/Assembly.h
vmkit/trunk/lib/N3/VMCore/LockedMap.h
vmkit/trunk/lib/N3/VMCore/N3.cpp
vmkit/trunk/lib/N3/VMCore/N3.h
vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
vmkit/trunk/lib/N3/VMCore/Reader.cpp
vmkit/trunk/lib/N3/VMCore/Reader.h
vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp (original)
+++ vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp Fri Oct 2 09:02:28 2009
@@ -840,7 +840,7 @@
uint32 length = 0;
uint32 pad = 0;
- Reader* reader = Reader::allocateReader(ass->bytes);
+ Reader* reader = ass->newReader(ass->bytes);
section = textSection->rawAddress + (resRva - textSection->virtualAddress);
reader->seek(section, Reader::SeekSet);
Modified: vmkit/trunk/lib/N3/VMCore/Assembly.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/Assembly.cpp?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Assembly.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/Assembly.cpp Fri Oct 2 09:02:28 2009
@@ -464,17 +464,15 @@
return meth;
}
-Assembly* Assembly::allocate(const UTF8* name) {
- mvm::BumpPtrAllocator *a = new mvm::BumpPtrAllocator();
- Assembly* ass = new(*a, "Assembly") Assembly(*a);
- ass->loadedNameClasses = ClassNameMap::allocate(ass->allocator);
- ass->loadedTokenClasses = ClassTokenMap::allocate(ass->allocator);
- ass->loadedTokenMethods = MethodTokenMap::allocate(ass->allocator);
- ass->loadedTokenFields = FieldTokenMap::allocate(ass->allocator);
- ass->assemblyRefs = 0;
- ass->isRead = false;
- ass->name = name;
- return ass;
+Assembly::Assembly(mvm::BumpPtrAllocator &allocator, const UTF8 *name) : allocator(allocator) {
+ this->loadedNameClasses = new(allocator, "ClassNameMap") ClassNameMap();
+ this->loadedTokenClasses = new(allocator, "ClassTokenMap") ClassTokenMap();
+ this->loadedTokenMethods = new(allocator, "MethodTokenMap") MethodTokenMap();
+ this->loadedTokenFields = new(allocator, "FieldTokenMap") FieldTokenMap();
+
+ this->assemblyRefs = 0;
+ this->isRead = false;
+ this->name = name;
}
static void unimplemented(uint32 index,
@@ -669,7 +667,7 @@
characteristics = reader->readU4();
}
-void Header::read(Reader* reader, N3* vm) {
+void Header::read(mvm::BumpPtrAllocator &allocator, Reader* reader, N3* vm) {
uint32 start = reader->cursor;
signature = reader->readU4();
major = reader->readU2();
@@ -686,7 +684,7 @@
uint32 len =
strlen((char*)(&(reader->bytes->elements[reader->cursor])));
- Stream* stream = gc_new(Stream)();
+ Stream* stream = new(allocator, "Stream") Stream();
char* str = (char*)malloc(len + 1);
memcpy(str, &(reader->bytes->elements[reader->cursor]), len + 1);
reader->cursor += (len + (4 - (len % 4)));
@@ -788,7 +786,7 @@
uint32 offset = 0;
for (uint32 i = 0; i < 32; ++i) {
- Table* table = gc_new(Table)();
+ Table* table = new(allocator, "Table") Table();
if ((1 << i) & validLow) {
table->rowsNumber = reader->readU4();
++tableNumber;
@@ -799,7 +797,7 @@
}
for (uint32 i = 0; i < 32; ++i) {
- Table* table = gc_new(Table)();
+ Table* table = new(allocator, "Table") Table();
if ((1 << i) & validHigh) {
table->rowsNumber = reader->readU4();
++tableNumber;
@@ -824,14 +822,18 @@
}
}
+Reader *Assembly::newReader(ArrayUInt8* array, uint32 start, uint32 end) {
+ return new(allocator, "Reader") Reader(array, start, end);
+}
+
void Assembly::read() {
- Reader* reader = Reader::allocateReader(bytes);
+ Reader* reader = newReader(bytes);
PRINT_DEBUG(DEBUG_LOAD, 1, LIGHT_GREEN, "Reading %s::%s", vm->printString(),
this->printString());
- textSection = gc_new(Section)();
- rsrcSection = gc_new(Section)();
- relocSection = gc_new(Section)();
+ textSection = new(allocator, "Section") Section();
+ rsrcSection = new(allocator, "Section") Section();
+ relocSection = new(allocator, "Section") Section();
reader->seek(TEXT_SECTION_HEADER, Reader::SeekSet);
textSection->read(reader, vm);
@@ -857,8 +859,8 @@
reader->seek(textSection->rawAddress + (mdRva - textSection->virtualAddress),
Reader::SeekSet);
- CLIHeader = gc_new(Header)();
- CLIHeader->read(reader, vm);
+ CLIHeader = new (allocator, "Header") Header();
+ CLIHeader->read(allocator, reader, vm);
reader->seek(CLIHeader->tildStream->realOffset, Reader::SeekSet);
Modified: vmkit/trunk/lib/N3/VMCore/Assembly.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/Assembly.h?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Assembly.h (original)
+++ vmkit/trunk/lib/N3/VMCore/Assembly.h Fri Oct 2 09:02:28 2009
@@ -52,9 +52,8 @@
class VMGenericClass;
class VMGenericMethod;
-class Section : public mvm::Object {
+class Section : public mvm::PermanentObject {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -72,9 +71,8 @@
void read(Reader* reader, N3* vm);
};
-class Stream : public mvm::Object {
+class Stream : public mvm::PermanentObject {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -83,9 +81,8 @@
uint32 size;
};
-class Table : public mvm::Object {
+class Table : public mvm::PermanentObject {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -101,9 +98,8 @@
};
-class Header : public mvm::Object {
+class Header : public mvm::PermanentObject {
public:
- static VirtualTable* VT;
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
@@ -123,7 +119,7 @@
Stream* guidStream;
std::vector<Table*, gc_allocator<Table*> > tables;
- void read(Reader* reader, N3* vm);
+ void read(mvm::BumpPtrAllocator &allocator, Reader* reader, N3* vm);
};
typedef void (*maskVector_t)(uint32 index,
@@ -189,9 +185,8 @@
mvm::BumpPtrAllocator &allocator;
- Assembly(mvm::BumpPtrAllocator &Alloc) : allocator(Alloc) {}
+ Assembly(mvm::BumpPtrAllocator &Alloc, const UTF8* name);
- static Assembly* allocate(const UTF8* name);
static const UTF8* readUTF8(VirtualMachine* vm, uint32 len, Reader* reader);
static const UTF8* readUTF16(VirtualMachine* vm, uint32 len, Reader* reader);
static const UTF8* readUTF8(VirtualMachine* vm, uint32 len, ArrayUInt8* bytes,
@@ -208,6 +203,8 @@
static const char* signatureNames[0x46];
+ Reader *newReader(ArrayUInt8* array, uint32 start = 0, uint32 end = 0);
+
uint32 uncompressSignature(uint32& offset);
uint32 getTypeDefTokenFromMethod(uint32 token);
VMCommonClass* loadType(N3* vm, uint32 token, bool resolveFunc, bool resolve,
@@ -268,7 +265,6 @@
private:
VMMethod *instantiateGenericMethod(std::vector<VMCommonClass*> *genArgs, VMCommonClass *type, const UTF8 *& name, std::vector<VMCommonClass*> & args, uint32 token, bool virt, VMGenericClass* genClass);
-
};
Modified: vmkit/trunk/lib/N3/VMCore/LockedMap.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/LockedMap.h?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/LockedMap.h (original)
+++ vmkit/trunk/lib/N3/VMCore/LockedMap.h Fri Oct 2 09:02:28 2009
@@ -39,12 +39,17 @@
template<class Key, class Container, class Compare, class Upcall>
class LockedMap : public mvm::PermanentObject {
public:
+
typedef typename std::map<const Key, Container*, Compare>::iterator iterator;
typedef Container* (*funcCreate)(Key& V, Upcall* ass);
- mvm::Lock* lock;
+ mvm::Lock *lock;
std::map<Key, Container*, Compare,
gc_allocator<std::pair<const Key, Container*> > > map;
+
+ LockedMap(mvm::Lock *lock) {
+ this->lock = lock;
+ }
inline Container* lookupOrCreate(Key& V, Upcall* ass, funcCreate func) {
lock->lock();
@@ -117,76 +122,40 @@
};
-class ClassNameMap :
- public LockedMap<ClassNameCmp, VMCommonClass, std::less<ClassNameCmp>, Assembly > {
+class ClassNameMap : public LockedMap<ClassNameCmp, VMCommonClass, std::less<ClassNameCmp>, Assembly > {
public:
- static ClassNameMap* allocate(mvm::BumpPtrAllocator &allocator) {
- ClassNameMap* map = new(allocator, "ClassNameMap") ClassNameMap();
- map->lock = new mvm::LockNormal();
- return map;
- }
+ ClassNameMap() : LockedMap<ClassNameCmp, VMCommonClass, std::less<ClassNameCmp>, Assembly >(new mvm::LockNormal()) {}
};
-class ClassTokenMap :
- public LockedMap<uint32, VMCommonClass, std::less<uint32>, Assembly > {
+class ClassTokenMap : public LockedMap<uint32, VMCommonClass, std::less<uint32>, Assembly > {
public:
- static ClassTokenMap* allocate(mvm::BumpPtrAllocator &allocator) {
- ClassTokenMap* map = new(allocator, "ClassTokenMap") ClassTokenMap();
- map->lock = new mvm::LockNormal();
- return map;
- }
-
+ ClassTokenMap() : LockedMap<uint32, VMCommonClass, std::less<uint32>, Assembly >(new mvm::LockNormal()) {}
};
-class FieldTokenMap :
- public LockedMap<uint32, VMField, std::less<uint32>, Assembly > {
+class FieldTokenMap : public LockedMap<uint32, VMField, std::less<uint32>, Assembly > {
public:
- static FieldTokenMap* allocate(mvm::BumpPtrAllocator &allocator) {
- FieldTokenMap* map = new(allocator, "FieldTokenMap") FieldTokenMap();
- map->lock = new mvm::LockNormal();
- return map;
- }
+ FieldTokenMap() : LockedMap<uint32, VMField, std::less<uint32>, Assembly >(new mvm::LockNormal()) {}
};
-class MethodTokenMap :
- public LockedMap<uint32, VMMethod, std::less<uint32>, Assembly > {
+class MethodTokenMap : public LockedMap<uint32, VMMethod, std::less<uint32>, Assembly > {
public:
- static MethodTokenMap* allocate(mvm::BumpPtrAllocator &allocator) {
- MethodTokenMap* map = new(allocator, "MethodTokenMap") MethodTokenMap();
- map->lock = new mvm::LockNormal();
- return map;
- }
+ MethodTokenMap() : LockedMap<uint32, VMMethod, std::less<uint32>, Assembly >(new mvm::LockNormal()) {}
};
-class AssemblyMap :
- public LockedMap<const UTF8*, Assembly, std::less<const UTF8*>, N3 > {
+class AssemblyMap : public LockedMap<const UTF8*, Assembly, std::less<const UTF8*>, N3 > {
public:
- static AssemblyMap* allocate(mvm::BumpPtrAllocator &allocator) {
- AssemblyMap* map = new(allocator, "AssemblyMap") AssemblyMap();
- map->lock = new mvm::LockNormal();
- return map;
- }
+ AssemblyMap() : LockedMap<const UTF8*, Assembly, std::less<const UTF8*>, N3 >(new mvm::LockNormal()) {}
};
-class StringMap :
- public LockedMap<const UTF8*, CLIString, std::less<const UTF8*>, N3 > {
+class StringMap : public LockedMap<const UTF8*, CLIString, std::less<const UTF8*>, N3 > {
public:
- static StringMap* allocate(mvm::BumpPtrAllocator &allocator) {
- StringMap* map = new(allocator, "StringMap") StringMap();
- map->lock = new mvm::LockRecursive();
- return map;
- }
+ StringMap() : LockedMap<const UTF8*, CLIString, std::less<const UTF8*>, N3 >(new mvm::LockRecursive()) {}
};
-class FunctionMap :
- public LockedMap<llvm::Function*, VMMethod, std::less<llvm::Function*>, N3 > {
+class FunctionMap : public LockedMap<llvm::Function*, VMMethod, std::less<llvm::Function*>, N3 > {
public:
- static FunctionMap* allocate(mvm::BumpPtrAllocator &allocator) {
- FunctionMap* map = new(allocator, "FunctionMap") FunctionMap();
- map->lock = new mvm::LockNormal();
- return map;
- }
+ FunctionMap() : LockedMap<llvm::Function*, VMMethod, std::less<llvm::Function*>, N3 >(new mvm::LockNormal()) {}
};
@@ -202,6 +171,10 @@
const UTF8* lookupOrCreateAsciiz(const char* asciiz);
const UTF8* lookupOrCreateReader(const uint16* buf, uint32 size);
+ UTF8Map() {
+ lock = new mvm::LockNormal();
+ }
+
virtual void TRACER {
//lock->MARK_AND_TRACE;
for (iterator i = map.begin(), e = map.end(); i!= e; ++i) {
@@ -212,14 +185,6 @@
virtual void print(mvm::PrintBuffer* buf) const {
buf->write("UTF8 Hashtable<>");
}
-
- static UTF8Map* allocate(mvm::BumpPtrAllocator &allocator) {
- UTF8Map* map = new(allocator, "UTF8Map") UTF8Map();
- map->lock = new mvm::LockNormal();
- return map;
- }
-
-
};
} // end namespace n3
Modified: vmkit/trunk/lib/N3/VMCore/N3.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3.cpp?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3.cpp Fri Oct 2 09:02:28 2009
@@ -47,8 +47,8 @@
}
static Assembly* assemblyDup(const UTF8*& name, N3* vm) {
- Assembly* res = Assembly::allocate(name);
- return res;
+ mvm::BumpPtrAllocator *a = new mvm::BumpPtrAllocator();
+ return new(*a, "Assembly") Assembly(*a, name);
}
Assembly* N3::constructAssembly(const UTF8* name) {
@@ -59,55 +59,48 @@
return loadedAssemblies->lookup(name);
}
+N3::N3(mvm::BumpPtrAllocator &allocator, const char *name) : VirtualMachine(allocator) {
+ this->name = name;
+
+ this->scanner = new mvm::UnpreciseStackScanner();
+ this->LLVMModule = new llvm::Module(name, llvm::getGlobalContext());
+ this->module = new mvm::MvmModule(this->LLVMModule);
+
+ this->LLVMModule->setDataLayout(mvm::MvmModule::executionEngine->getTargetData()->getStringRepresentation());
+ this->protectModule = new mvm::LockNormal();
+
+ this->functions = new(allocator, "FunctionMap") FunctionMap();
+ this->hashStr = new(allocator, "StringMap") StringMap();
+ this->loadedAssemblies = new(allocator, "AssemblyMap") AssemblyMap();
+
+ this->TheModuleProvider = new N3ModuleProvider(this->LLVMModule, this->functions);
+}
+
N3* N3::allocateBootstrap() {
mvm::BumpPtrAllocator *a = new mvm::BumpPtrAllocator();
- N3 *vm= new(*a, "VM") N3(*a);
-
- std::string str =
- mvm::MvmModule::executionEngine->getTargetData()->getStringRepresentation();
+ N3 *vm= new(*a, "VM") N3(*a, "bootstrapN3");
+
+ vm->hashUTF8 = new(vm->allocator, "UTF8Map") UTF8Map();
- vm->LLVMModule = new llvm::Module("Bootstrap N3", llvm::getGlobalContext());
- vm->module = new mvm::MvmModule(vm->LLVMModule);
- vm->getLLVMModule()->setDataLayout(str);
- vm->protectModule = new mvm::LockNormal();
- vm->functions = FunctionMap::allocate(vm->allocator);
- vm->TheModuleProvider = new N3ModuleProvider(vm->LLVMModule, vm->functions);
CLIJit::initialiseBootstrapVM(vm);
- vm->name = "bootstrapN3";
- vm->hashUTF8 = UTF8Map::allocate(vm->allocator);
- vm->hashStr = StringMap::allocate(vm->allocator);
- vm->loadedAssemblies = AssemblyMap::allocate(vm->allocator);
- vm->scanner = new mvm::UnpreciseStackScanner();
-
return vm;
}
N3* N3::allocate(const char* name, N3* parent) {
mvm::BumpPtrAllocator *a = new mvm::BumpPtrAllocator();
- N3 *vm= new(*a, "VM") N3(*a);
- vm->scanner = new mvm::UnpreciseStackScanner();
-
- std::string str =
- mvm::MvmModule::executionEngine->getTargetData()->getStringRepresentation();
- vm->LLVMModule = new llvm::Module("Bootstrap N3", llvm::getGlobalContext());
- vm->module = new mvm::MvmModule(vm->LLVMModule);
- vm->LLVMModule->setDataLayout(str);
- vm->protectModule = new mvm::LockNormal();
- vm->functions = FunctionMap::allocate(vm->allocator);
- vm->TheModuleProvider = new N3ModuleProvider(vm->LLVMModule, vm->functions);
- CLIJit::initialiseAppDomain(vm);
+ N3 *vm= new(*a, "VM") N3(*a, name);
+ vm->hashUTF8 = parent->hashUTF8;
vm->threadSystem = ThreadSystem::allocateThreadSystem();
- vm->name = name;
- vm->hashUTF8 = parent->hashUTF8;
- vm->hashStr = StringMap::allocate(vm->allocator);
- vm->loadedAssemblies = AssemblyMap::allocate(vm->allocator);
+
vm->assemblyPath = parent->assemblyPath;
vm->coreAssembly = parent->coreAssembly;
vm->loadedAssemblies->hash(parent->coreAssembly->name, parent->coreAssembly);
+
+ CLIJit::initialiseAppDomain(vm);
return vm;
}
Modified: vmkit/trunk/lib/N3/VMCore/N3.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3.h?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3.h (original)
+++ vmkit/trunk/lib/N3/VMCore/N3.h Fri Oct 2 09:02:28 2009
@@ -53,8 +53,6 @@
virtual void print(mvm::PrintBuffer* buf) const;
virtual void TRACER;
- N3(mvm::BumpPtrAllocator &allocator) : VirtualMachine(allocator) {}
-
VMObject* asciizToStr(const char* asciiz);
VMObject* UTF8ToStr(const UTF8* utf8);
Assembly* constructAssembly(const UTF8* name);
@@ -67,6 +65,10 @@
std::vector<const char*> assemblyPath;
Assembly* coreAssembly;
+private:
+ N3(mvm::BumpPtrAllocator &allocator, const char *name);
+
+public:
static N3* allocateBootstrap();
static N3* allocate(const char* name, N3* parent);
Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Fri Oct 2 09:02:28 2009
@@ -177,12 +177,8 @@
}
#endif
- INIT(Header);
INIT(Property);
INIT(Param);
- INIT(Section);
- INIT(Stream);
- INIT(Table);
INIT(VMArray);
INIT(ArrayUInt8);
INIT(ArraySInt8);
@@ -207,9 +203,7 @@
INIT(LockObj);
INIT(VMObject);
INIT(VMThread);
- //mvm::Key<VMThread>::VT = mvm::ThreadKey::VT;
INIT(ThreadSystem);
- INIT(Reader);
INIT(CLIString);
INIT(CLIJit);
INIT(CacheNode);
Modified: vmkit/trunk/lib/N3/VMCore/Reader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/Reader.cpp?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Reader.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/Reader.cpp Fri Oct 2 09:02:28 2009
@@ -104,25 +104,23 @@
return tmp | (((sint64)(readS8())) << 32);
}
-Reader* Reader::allocateReader(ArrayUInt8* array, uint32 start,
- uint32 end) {
- Reader* reader = gc_new(Reader)();
- if (!end) end = array->size;
- reader->bytes = array;
- reader->cursor = start;
- reader->min = start;
- reader->max = start + end;
- return reader;
-
+Reader::Reader(ArrayUInt8* array, uint32 start, uint32 end) {
+ if (!end)
+ end = array->size;
+
+ bytes = array;
+ cursor = start;
+ min = start;
+ max = start + end;
}
unsigned int Reader::tell() {
return cursor - min;
}
-Reader* Reader::derive(uint32 nbb) {
- return allocateReader(bytes, cursor, nbb);
-}
+// Reader* Reader::derive(uint32 nbb) {
+// return new(allocator, "Reader") Reader(allocator, bytes, cursor, nbb);
+// }
void Reader::seek(uint32 pos, int from) {
uint32 n = 0;
Modified: vmkit/trunk/lib/N3/VMCore/Reader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/Reader.h?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Reader.h (original)
+++ vmkit/trunk/lib/N3/VMCore/Reader.h Fri Oct 2 09:02:28 2009
@@ -19,14 +19,15 @@
namespace n3 {
-class Reader : public mvm::Object {
+class Reader : public mvm::PermanentObject {
public:
- static VirtualTable* VT;
ArrayUInt8* bytes;
uint32 min;
uint32 cursor;
uint32 max;
+ Reader(ArrayUInt8* array, uint32 start = 0, uint32 end = 0);
+
static double readDouble(int first, int second);
static sint64 readLong(int first, int second);
@@ -43,10 +44,8 @@
sint32 readS4();
uint64 readU8();
sint64 readS8();
- static Reader* allocateReader(ArrayUInt8* array, uint32 start = 0,
- uint32 end = 0);
unsigned int tell();
- Reader* derive(uint32 nbb);
+ // Reader* derive(uint32 nbb);
void seek(uint32 pos, int from);
virtual void print(mvm::PrintBuffer* buf) const;
Modified: vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp?rev=83247&r1=83246&r2=83247&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Fri Oct 2 09:02:28 2009
@@ -50,17 +50,12 @@
INIT(LockObj);
INIT(VMObject);
INIT(VMThread);
- INIT(Section);
- INIT(Stream);
- INIT(Table);
- INIT(Header);
INIT(ThreadSystem);
INIT(CLIString);
INIT(Property);
INIT(Param);
INIT(CacheNode);
INIT(Enveloppe);
- INIT(Reader);
INIT(Opinfo);
INIT(CLIJit);
INIT(Exception);
@@ -132,6 +127,12 @@
i!= e; ++i) { \
(*i)->MARK_AND_TRACE; }}
+#define CALL_TRACER_VECTOR(type, name, alloc) { \
+ for (std::vector<type, alloc<type> >::iterator i = name.begin(), e = name.end(); \
+ i!= e; ++i) { \
+ (*i)->CALL_TRACER; }}
+
+
void VMCommonClass::TRACER {
name->MARK_AND_TRACE;
nameSpace->MARK_AND_TRACE;
@@ -255,10 +256,10 @@
//condVar->MARK_AND_TRACE;
name->MARK_AND_TRACE;
bytes->MARK_AND_TRACE;
- textSection->MARK_AND_TRACE;
- rsrcSection->MARK_AND_TRACE;
- relocSection->MARK_AND_TRACE;
- CLIHeader->MARK_AND_TRACE;
+ textSection->CALL_TRACER;
+ rsrcSection->CALL_TRACER;
+ relocSection->CALL_TRACER;
+ CLIHeader->CALL_TRACER;
vm->CALL_TRACER;
delegatee->MARK_AND_TRACE;
// TODO trace assembly refs...
@@ -282,12 +283,12 @@
void Header::TRACER {
versionName->MARK_AND_TRACE;
- tildStream->MARK_AND_TRACE;
- stringStream->MARK_AND_TRACE;
- usStream->MARK_AND_TRACE;
- blobStream->MARK_AND_TRACE;
- guidStream->MARK_AND_TRACE;
- TRACE_VECTOR(Table*, tables, gc_allocator);
+ tildStream->CALL_TRACER;
+ stringStream->CALL_TRACER;
+ usStream->CALL_TRACER;
+ blobStream->CALL_TRACER;
+ guidStream->CALL_TRACER;
+ CALL_TRACER_VECTOR(Table*, tables, gc_allocator);
}
void CLIString::TRACER {
More information about the vmkit-commits
mailing list