//===- FinalizableProcessor.cpp -------------------------------------------===//
//===- Implementation of the FinalizableProcessor class  ------------------===//
//
//                              The VMKit project
//
// This file is distributed under the University of Illinois Open Source 
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#include "JavaObject.h"
#include "JavaThread.h"

using namespace j3;

extern "C" void Java_org_j3_mmtk_FinalizableProcessor_clear__ () {
  JavaThread::get()->printBacktrace(); abort();
}

extern "C" void
Java_org_j3_mmtk_FinalizableProcessor_forward__Lorg_mmtk_plan_TraceLocal_2Z () {
  JavaThread::get()->printBacktrace(); abort();
}

extern "C" void
Java_org_j3_mmtk_FinalizableProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z (JavaObject* FP, JavaObject* TL, uint8_t nursery) {
  assert(mvm::Collector::TraceLocal == (uintptr_t)TL && "Mismatch in trace local");
  
  mvm::Thread* th = mvm::Thread::get();
  th->MyVM->scanFinalizationQueue();
}
