From: <jik...@li...> - 2014-07-19 11:49:57
|
details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/b8cfa12c7268 changeset: 10801:b8cfa12c7268 user: Erik Brangs <eri...@gm...> date: Sat Jul 19 11:25:10 2014 +0200 description: RVM-1079 : Convert TracingConstants to a class. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/e30986ba36bc changeset: 10802:e30986ba36bc user: Erik Brangs <eri...@gm...> date: Sat Jul 19 11:27:33 2014 +0200 description: RVM-1079 : Convert StreamConstants to a class. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/c1e67ead1b8c changeset: 10803:c1e67ead1b8c user: Erik Brangs <eri...@gm...> date: Sat Jul 19 10:00:43 2014 +0200 description: RVM-1079 : Mark the constant interface GCSpyPlan as deprecated. IMHO GCSpyPlan does not really seem to fit the current design of MMTk where variables for spaces are kept in the respective plan classes. On the other hand, I don't think that a conversion of GCSpyPlan to a constant class would improve the design. Therefore, I've elected to mark the class as deprecated which will make sure that it jumps out as problem if anybody works on updating GCSpy. details: http://hg.code.sourceforge.net/p/jikesrvm/code/rev/f8be84d127e1 changeset: 10804:f8be84d127e1 user: Erik Brangs <eri...@gm...> date: Sat Jul 19 11:39:35 2014 +0200 description: RVM-1079 : Convert org.mmtk.utility.Constants to a class. diffstat: MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java | 2 + MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Collection.java | 2 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Memory.java | 6 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ObjectModel.java | 2 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java | 5 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanStatics.java | 5 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Scanning.java | 5 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java | 3 +- MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/Util.java | 3 +- MMTk/harness/src/org/mmtk/harness/Mutator.java | 11 +- MMTk/src/org/mmtk/plan/CollectorContext.java | 3 +- MMTk/src/org/mmtk/plan/ComplexPhase.java | 4 +- MMTk/src/org/mmtk/plan/ConcurrentPhase.java | 4 +- MMTk/src/org/mmtk/plan/GCspyPlan.java | 8 +- MMTk/src/org/mmtk/plan/MutatorContext.java | 3 +- MMTk/src/org/mmtk/plan/ParallelCollectorGroup.java | 4 +- MMTk/src/org/mmtk/plan/Phase.java | 3 +- MMTk/src/org/mmtk/plan/Plan.java | 5 +- MMTk/src/org/mmtk/plan/Simple.java | 3 +- MMTk/src/org/mmtk/plan/SimplePhase.java | 4 +- MMTk/src/org/mmtk/plan/Trace.java | 3 +- MMTk/src/org/mmtk/plan/TraceLocal.java | 3 +- MMTk/src/org/mmtk/plan/concurrent/ConcurrentMutator.java | 2 + MMTk/src/org/mmtk/plan/generational/Gen.java | 2 + MMTk/src/org/mmtk/plan/generational/GenMutator.java | 1 + MMTk/src/org/mmtk/plan/generational/GenNurseryTraceLocal.java | 2 + MMTk/src/org/mmtk/plan/refcount/RCDecBuffer.java | 3 +- MMTk/src/org/mmtk/plan/refcount/RCHeader.java | 5 +- MMTk/src/org/mmtk/plan/semispace/gctrace/GCTraceMutator.java | 2 + MMTk/src/org/mmtk/policy/BaseLargeObjectSpace.java | 5 +- MMTk/src/org/mmtk/policy/CopySpace.java | 6 +- MMTk/src/org/mmtk/policy/ExplicitFreeListLocal.java | 3 +- MMTk/src/org/mmtk/policy/ExplicitFreeListSpace.java | 3 +- MMTk/src/org/mmtk/policy/ExplicitLargeObjectSpace.java | 2 + MMTk/src/org/mmtk/policy/ImmortalSpace.java | 6 +- MMTk/src/org/mmtk/policy/LargeObjectLocal.java | 3 +- MMTk/src/org/mmtk/policy/LargeObjectSpace.java | 2 + MMTk/src/org/mmtk/policy/MarkCompactSpace.java | 4 +- MMTk/src/org/mmtk/policy/MarkSweepLocal.java | 3 +- MMTk/src/org/mmtk/policy/MarkSweepSpace.java | 3 +- MMTk/src/org/mmtk/policy/RawPageSpace.java | 3 +- MMTk/src/org/mmtk/policy/SegregatedFreeListSpace.java | 5 +- MMTk/src/org/mmtk/policy/Space.java | 5 +- MMTk/src/org/mmtk/policy/immix/Block.java | 5 +- MMTk/src/org/mmtk/policy/immix/Chunk.java | 4 +- MMTk/src/org/mmtk/policy/immix/ChunkList.java | 6 +- MMTk/src/org/mmtk/policy/immix/CollectorLocal.java | 3 +- MMTk/src/org/mmtk/policy/immix/Defrag.java | 4 +- MMTk/src/org/mmtk/policy/immix/ImmixSpace.java | 4 +- MMTk/src/org/mmtk/policy/immix/Line.java | 3 +- MMTk/src/org/mmtk/policy/immix/MutatorLocal.java | 4 +- MMTk/src/org/mmtk/utility/BaseGenericFreeList.java | 2 +- MMTk/src/org/mmtk/utility/Constants.java | 105 +++++---- MMTk/src/org/mmtk/utility/Conversions.java | 4 +- MMTk/src/org/mmtk/utility/DoublyLinkedList.java | 4 +- MMTk/src/org/mmtk/utility/GenericFreeList.java | 2 +- MMTk/src/org/mmtk/utility/Log.java | 4 +- MMTk/src/org/mmtk/utility/Memory.java | 4 +- MMTk/src/org/mmtk/utility/SimpleHashtable.java | 4 +- MMTk/src/org/mmtk/utility/TraceGenerator.java | 17 +- MMTk/src/org/mmtk/utility/TracingConstants.java | 46 ++-- MMTk/src/org/mmtk/utility/Treadmill.java | 2 +- MMTk/src/org/mmtk/utility/alloc/Allocator.java | 4 +- MMTk/src/org/mmtk/utility/alloc/BlockAllocator.java | 4 +- MMTk/src/org/mmtk/utility/alloc/BumpPointer.java | 13 +- MMTk/src/org/mmtk/utility/alloc/EmbeddedMetaData.java | 4 +- MMTk/src/org/mmtk/utility/alloc/ImmixAllocator.java | 3 +- MMTk/src/org/mmtk/utility/alloc/LargeObjectAllocator.java | 5 +- MMTk/src/org/mmtk/utility/alloc/SegregatedFreeList.java | 3 +- MMTk/src/org/mmtk/utility/alloc/SegregatedFreeListLocal.java | 4 +- MMTk/src/org/mmtk/utility/deque/AddressDeque.java | 5 +- MMTk/src/org/mmtk/utility/deque/AddressPairDeque.java | 9 +- MMTk/src/org/mmtk/utility/deque/AddressTripleDeque.java | 7 +- MMTk/src/org/mmtk/utility/deque/Deque.java | 4 +- MMTk/src/org/mmtk/utility/deque/LocalDeque.java | 5 +- MMTk/src/org/mmtk/utility/deque/LocalQueue.java | 4 +- MMTk/src/org/mmtk/utility/deque/LocalSSB.java | 4 +- MMTk/src/org/mmtk/utility/deque/ObjectReferenceBuffer.java | 3 +- MMTk/src/org/mmtk/utility/deque/ObjectReferenceDeque.java | 5 +- MMTk/src/org/mmtk/utility/deque/SharedDeque.java | 5 +- MMTk/src/org/mmtk/utility/deque/SortSharedDeque.java | 2 + MMTk/src/org/mmtk/utility/deque/SortTODAddressStack.java | 5 +- MMTk/src/org/mmtk/utility/deque/SortTODObjectReferenceStack.java | 5 +- MMTk/src/org/mmtk/utility/deque/TraceBuffer.java | 19 +- MMTk/src/org/mmtk/utility/deque/WriteBuffer.java | 5 +- MMTk/src/org/mmtk/utility/gcspy/StreamConstants.java | 36 +- MMTk/src/org/mmtk/utility/heap/FreeListPageResource.java | 5 +- MMTk/src/org/mmtk/utility/heap/HeapGrowthManager.java | 4 +- MMTk/src/org/mmtk/utility/heap/Map.java | 11 +- MMTk/src/org/mmtk/utility/heap/Mmapper.java | 2 +- MMTk/src/org/mmtk/utility/heap/MonotonePageResource.java | 2 + MMTk/src/org/mmtk/utility/heap/PageResource.java | 3 +- MMTk/src/org/mmtk/utility/heap/SpaceDescriptor.java | 5 +- MMTk/src/org/mmtk/utility/heap/VMRequest.java | 4 +- MMTk/src/org/mmtk/utility/options/TraceRate.java | 5 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityChecker.java | 3 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityCheckerLocal.java | 3 +- MMTk/src/org/mmtk/utility/sanitychecker/SanityDataTable.java | 5 +- MMTk/src/org/mmtk/vm/Scanning.java | 3 +- rvm/src/org/jikesrvm/classloader/RVMArray.java | 7 + rvm/src/org/jikesrvm/compilers/baseline/ia32/BaselineCompilerImpl.java | 5 + rvm/src/org/jikesrvm/compilers/baseline/ppc/BaselineCompilerImpl.java | 4 + rvm/src/org/jikesrvm/mm/mminterface/Barriers.java | 8 +- rvm/src/org/jikesrvm/mm/mminterface/DebugUtil.java | 2 +- rvm/src/org/jikesrvm/mm/mminterface/MemoryManager.java | 4 +- rvm/src/org/jikesrvm/mm/mminterface/Monitor.java | 3 +- 106 files changed, 348 insertions(+), 291 deletions(-) diffs (truncated from 2478 to 300 lines): diff --git a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java --- a/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java +++ b/MMTk/ext/vm/harness/org/mmtk/harness/vm/Scanning.java @@ -12,6 +12,8 @@ */ package org.mmtk.harness.vm; +import static org.mmtk.utility.Constants.LOG_BYTES_IN_ADDRESS; + import java.util.concurrent.BlockingQueue; import org.mmtk.harness.Mutator; diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Collection.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Collection.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Collection.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Collection.java @@ -31,7 +31,7 @@ import org.vmmagic.unboxed.Address; @Uninterruptible -public class Collection extends org.mmtk.vm.Collection implements org.mmtk.utility.Constants { +public class Collection extends org.mmtk.vm.Collection { /**************************************************************************** * diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Memory.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Memory.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Memory.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Memory.java @@ -16,8 +16,9 @@ import static org.jikesrvm.HeapLayoutConstants.BOOT_IMAGE_DATA_START; import static org.jikesrvm.HeapLayoutConstants.MAXIMUM_MAPPABLE; +import static org.mmtk.utility.Constants.LOG_BYTES_IN_MBYTE; + import org.mmtk.policy.ImmortalSpace; -import org.mmtk.utility.Constants; import org.mmtk.utility.heap.VMRequest; import org.jikesrvm.VM; @@ -29,8 +30,7 @@ import org.vmmagic.unboxed.*; import org.vmmagic.pragma.*; -@Uninterruptible public class Memory extends org.mmtk.vm.Memory - implements Constants { +@Uninterruptible public class Memory extends org.mmtk.vm.Memory { @Override protected final Address getHeapStartConstant() { return BOOT_IMAGE_DATA_START; } diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ObjectModel.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ObjectModel.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ObjectModel.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ObjectModel.java @@ -33,7 +33,7 @@ import org.vmmagic.unboxed.Offset; import org.vmmagic.unboxed.Word; -@Uninterruptible public final class ObjectModel extends org.mmtk.vm.ObjectModel implements org.mmtk.utility.Constants { +@Uninterruptible public final class ObjectModel extends org.mmtk.vm.ObjectModel { @Override protected Offset getArrayBaseOffset() { return JavaHeaderConstants.ARRAY_BASE_OFFSET; } diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java @@ -12,9 +12,10 @@ */ package org.jikesrvm.mm.mmtk; +import static org.mmtk.utility.Constants.*; + import org.mmtk.plan.CollectorContext; import org.mmtk.plan.TraceLocal; -import org.mmtk.utility.Constants; import org.mmtk.utility.Log; import org.jikesrvm.VM; import org.jikesrvm.runtime.BootRecord; @@ -27,7 +28,7 @@ /** * Scan the boot image for references using the boot image reference map */ -public class ScanBootImage implements Constants { +public class ScanBootImage { private static final boolean DEBUG = false; private static final boolean FILTER = true; diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanStatics.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanStatics.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanStatics.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanStatics.java @@ -12,9 +12,10 @@ */ package org.jikesrvm.mm.mmtk; +import static org.jikesrvm.SizeConstants.LOG_BYTES_IN_INT; + import org.mmtk.plan.CollectorContext; import org.mmtk.plan.TraceLocal; -import org.mmtk.utility.Constants; import org.mmtk.utility.Log; import org.jikesrvm.VM; import org.jikesrvm.runtime.Statics; @@ -28,7 +29,7 @@ /** * Class that determines all JTOC slots (statics) that hold references */ -public final class ScanStatics implements Constants { +public final class ScanStatics { /** * Size in 32bits words of a JTOC slot (ie 32bit addresses = 1, * 64bit addresses =2) diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Scanning.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Scanning.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Scanning.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Scanning.java @@ -12,10 +12,11 @@ */ package org.jikesrvm.mm.mmtk; +import static org.jikesrvm.SizeConstants.LOG_BYTES_IN_ADDRESS; + import org.mmtk.plan.CollectorContext; import org.mmtk.plan.TraceLocal; import org.mmtk.plan.TransitiveClosure; -import org.mmtk.utility.Constants; import org.jikesrvm.VM; import org.jikesrvm.compilers.common.CompiledMethods; @@ -33,7 +34,7 @@ import org.vmmagic.pragma.*; @Uninterruptible -public final class Scanning extends org.mmtk.vm.Scanning implements Constants { +public final class Scanning extends org.mmtk.vm.Scanning { /**************************************************************************** * * Class variables diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/Statistics.java @@ -12,7 +12,6 @@ */ package org.jikesrvm.mm.mmtk; -import org.mmtk.utility.Constants; import org.mmtk.utility.statistics.PerfEvent; import org.jikesrvm.runtime.Time; import static org.jikesrvm.runtime.SysCall.sysCall; @@ -20,7 +19,7 @@ import org.vmmagic.pragma.*; @Uninterruptible -public final class Statistics extends org.mmtk.vm.Statistics implements Constants { +public final class Statistics extends org.mmtk.vm.Statistics { /** * Read nanoTime (high resolution, monotonically increasing clock). diff --git a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/Util.java b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/Util.java --- a/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/Util.java +++ b/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/gcspy/Util.java @@ -12,7 +12,6 @@ */ package org.jikesrvm.mm.mmtk.gcspy; -import org.mmtk.utility.Constants; import org.mmtk.utility.Log; import org.mmtk.plan.Plan; import org.mmtk.vm.VM; @@ -29,7 +28,7 @@ /** * This class provides generally useful methods. */ -@Uninterruptible public class Util extends org.mmtk.vm.gcspy.Util implements Constants { +@Uninterruptible public class Util extends org.mmtk.vm.gcspy.Util { private static final boolean DEBUG_ = false; public static final int KILOBYTE = 1024; public static final int MEGABYTE = 1024 * 1024; diff --git a/MMTk/harness/src/org/mmtk/harness/Mutator.java b/MMTk/harness/src/org/mmtk/harness/Mutator.java --- a/MMTk/harness/src/org/mmtk/harness/Mutator.java +++ b/MMTk/harness/src/org/mmtk/harness/Mutator.java @@ -12,6 +12,8 @@ */ package org.mmtk.harness; +import static org.mmtk.utility.Constants.INSTANCE_FIELD; + import java.util.ArrayDeque; import java.util.Collections; import java.util.Deque; @@ -27,7 +29,6 @@ import org.mmtk.harness.vm.ActivePlan; import org.mmtk.harness.vm.ObjectModel; import org.mmtk.plan.MutatorContext; -import org.mmtk.plan.Plan; import org.mmtk.plan.TraceLocal; import org.vmmagic.unboxed.Address; import org.vmmagic.unboxed.ObjectReference; @@ -293,7 +294,7 @@ Address ref = ObjectModel.getDataSlot(object, index); if (ActivePlan.constraints.needsIntWriteBarrier()) { - context.intWrite(object, ref, value, ref.toWord(), null, Plan.INSTANCE_FIELD); + context.intWrite(object, ref, value, ref.toWord(), null, INSTANCE_FIELD); } else { ref.store(value); } @@ -327,7 +328,7 @@ Clock.start(); if (ActivePlan.constraints.needsObjectReferenceWriteBarrier()) { - context.objectReferenceWrite(object, referenceSlot, value, referenceSlot.toWord(), null, Plan.INSTANCE_FIELD); + context.objectReferenceWrite(object, referenceSlot, value, referenceSlot.toWord(), null, INSTANCE_FIELD); if (gcEveryWB) { gc(); } @@ -355,7 +356,7 @@ Clock.start(); int result; if (ActivePlan.constraints.needsIntReadBarrier()) { - result = context.intRead(object, dataSlot, dataSlot.toWord(), null, Plan.INSTANCE_FIELD); + result = context.intRead(object, dataSlot, dataSlot.toWord(), null, INSTANCE_FIELD); } else { result = dataSlot.loadInt(); } @@ -386,7 +387,7 @@ ObjectReference result; Clock.start(); if (ActivePlan.constraints.needsObjectReferenceReadBarrier()) { - result = context.objectReferenceRead(object, referenceSlot, referenceSlot.toWord(), null, Plan.INSTANCE_FIELD); + result = context.objectReferenceRead(object, referenceSlot, referenceSlot.toWord(), null, INSTANCE_FIELD); } else { result = referenceSlot.loadObjectReference(); } diff --git a/MMTk/src/org/mmtk/plan/CollectorContext.java b/MMTk/src/org/mmtk/plan/CollectorContext.java --- a/MMTk/src/org/mmtk/plan/CollectorContext.java +++ b/MMTk/src/org/mmtk/plan/CollectorContext.java @@ -13,7 +13,6 @@ package org.mmtk.plan; import org.mmtk.utility.alloc.Allocator; -import org.mmtk.utility.Constants; import org.mmtk.utility.Log; import org.mmtk.vm.VM; @@ -65,7 +64,7 @@ * @see Plan */ @Uninterruptible -public abstract class CollectorContext implements Constants { +public abstract class CollectorContext { /**************************************************************************** * Instance fields diff --git a/MMTk/src/org/mmtk/plan/ComplexPhase.java b/MMTk/src/org/mmtk/plan/ComplexPhase.java --- a/MMTk/src/org/mmtk/plan/ComplexPhase.java +++ b/MMTk/src/org/mmtk/plan/ComplexPhase.java @@ -12,7 +12,6 @@ */ package org.mmtk.plan; -import org.mmtk.utility.Constants; import org.mmtk.utility.statistics.Timer; import org.mmtk.utility.Log; import org.mmtk.vm.VM; @@ -26,8 +25,7 @@ * */ @Uninterruptible -public final class ComplexPhase extends Phase - implements Constants { +public final class ComplexPhase extends Phase { /**************************************************************************** * Instance fields diff --git a/MMTk/src/org/mmtk/plan/ConcurrentPhase.java b/MMTk/src/org/mmtk/plan/ConcurrentPhase.java --- a/MMTk/src/org/mmtk/plan/ConcurrentPhase.java +++ b/MMTk/src/org/mmtk/plan/ConcurrentPhase.java @@ -12,7 +12,6 @@ */ package org.mmtk.plan; -import org.mmtk.utility.Constants; import org.mmtk.utility.statistics.Timer; import org.mmtk.utility.Log; import org.mmtk.vm.VM; @@ -25,8 +24,7 @@ * A concurrent phase runs concurrently with mutator activity. */ @Uninterruptible -public final class ConcurrentPhase extends Phase - implements Constants { +public final class ConcurrentPhase extends Phase { /**************************************************************************** * Instance fields diff --git a/MMTk/src/org/mmtk/plan/GCspyPlan.java b/MMTk/src/org/mmtk/plan/GCspyPlan.java --- a/MMTk/src/org/mmtk/plan/GCspyPlan.java +++ b/MMTk/src/org/mmtk/plan/GCspyPlan.java @@ -16,8 +16,14 @@ import org.mmtk.utility.heap.VMRequest; /** - * This interface provides an immortal allocation space for GCspy objects. + * This interface provides an immortal allocation space for GCspy objects.<p> |