001 /*
002 * This file is part of the Jikes RVM project (http://jikesrvm.org).
003 *
004 * This file is licensed to You under the Eclipse Public License (EPL);
005 * You may not use this file except in compliance with the License. You
006 * may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/eclipse-1.0.php
009 *
010 * See the COPYRIGHT.txt file distributed with this work for information
011 * regarding copyright ownership.
012 */
013 package org.mmtk.vm;
014
015 import org.mmtk.plan.Plan;
016 import org.mmtk.plan.CollectorContext;
017 import org.mmtk.plan.MutatorContext;
018 import org.mmtk.plan.PlanConstraints;
019
020 import org.mmtk.utility.Log;
021
022 import org.vmmagic.pragma.*;
023
024 /**
025 * Stub to give access to plan local, constraint and global instances
026 */
027 @Uninterruptible public abstract class ActivePlan {
028
029 /** @return The active Plan instance. */
030 public abstract Plan global();
031
032 /** @return The active PlanConstraints instance. */
033 public abstract PlanConstraints constraints();
034
035 /** @return The active <code>CollectorContext</code> instance. */
036 public abstract CollectorContext collector();
037
038 /** @return Is the active thread a mutator thread. */
039 public abstract boolean isMutator();
040
041 /** @return The active <code>MutatorContext</code> instance. */
042 public abstract MutatorContext mutator();
043
044 /** @return The log for the active thread */
045 public abstract Log log();
046
047 /** @return The maximum number of collector threads that may participate in parallel GC. */
048 public abstract int collectorCount();
049
050 /** Reset the mutator iterator */
051 public abstract void resetMutatorIterator();
052
053 /**
054 * Return the next <code>MutatorContext</code> in a
055 * synchronized iteration of all mutators.
056 *
057 * @return The next <code>MutatorContext</code> in a
058 * synchronized iteration of all mutators, or
059 * <code>null</code> when all mutators have been done.
060 */
061 public abstract MutatorContext getNextMutator();
062 }