void MM_CollectorLanguageInterfaceImpl::markingScheme_masterCleanupAfterGC(MM_EnvironmentBase *env) { OMR_VM_Example *omrVM = (OMR_VM_Example *)env->getOmrVM()->_language_vm; J9HashTableState state; ObjectEntry *rEntry = NULL; rEntry = (ObjectEntry *)hashTableStartDo(omrVM->objectTable, &state); while (rEntry != NULL) { if (!_markingScheme->isMarked(rEntry->objPtr)) { hashTableDoRemove(&state); } rEntry = (ObjectEntry *)hashTableNextDo(&state); } }
void MM_MarkingDelegate::masterCleanupAfterGC(MM_EnvironmentBase *env) { OMRPORT_ACCESS_FROM_OMRVM(env->getOmrVM()); J9HashTableState state; ObjectEntry *objEntry = NULL; OMR_VM_Example *omrVM = (OMR_VM_Example *)env->getOmrVM()->_language_vm; objEntry = (ObjectEntry *)hashTableStartDo(omrVM->objectTable, &state); while (objEntry != NULL) { if (!_markingScheme->isMarked(objEntry->objPtr)) { omrmem_free_memory((void *)objEntry->name); objEntry->name = NULL; hashTableDoRemove(&state); } objEntry = (ObjectEntry *)hashTableNextDo(&state); } }
/** * \brief Remove the current slot in a J9HashTable * \ingroup GC_Structs * * Removes the current slot in a J9HashTable (not valid in Out Of Process) * */ void GC_HashTableIterator::removeSlot() { hashTableDoRemove(&_handle); }