[vmkit-commits] [vmkit] r85214 - in /vmkit/trunk: include/mvm/VirtualMachine.h lib/JnJVM/Classpath/ClasspathReflect.h lib/JnJVM/Classpath/JavaUpcalls.cpp lib/JnJVM/VMCore/JavaClass.h lib/JnJVM/VMCore/Jnjvm.h lib/JnJVM/VMCore/JnjvmClassLoader.h lib/JnJVM/VMCore/VirtualTables.cpp lib/Mvm/GCMmap2/MvmGC.h lib/Mvm/GCMmap2/gc.cpp lib/Mvm/MMTk/MvmGC.cpp lib/Mvm/MMTk/MvmGC.h lib/Mvm/Runtime/Object.cpp lib/N3/VMCore/VirtualTables.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Oct 27 02:01:16 PDT 2009
Author: geoffray
Date: Tue Oct 27 04:01:16 2009
New Revision: 85214
URL: http://llvm.org/viewvc/llvm-project?rev=85214&view=rev
Log:
Adjust the markAndTrace function to MMTk interface.
Modified:
vmkit/trunk/include/mvm/VirtualMachine.h
vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h
vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h
vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp
vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
vmkit/trunk/lib/Mvm/MMTk/MvmGC.h
vmkit/trunk/lib/Mvm/Runtime/Object.cpp
vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/include/mvm/VirtualMachine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/VirtualMachine.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/VirtualMachine.h (original)
+++ vmkit/trunk/include/mvm/VirtualMachine.h Tue Oct 27 04:01:16 2009
@@ -388,7 +388,7 @@
/// getReferent - Get the referent of the reference. Should be overriden
/// by the VM.
//
- virtual gc* getReferent(gc*) { return 0; }
+ virtual gc** getReferent(gc*) { return 0; }
/// enqueueReference - Calls the enqueue method. Should be overriden
/// by the VM.
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathReflect.h Tue Oct 27 04:01:16 2009
@@ -35,12 +35,12 @@
}
static void staticTracer(JavaObjectClass* obj) {
- obj->pd->markAndTrace();
- obj->signers->markAndTrace();
- obj->constructor->markAndTrace();
+ mvm::Collector::markAndTrace(obj, &obj->pd);
+ mvm::Collector::markAndTrace(obj, &obj->signers);
+ mvm::Collector::markAndTrace(obj, &obj->constructor);
if (obj->vmdata) {
- JavaObject* Obj = obj->vmdata->classLoader->getJavaClassLoader();
- if (Obj) Obj->markAndTrace();
+ JavaObject** Obj = obj->vmdata->classLoader->getJavaClassLoaderPtr();
+ if (*Obj) mvm::Collector::markAndTraceRoot(Obj);
}
}
};
@@ -55,8 +55,8 @@
public:
static void staticTracer(JavaObjectField* obj) {
- obj->name->markAndTrace();
- obj->declaringClass->markAndTrace();
+ mvm::Collector::markAndTrace(obj, &obj->name);
+ mvm::Collector::markAndTrace(obj, &obj->declaringClass);
}
JavaField* getInternalField() {
@@ -79,8 +79,8 @@
public:
static void staticTracer(JavaObjectMethod* obj) {
- obj->name->markAndTrace();
- obj->declaringClass->markAndTrace();
+ mvm::Collector::markAndTrace(obj, &obj->name);
+ mvm::Collector::markAndTrace(obj, &obj->declaringClass);
}
JavaMethod* getInternalMethod() {
@@ -101,7 +101,7 @@
public:
static void staticTracer(JavaObjectConstructor* obj) {
- obj->clazz->markAndTrace();
+ mvm::Collector::markAndTrace(obj, &obj->clazz);
}
JavaMethod* getInternalMethod() {
@@ -161,12 +161,12 @@
queue = q;
}
- JavaObject* getReferent() const { return referent; }
+ JavaObject** getReferent() { return &referent; }
void setReferent(JavaObject* r) { referent = r; }
static void staticTracer(JavaObjectReference* obj) {
- obj->queue->markAndTrace();
- obj->nextOnQueue->markAndTrace();
+ mvm::Collector::markAndTrace(obj, &obj->queue);
+ mvm::Collector::markAndTrace(obj, &obj->nextOnQueue);
}
};
Modified: vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/JavaUpcalls.cpp Tue Oct 27 04:01:16 2009
@@ -1051,9 +1051,9 @@
}
-gc* Jnjvm::getReferent(gc* _obj) {
+gc** Jnjvm::getReferent(gc* _obj) {
JavaObjectReference* obj = (JavaObjectReference*)_obj;
- return obj->getReferent();
+ return (gc**)obj->getReferent();
}
void Jnjvm::clearReferent(gc* _obj) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Tue Oct 27 04:01:16 2009
@@ -1293,6 +1293,12 @@
///
Attribut* lookupAttribut(const UTF8* key);
+ JavaObject** getObjectFieldPtr(void* obj) {
+ assert(classDef->isResolved());
+ void* ptr = (void*)((uint64)obj + ptrOffset);
+ return (JavaObject**)ptr;
+ }
+
/// getVritual*Field - Get a virtual field of an object.
///
#define GETFIELD(TYPE, TYPE_NAME) \
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Tue Oct 27 04:01:16 2009
@@ -359,7 +359,7 @@
#endif
virtual void clearReferent(gc*);
- virtual gc* getReferent(gc*);
+ virtual gc** getReferent(gc*);
virtual bool enqueueReference(gc*);
protected:
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Tue Oct 27 04:01:16 2009
@@ -146,6 +146,13 @@
return javaLoader;
}
+ /// getJavaClassLoaderPtr - Return a pointer to the Java representation of
+ /// this class loader.
+ ///
+ JavaObject** getJavaClassLoaderPtr() {
+ return &javaLoader;
+ }
+
/// loadName - Loads the class of the given name.
///
UserClass* loadName(const UTF8* name, bool doResolve, bool doThrow,
Modified: vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp Tue Oct 27 04:01:16 2009
@@ -83,7 +83,7 @@
extern "C" void JavaObjectTracer(JavaObject* obj) {
CommonClass* cl = obj->getClass();
assert(cl && "No class");
- cl->classLoader->getJavaClassLoader()->markAndTrace();
+ mvm::Collector::markAndTraceRoot(cl->classLoader->getJavaClassLoaderPtr());
}
/// Method for scanning an array whose elements are JavaObjects. This method is
@@ -91,11 +91,13 @@
extern "C" void ArrayObjectTracer(ArrayObject* obj) {
CommonClass* cl = obj->getClass();
assert(cl && "No class");
- cl->classLoader->getJavaClassLoader()->markAndTrace();
+ mvm::Collector::markAndTraceRoot(cl->classLoader->getJavaClassLoaderPtr());
for (sint32 i = 0; i < obj->size; i++) {
- if (obj->elements[i]) obj->elements[i]->markAndTrace();
+ if (obj->elements[i]) {
+ mvm::Collector::markAndTrace(obj, obj->elements + i);
+ }
}
}
@@ -109,14 +111,14 @@
extern "C" void RegularObjectTracer(JavaObject* obj) {
Class* cl = obj->getClass()->asClass();
assert(cl && "Not a class in regular tracer");
- cl->classLoader->getJavaClassLoader()->markAndTrace();
+ mvm::Collector::markAndTraceRoot(cl->classLoader->getJavaClassLoaderPtr());
while (cl->super != 0) {
for (uint32 i = 0; i < cl->nbVirtualFields; ++i) {
JavaField& field = cl->virtualFields[i];
if (field.isReference()) {
- JavaObject* ptr = field.getObjectField(obj);
- ptr->markAndTrace();
+ JavaObject** ptr = field.getObjectFieldPtr(obj);
+ mvm::Collector::markAndTrace(obj, ptr);
}
}
cl = cl->super;
@@ -140,23 +142,25 @@
void CommonClass::tracer() {
if (super && super->classLoader) {
- JavaObject* Obj = super->classLoader->getJavaClassLoader();
- if (Obj) Obj->markAndTrace();
+ JavaObject** Obj = super->classLoader->getJavaClassLoaderPtr();
+ if (*Obj) mvm::Collector::markAndTraceRoot(Obj);
for (uint32 i = 0; i < nbInterfaces; ++i) {
- if (interfaces[i]->classLoader)
- interfaces[i]->classLoader->getJavaClassLoader()->markAndTrace();
+ if (interfaces[i]->classLoader) {
+ JavaObject** Obj = interfaces[i]->classLoader->getJavaClassLoaderPtr();
+ if (*Obj) mvm::Collector::markAndTraceRoot(Obj);
+ }
}
}
if (classLoader)
- classLoader->getJavaClassLoader()->markAndTrace();
+ mvm::Collector::markAndTraceRoot(classLoader->getJavaClassLoaderPtr());
for (uint32 i = 0; i < NR_ISOLATES; ++i) {
// If the delegatee was static allocated, we want to trace its fields.
if (delegatee[i]) {
delegatee[i]->tracer();
- delegatee[i]->markAndTrace();
+ mvm::Collector::markAndTraceRoot(delegatee + i);
}
}
}
@@ -164,7 +168,7 @@
void Class::tracer() {
CommonClass::tracer();
if (classLoader != classLoader->bootstrapLoader)
- bytes->markAndTrace();
+ mvm::Collector::markAndTraceRoot(&bytes);
for (uint32 i =0; i < NR_ISOLATES; ++i) {
TaskClassMirror &M = IsolateInfo[i];
@@ -172,8 +176,8 @@
for (uint32 i = 0; i < nbStaticFields; ++i) {
JavaField& field = staticFields[i];
if (field.isReference()) {
- JavaObject* ptr = field.getObjectField(M.staticInstance);
- ptr->markAndTrace();
+ JavaObject** ptr = field.getObjectFieldPtr(M.staticInstance);
+ mvm::Collector::markAndTraceRoot(ptr);
}
}
}
@@ -209,8 +213,8 @@
StringList* end = strings;
while (end) {
for (uint32 i = 0; i < end->length; ++i) {
- JavaObject* obj = end->strings[i];
- obj->markAndTrace();
+ JavaString** obj = end->strings + i;
+ mvm::Collector::markAndTraceRoot(obj);
}
end = end->prev;
}
@@ -252,25 +256,26 @@
void Jnjvm::tracer() {
bootstrapLoader->tracer();
- if (appClassLoader) appClassLoader->getJavaClassLoader()->markAndTrace();
+ if (appClassLoader)
+ mvm::Collector::markAndTraceRoot(appClassLoader->getJavaClassLoaderPtr());
JNIGlobalReferences* start = &globalRefs;
while (start) {
for (uint32 i = 0; i < start->length; ++i) {
- JavaObject* obj = start->globalReferences[i];
- obj->markAndTrace();
+ JavaObject** obj = start->globalReferences + i;
+ mvm::Collector::markAndTraceRoot(obj);
}
start = start->next;
}
for (StringMap::iterator i = hashStr.map.begin(), e = hashStr.map.end();
i!= e; ++i) {
- JavaString* str = i->second;
- str->markAndTrace();
+ JavaString** str = &(i->second);
+ mvm::Collector::markAndTraceRoot(str);
}
#if defined(ISOLATE_SHARING)
- JnjvmSharedLoader::sharedLoader->markAndTrace();
+ mvm::Collector::markAndTraceRoot(&JnjvmSharedLoader::sharedLoader);
#endif
#ifdef SERVICE
@@ -279,17 +284,17 @@
}
void JavaThread::tracer() {
- if (pendingException) pendingException->markAndTrace();
- javaThread->markAndTrace();
+ if (pendingException) mvm::Collector::markAndTraceRoot(&pendingException);
+ mvm::Collector::markAndTraceRoot(&javaThread);
#ifdef SERVICE
- ServiceException->markAndTrace();
+ mvm::Collector::markAndTraceRoot(&ServiceException);
#endif
JNILocalReferences* end = localJNIRefs;
while (end) {
for (uint32 i = 0; i < end->length; ++i) {
- JavaObject* obj = end->localReferences[i];
- obj->markAndTrace();
+ JavaObject** obj = end->localReferences + i;
+ mvm::Collector::markAndTraceRoot(obj);
}
end = end->prev;
}
Modified: vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h (original)
+++ vmkit/trunk/lib/Mvm/GCMmap2/MvmGC.h Tue Oct 27 04:01:16 2009
@@ -21,7 +21,6 @@
#define TRACER tracer()
-#define MARK_AND_TRACE markAndTrace()
#define CALL_TRACER tracer()
namespace mvm {
@@ -276,8 +275,13 @@
o->tracer();
}
- static inline void markAndTrace(void *ptr) {
- GCChunkNode *node = o2node(ptr);
+ static inline void markAndTrace(void* source, void *ptr) {
+ markAndTraceRoot(ptr);
+ }
+
+ static inline void markAndTraceRoot(void *ptr) {
+ void* obj = *(void**)ptr;
+ GCChunkNode *node = o2node(obj);
if(node && !isMarked(node)) {
mark(node);
@@ -312,10 +316,6 @@
class gc : public gcRoot {
public:
- void markAndTrace() const {
- mvm::Collector::markAndTrace((void*)this);
- }
-
size_t objectSize() const {
return mvm::Collector::objectSize((void*)this);
}
Modified: vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp (original)
+++ vmkit/trunk/lib/Mvm/GCMmap2/gc.cpp Tue Oct 27 04:01:16 2009
@@ -15,7 +15,7 @@
extern "C" void MarkAndTrace(gc* gc) {
- Collector::markAndTrace((void*)gc);
+ Collector::markAndTraceRoot(&gc);
}
extern "C" void* gcmalloc(size_t sz, VirtualTable* VT) {
Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.cpp Tue Oct 27 04:01:16 2009
@@ -19,6 +19,7 @@
gc::MMTkPostAllocType gc::MMTkGCPostAllocator = 0;
gc::MMTkCheckAllocatorType gc::MMTkCheckAllocator = 0;
gc::MMTkDelayedRootType gc::MMTkDelayedRoot = 0;
+gc::MMTkProcessEdgeType gc::MMTkProcessEdge = 0;
uintptr_t Collector::TraceLocal = 0;
Modified: vmkit/trunk/lib/Mvm/MMTk/MvmGC.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/MMTk/MvmGC.h?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/MMTk/MvmGC.h (original)
+++ vmkit/trunk/lib/Mvm/MMTk/MvmGC.h Tue Oct 27 04:01:16 2009
@@ -32,11 +32,6 @@
class gc : public gcRoot {
public:
- void markAndTrace() const {
- fprintf(stderr, "Implement mark and trace\n");
- abort();
- }
-
size_t objectSize() const {
fprintf(stderr, "Implement object size\n");
abort();
@@ -106,7 +101,15 @@
assert(TraceLocal && "scanning without a trace local");
gc::MMTkDelayedRoot(TraceLocal, ptr);
}
+
+ static void markAndTrace(void* source, void* ptr) {
+ abort();
+ }
+ static void markAndTraceRoot(void* ptr) {
+ abort();
+ }
+
static void collect() {
abort();
}
Modified: vmkit/trunk/lib/Mvm/Runtime/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/Object.cpp?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/Object.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/Object.cpp Tue Oct 27 04:01:16 2009
@@ -177,7 +177,8 @@
gc* obj = FinalizationQueue[i];
if (!Collector::isLive(obj)) {
- obj->markAndTrace();
+ Collector::markAndTrace((void*)&FinalizationQueue,
+ (void**)(FinalizationQueue + i));
if (CurrentFinalizedIndex >= ToBeFinalizedLength)
growToBeFinalizedQueue();
@@ -191,8 +192,8 @@
CurrentIndex = NewIndex;
for (uint32 i = 0; i < CurrentFinalizedIndex; ++i) {
- gc* obj = ToBeFinalized[i];
- obj->markAndTrace();
+ Collector::markAndTrace((void*)&ToBeFinalized,
+ (void**)(ToBeFinalized + i));
}
}
@@ -202,20 +203,20 @@
return 0;
}
- gc* referent = vm->getReferent(reference);
+ gc** referent = vm->getReferent(reference);
if (!referent) return 0;
if (semantics == SOFT) {
// TODO: are we are out of memory? Consider that we always are for now.
if (false) {
- referent->markAndTrace();
+ Collector::markAndTrace((void*)reference, (void**)referent);
}
} else if (semantics == PHANTOM) {
// Nothing to do.
}
- if (Collector::isLive(referent)) {
+ if (Collector::isLive(*referent)) {
return reference;
} else {
vm->clearReferent(reference);
Modified: vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp?rev=85214&r1=85213&r2=85214&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Tue Oct 27 04:01:16 2009
@@ -29,13 +29,13 @@
// N3 Objects
void VMObject::_trace(VMObject *self) {
- self->lockObj->MARK_AND_TRACE;
+ mvm::Collector::markAndTrace(self, &self->lockObj);
}
#define TRACE_VECTOR(type, name, alloc) { \
for (std::vector<type, alloc<type> >::iterator i = name.begin(), e = name.end(); \
i!= e; ++i) { \
- (*i)->MARK_AND_TRACE; }}
+ mvm::Collector::markAndTraceRoot(&(*i)); }}
#define CALL_TRACER_VECTOR(type, name, alloc) { \
for (std::vector<type, alloc<type> >::iterator i = name.begin(), e = name.end(); \
@@ -44,8 +44,8 @@
// internal objects
void VMThread::TRACER {
- ooo_appThread->MARK_AND_TRACE;
- ooo_pendingException->MARK_AND_TRACE;
+ mvm::Collector::markAndTraceRoot(&ooo_appThread);
+ mvm::Collector::markAndTraceRoot(&ooo_pendingException);
// I suppose that the vm is already traced by the gc
// vm->CALL_TRACER;
}
@@ -63,11 +63,11 @@
void Assembly::TRACER {
loadedNameClasses->CALL_TRACER;
- ooo_delegatee->MARK_AND_TRACE;
+ mvm::Collector::markAndTraceRoot(&ooo_delegatee);
}
void VMCommonClass::TRACER {
- ooo_delegatee->MARK_AND_TRACE;
+ mvm::Collector::markAndTraceRoot(&ooo_delegatee);
CALL_TRACER_VECTOR(VMMethod*, virtualMethods, std::allocator);
CALL_TRACER_VECTOR(VMMethod*, staticMethods, std::allocator);
CALL_TRACER_VECTOR(Property*, properties, gc_allocator);
@@ -75,8 +75,8 @@
void VMClass::TRACER {
VMCommonClass::CALL_TRACER;
- staticInstance->MARK_AND_TRACE;
- virtualInstance->MARK_AND_TRACE;
+ mvm::Collector::markAndTraceRoot(&staticInstance);
+ mvm::Collector::markAndTraceRoot(&virtualInstance);
}
void VMGenericClass::TRACER {
@@ -92,7 +92,7 @@
}
void VMMethod::TRACER {
- ooo_delegatee->MARK_AND_TRACE;
+ mvm::Collector::markAndTraceRoot(&ooo_delegatee);
}
void VMGenericMethod::TRACER {
@@ -100,7 +100,7 @@
}
void Property::TRACER {
- ooo_delegatee->MARK_AND_TRACE;
+ mvm::Collector::markAndTraceRoot(&ooo_delegatee);
}
// useless (never called or used) but it simplifies the definition of LockedMap
More information about the vmkit-commits
mailing list