[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