blob: c1343037bddd099bfc83216ae8218ca6092171d4 [file] [log] [blame]
//===------ ActivePlan.cpp - Implementation of the ActivePlan class ------===//
//
// The VMKit project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#include "JavaClass.h"
#include "JavaObject.h"
#include "JavaThread.h"
using namespace j3;
struct ActivePlan {
JavaObject obj;
mvm::MutatorThread* next;
};
extern "C" JavaObject* Java_org_j3_mmtk_ActivePlan_getNextMutator__ (ActivePlan* A) {
assert(A && "No active plan");
if (A->next == 0) A->next = (mvm::MutatorThread*)JavaThread::get()->MyVM->mainThread;
else if (A->next->next() != JavaThread::get()->MyVM->mainThread) {
A->next = 0;
return 0;
}
else A->next = (mvm::MutatorThread*)A->next->next();
return (JavaObject*)A->next->MutatorContext;
}
extern "C" void Java_org_j3_mmtk_ActivePlan_resetMutatorIterator__ (ActivePlan* A) {
A->next = 0;
}
extern "C" void Java_org_j3_mmtk_ActivePlan_collectorCount__ () { JavaThread::get()->printBacktrace(); abort(); }