Example #1
0
/*
 * Visits roots.  TODO: visit cached global references.
 */
void dvmVisitRoots(RootVisitor *visitor, void *arg)
{
    assert(visitor != NULL);
    //u4 t0 = dvmGetRelativeTimeMsec();

#ifndef FASTIVA_PRELOAD_STATIC_INSTANCE
    visitHashTable(visitor, gDvm.loadedClasses, ROOT_STICKY_CLASS, arg);
    visitPrimitiveTypes(visitor, arg);
#endif
    if (gDvm.dbgRegistry != NULL) {
        visitHashTable(visitor, gDvm.dbgRegistry, ROOT_DEBUGGER, arg);
    }
    if (gDvm.literalStrings != NULL) {
        visitHashTable(visitor, gDvm.literalStrings, ROOT_INTERNED_STRING, arg);
    }
    dvmLockMutex(&gDvm.jniGlobalRefLock);
    visitIndirectRefTable(visitor, &gDvm.jniGlobalRefTable, 0, ROOT_JNI_GLOBAL, arg);
    dvmUnlockMutex(&gDvm.jniGlobalRefLock);
    dvmLockMutex(&gDvm.jniPinRefLock);
    visitReferenceTable(visitor, &gDvm.jniPinRefTable, 0, ROOT_VM_INTERNAL, arg);
    dvmUnlockMutex(&gDvm.jniPinRefLock);
    visitThreads(visitor, arg);
    (*visitor)(&gDvm.outOfMemoryObj, 0, ROOT_VM_INTERNAL, arg);
    (*visitor)(&gDvm.internalErrorObj, 0, ROOT_VM_INTERNAL, arg);
    (*visitor)(&gDvm.noClassDefFoundErrorObj, 0, ROOT_VM_INTERNAL, arg);
#ifdef FASTIVA
	(*visitor)(&kernelData.g_pAnnotationsList, 0, ROOT_VM_INTERNAL, arg);
#endif
}
Example #2
0
/*
 * Visits roots.  TODO: visit all roots.
 */
void dvmVisitRoots(Visitor *visitor, void *arg)
{
    assert(visitor != NULL);
    visitHashTable(visitor, gDvm.loadedClasses, arg);
    visitHashTable(visitor, gDvm.dbgRegistry, arg);
    visitHashTable(visitor, gDvm.internedStrings, arg);
    visitHashTable(visitor, gDvm.literalStrings, arg);
    visitReferenceTable(visitor, &gDvm.jniGlobalRefTable, arg);
    visitReferenceTable(visitor, &gDvm.jniPinRefTable, arg);
    visitLargeHeapRefTable(visitor, gDvm.gcHeap->referenceOperations, arg);
    visitLargeHeapRefTable(visitor, gDvm.gcHeap->pendingFinalizationRefs, arg);
    visitThreads(visitor, arg);
    (*visitor)(&gDvm.outOfMemoryObj, arg);
    (*visitor)(&gDvm.internalErrorObj, arg);
    (*visitor)(&gDvm.noClassDefFoundErrorObj, arg);
    /* TODO: visit cached global references. */
}