void MemoryManager::collect() { if (!RuntimeOption::EvalEnableGC || empty()) return; Marker mkr; mkr.init(); mkr.trace(); mkr.sweep(); }
void MemoryManager::traceHeap() { if (!RuntimeOption::EvalTraceHeap) return; if (empty()) return; Marker mkr; mkr.init(); mkr.trace(); mkr.sweep(); }
void collectImpl(const char* phase) { VMRegAnchor _; if (t_eager_gc && RuntimeOption::EvalFilterGCPoints) { t_eager_gc = false; auto pc = vmpc(); if (t_surprise_filter.test(pc)) return; t_surprise_filter.insert(pc); TRACE(2, "eager gc %s at %p\n", phase, pc); } else { TRACE(2, "normal gc %s at %p\n", phase, vmpc()); } Marker mkr; mkr.init(); mkr.trace(); mkr.sweep(); }