[vmkit-commits] [vmkit] r85213 - in /vmkit/trunk/mmtk/mmtk-j3: Collection.cpp Scanning.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Oct 27 02:00:11 PDT 2009
Author: geoffray
Date: Tue Oct 27 04:00:10 2009
New Revision: 85213
URL: http://llvm.org/viewvc/llvm-project?rev=85213&view=rev
Log:
Implement some functions.
Modified:
vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp
Modified: vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Collection.cpp?rev=85213&r1=85212&r2=85213&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Collection.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Collection.cpp Tue Oct 27 04:00:10 2009
@@ -47,12 +47,14 @@
// Nothing to do.
}
+extern "C" void Java_org_j3_mmtk_Collection_prepareMutator__Lorg_mmtk_plan_MutatorContext_2 (JavaObject* C, JavaObject* MC) {
+}
+
extern "C" void Java_org_j3_mmtk_Collection_joinCollection__ () { JavaThread::get()->printBacktrace(); abort(); }
extern "C" void Java_org_j3_mmtk_Collection_reportPhysicalAllocationFailed__ () { JavaThread::get()->printBacktrace(); abort(); }
extern "C" void Java_org_j3_mmtk_Collection_triggerAsyncCollection__I () { JavaThread::get()->printBacktrace(); abort(); }
extern "C" void Java_org_j3_mmtk_Collection_noThreadsInGC__ () { JavaThread::get()->printBacktrace(); abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_prepareMutator__Lorg_mmtk_plan_MutatorContext_2 () { JavaThread::get()->printBacktrace(); abort(); }
extern "C" void Java_org_j3_mmtk_Collection_activeGCThreads__ () { JavaThread::get()->printBacktrace(); abort(); }
extern "C" void Java_org_j3_mmtk_Collection_activeGCThreadOrdinal__ () { JavaThread::get()->printBacktrace(); abort(); }
extern "C" void Java_org_j3_mmtk_Collection_requestMutatorFlush__ () { JavaThread::get()->printBacktrace(); abort(); }
Modified: vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp?rev=85213&r1=85212&r2=85213&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp Tue Oct 27 04:00:10 2009
@@ -12,12 +12,29 @@
using namespace jnjvm;
-extern "C" void Java_org_j3_mmtk_Scanning_computeThreadRoots__Lorg_mmtk_plan_TraceLocal_2 (JavaObject* Scanning, JavaObject* TraceLocal) {
- JavaThread::get()->printBacktrace(); abort();
+extern "C" void Java_org_j3_mmtk_Scanning_computeThreadRoots__Lorg_mmtk_plan_TraceLocal_2 (JavaObject* Scanning, JavaObject* TL) {
+ mvm::Collector::TraceLocal = (uintptr_t)TL;
+ mvm::Thread* th = mvm::Thread::get();
+ th->inGC = true;
+ th->MyVM->startCollection();
+ th->MyVM->rendezvous.synchronize();
}
-extern "C" void Java_org_j3_mmtk_Scanning_computeGlobalRoots__Lorg_mmtk_plan_TraceLocal_2 () {
- JavaThread::get()->printBacktrace(); abort();
+extern "C" void Java_org_j3_mmtk_Scanning_computeGlobalRoots__Lorg_mmtk_plan_TraceLocal_2 (JavaObject* Scanning, JavaObject* TL) {
+
+ assert(mvm::Collector::TraceLocal == (uintptr_t)TL && "Mismatch in trace local");
+
+ mvm::Thread* th = mvm::Thread::get();
+ mvm::Thread* tcur = th;
+
+ // (1) Trace the VM.
+ th->MyVM->tracer();
+
+ // (2) Trace the threads.
+ do {
+ tcur->tracer();
+ tcur = (mvm::Thread*)tcur->next();
+ } while (tcur != th);
}
extern "C" void Java_org_j3_mmtk_Scanning_computeStaticRoots__Lorg_mmtk_plan_TraceLocal_2 () {
More information about the vmkit-commits
mailing list