[vmkit-commits] [vmkit] r57679 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.h JnjvmClassLoader.cpp VirtualTables.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Oct 17 08:11:15 PDT 2008
Author: geoffray
Date: Fri Oct 17 10:11:15 2008
New Revision: 57679
URL: http://llvm.org/viewvc/llvm-project?rev=57679&view=rev
Log:
Make classes permanentObject instead of GC objects.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=57679&r1=57678&r2=57679&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Fri Oct 17 10:11:15 2008
@@ -122,7 +122,7 @@
/// object that stays in memory has a reference to the class. Same for
/// super or interfaces.
///
-class CommonClass : public mvm::Object {
+class CommonClass : public mvm::PermanentObject {
#ifdef ISOLATE_SHARING
friend class UserCommonClass;
#endif
@@ -422,6 +422,13 @@
/// tracer - The tracer of this GC-allocated class.
///
virtual void TRACER;
+
+ /// printString - Prints the class.
+ char *printString() const {
+ mvm::PrintBuffer *buf = mvm::PrintBuffer::alloc();
+ print(buf);
+ return buf->contents()->cString();
+ }
/// inheritName - Does this class in its class hierarchy inherits
/// the given name? Equality is on the name. This function does not take
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=57679&r1=57678&r2=57679&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Fri Oct 17 10:11:15 2008
@@ -301,7 +301,7 @@
UserClass* res = 0;
if (I == End) {
const UTF8* internalName = readerConstructUTF8(name->elements, name->size);
- res = allocator_new(allocator, UserClass)(this, internalName, bytes);
+ res = new(allocator) UserClass(this, internalName, bytes);
classes->map.insert(std::make_pair(internalName, res));
} else {
res = ((UserClass*)(I->second));
@@ -321,8 +321,7 @@
UserClassArray* res = 0;
if (I == End) {
const UTF8* internalName = readerConstructUTF8(name->elements, name->size);
- res = allocator_new(allocator, UserClassArray)(this, internalName,
- baseClass);
+ res = new(allocator) UserClassArray(this, internalName, baseClass);
classes->map.insert(std::make_pair(internalName, res));
} else {
res = ((UserClassArray*)(I->second));
Modified: vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp?rev=57679&r1=57678&r2=57679&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp Fri Oct 17 10:11:15 2008
@@ -54,7 +54,7 @@
#undef INIT
void ArrayObject::TRACER {
- classOf->MARK_AND_TRACE;
+ classOf->classLoader->MARK_AND_TRACE;
for (sint32 i = 0; i < size; i++) {
if (elements[i]) elements[i]->MARK_AND_TRACE;
}
@@ -70,8 +70,11 @@
(*i)->MARK_AND_TRACE; }}
void CommonClass::TRACER {
- super->MARK_AND_TRACE;
- TRACE_VECTOR(Class*, gc_allocator, interfaces);
+ if (super) super->classLoader->MARK_AND_TRACE;
+ for (std::vector<Class*, gc_allocator<Class*> >::iterator i = interfaces.begin(),
+ e = interfaces.end(); i!= e; ++i) {
+ (*i)->classLoader->MARK_AND_TRACE;
+ }
classLoader->MARK_AND_TRACE;
#if !defined(ISOLATE)
delegatee->MARK_AND_TRACE;
@@ -80,8 +83,6 @@
void Class::TRACER {
CommonClass::CALL_TRACER;
- TRACE_VECTOR(Class*, gc_allocator, innerClasses);
- outerClass->MARK_AND_TRACE;
bytes->MARK_AND_TRACE;
#if !defined(ISOLATE)
_staticInstance->MARK_AND_TRACE;
@@ -93,7 +94,7 @@
}
void JavaObject::TRACER {
- classOf->MARK_AND_TRACE;
+ classOf->classLoader->MARK_AND_TRACE;
LockObj* l = lockObj();
if (l) l->MARK_AND_TRACE;
}
@@ -103,7 +104,7 @@
#else
extern "C" void JavaObjectTracer(JavaObject* obj) {
#endif
- obj->classOf->MARK_AND_TRACE;
+ obj->classOf->classLoader->MARK_AND_TRACE;
LockObj* l = obj->lockObj();
if (l) l->MARK_AND_TRACE;
}
@@ -127,7 +128,7 @@
static void traceClassMap(ClassMap* classes) {
for (ClassMap::iterator i = classes->map.begin(), e = classes->map.end();
i!= e; ++i) {
- i->second->MARK_AND_TRACE;
+ i->second->CALL_TRACER;
}
}
More information about the vmkit-commits
mailing list