blob: 505fa91eee516c669f7932ec2cf0dd1f40917d03 [file] [log] [blame]
//===-------- Scanning.cpp - Implementation of the Scanning class --------===//
//
// The VMKit project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "debug.h"
#include "vmkit/VirtualMachine.h"
#include "MMTkObject.h"
#include "VmkitGC.h"
namespace mmtk {
extern "C" void Java_org_j3_mmtk_Scanning_computeThreadRoots__Lorg_mmtk_plan_TraceLocal_2 (MMTkObject* Scanning, MMTkObject* TL) {
// When entering this function, all threads are waiting on the rendezvous to
// finish.
vmkit::Thread* th = vmkit::Thread::get();
vmkit::Thread* tcur = th;
do {
tcur->scanStack(reinterpret_cast<word_t>(TL));
tcur = (vmkit::Thread*)tcur->next();
} while (tcur != th);
}
extern "C" void Java_org_j3_mmtk_Scanning_computeGlobalRoots__Lorg_mmtk_plan_TraceLocal_2 (MMTkObject* Scanning, MMTkObject* TL) {
vmkit::Thread::get()->MyVM->tracer(reinterpret_cast<word_t>(TL));
vmkit::Thread* th = vmkit::Thread::get();
vmkit::Thread* tcur = th;
do {
tcur->tracer(reinterpret_cast<word_t>(TL));
tcur = (vmkit::Thread*)tcur->next();
} while (tcur != th);
}
extern "C" void Java_org_j3_mmtk_Scanning_computeStaticRoots__Lorg_mmtk_plan_TraceLocal_2 (MMTkObject* Scanning, MMTkObject* TL) {
// Nothing to do.
}
extern "C" void Java_org_j3_mmtk_Scanning_resetThreadCounter__ (MMTkObject* Scanning) {
// Nothing to do.
}
extern "C" void Java_org_j3_mmtk_Scanning_specializedScanObject__ILorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 (MMTkObject* Scanning, uint32_t id, MMTkObject* TC, gc* obj) ALWAYS_INLINE;
extern "C" void Java_org_j3_mmtk_Scanning_specializedScanObject__ILorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 (MMTkObject* Scanning, uint32_t id, MMTkObject* TC, gc* obj) {
vmkit::Thread::get()->MyVM->traceObject(obj, reinterpret_cast<word_t>(TC));
}
extern "C" void Java_org_j3_mmtk_Scanning_preCopyGCInstances__Lorg_mmtk_plan_TraceLocal_2 (MMTkObject* Scanning, MMTkObject* TL) {
// Nothing to do, there are no GC objects on which the GC depends.
}
extern "C" void Java_org_j3_mmtk_Scanning_scanObject__Lorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 (
MMTkObject* Scanning, word_t TC, gc* obj) {
vmkit::Thread::get()->MyVM->traceObject(obj, TC);
}
extern "C" void Java_org_j3_mmtk_Scanning_precopyChildren__Lorg_mmtk_plan_TraceLocal_2Lorg_vmmagic_unboxed_ObjectReference_2 (
MMTkObject* Scanning, MMTkObject TL, word_t ref) { UNIMPLEMENTED(); }
}