org.mmtk.policy
Class LargeObjectLocal

java.lang.Object
  extended by org.mmtk.utility.alloc.Allocator
      extended by org.mmtk.utility.alloc.LargeObjectAllocator
          extended by org.mmtk.policy.LargeObjectLocal
All Implemented Interfaces:
Constants

public final class LargeObjectLocal
extends LargeObjectAllocator
implements Constants

Each instance of this class is intended to provide fast, unsynchronized access to a treadmill. Therefore instances must not be shared across truly concurrent threads (CPUs). Rather, one or more instances of this class should be bound to each CPU. The shared VMResource used by each instance is the point of global synchronization, and synchronization only occurs at the granularity of acquiring (and releasing) chunks of memory from the VMResource.

If there are C CPUs and T TreadmillSpaces, there must be C X T instances of this class, one for each CPU, TreadmillSpace pair.


Field Summary
 
Fields inherited from class org.mmtk.utility.alloc.LargeObjectAllocator
space
 
Fields inherited from interface org.mmtk.utility.Constants
ALIGNMENT_VALUE, ARRAY_ELEMENT, BITS_IN_ADDRESS, BITS_IN_BYTE, BITS_IN_CHAR, BITS_IN_INT, BITS_IN_PAGE, BITS_IN_SHORT, BITS_IN_WORD, BYTES_IN_ADDRESS, BYTES_IN_BYTE, BYTES_IN_CHAR, BYTES_IN_INT, BYTES_IN_KBYTE, BYTES_IN_MBYTE, BYTES_IN_PAGE, BYTES_IN_SHORT, BYTES_IN_WORD, CARD_MASK, CARD_META_PAGES_PER_REGION, INSTANCE_FIELD, LOG_BITS_IN_ADDRESS, LOG_BITS_IN_BYTE, LOG_BITS_IN_CHAR, LOG_BITS_IN_INT, LOG_BITS_IN_PAGE, LOG_BITS_IN_SHORT, LOG_BITS_IN_WORD, LOG_BYTES_IN_ADDRESS, LOG_BYTES_IN_ADDRESS_SPACE, LOG_BYTES_IN_BYTE, LOG_BYTES_IN_CHAR, LOG_BYTES_IN_INT, LOG_BYTES_IN_KBYTE, LOG_BYTES_IN_MBYTE, LOG_BYTES_IN_PAGE, LOG_BYTES_IN_SHORT, LOG_BYTES_IN_WORD, LOG_CARD_BYTES, LOG_CARD_GRAIN, LOG_CARD_META_BYTES, LOG_CARD_META_PAGES, LOG_CARD_META_SIZE, LOG_CARD_UNITS, LOG_MIN_ALIGNMENT, MAX_ALIGNMENT, MAX_BYTES_PADDING, MAX_INT, MIN_ALIGNMENT, MIN_INT, SUPPORT_CARD_SCANNING
 
Constructor Summary
LargeObjectLocal(BaseLargeObjectSpace space)
          Constructor
 
Method Summary
 void gcspyGatherData(int event, TreadmillDriver losDriver)
          Gather data for GCSpy from the nursery
 void gcspyGatherData(int event, TreadmillDriver losDriver, boolean tospace)
          Gather data for GCSpy for an older space
 void prepare(boolean fullHeap)
          Prepare for a collection.
 void release(boolean fullHeap)
          Finish up after a collection.
 
Methods inherited from class org.mmtk.utility.alloc.LargeObjectAllocator
alloc, allocSlowOnce, getSpace, show
 
Methods inherited from class org.mmtk.utility.alloc.Allocator
alignAllocation, alignAllocation, alignAllocationNoFill, allocSlow, allocSlowInline, determineCollectionAttempts, fillAlignmentGap, getMaximumAlignedSize, getMaximumAlignedSize
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LargeObjectLocal

public LargeObjectLocal(BaseLargeObjectSpace space)
Constructor

Parameters:
space - The treadmill space to which this thread instance is bound.
Method Detail

prepare

public void prepare(boolean fullHeap)
Prepare for a collection. Clear the treadmill to-space head and prepare the collector. If paranoid, perform a sanity check.


release

public void release(boolean fullHeap)
Finish up after a collection.


gcspyGatherData

public void gcspyGatherData(int event,
                            TreadmillDriver losDriver)
Gather data for GCSpy from the nursery

Parameters:
event - the gc event
losDriver - the GCSpy space driver

gcspyGatherData

public void gcspyGatherData(int event,
                            TreadmillDriver losDriver,
                            boolean tospace)
Gather data for GCSpy for an older space

Parameters:
event - the gc event
losDriver - the GCSpy space driver
tospace - gather from tospace?