org.mmtk.policy
Class ExplicitLargeObjectSpace

java.lang.Object
  extended by org.mmtk.policy.Space
      extended by org.mmtk.policy.BaseLargeObjectSpace
          extended by org.mmtk.policy.ExplicitLargeObjectSpace
All Implemented Interfaces:
Constants

public final class ExplicitLargeObjectSpace
extends BaseLargeObjectSpace

Each instance of this class corresponds to one explicitly managed large object space.


Nested Class Summary
static class ExplicitLargeObjectSpace.Sweeper
          A callback used to perform sweeping of the large object space.
 
Nested classes/interfaces inherited from class org.mmtk.policy.Space
Space.SpaceVisitor
 
Field Summary
private  DoublyLinkedList cells
           
 
Fields inherited from class org.mmtk.policy.BaseLargeObjectSpace
PAGE_MASK
 
Fields inherited from class org.mmtk.policy.Space
AVAILABLE_BYTES, AVAILABLE_END, AVAILABLE_PAGES, AVAILABLE_START, BYTES_IN_CHUNK, contiguous, descriptor, extent, headDiscontiguousRegion, HEAP_END, HEAP_START, immortal, LOG_ADDRESS_SPACE, LOG_BYTES_IN_CHUNK, MAX_CHUNKS, MAX_SPACES, movable, PAGES_IN_CHUNK, pr, start, zeroed
 
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
ExplicitLargeObjectSpace(String name, boolean zeroed, VMRequest vmRequest)
          The caller specifies the region of virtual memory to be used for this space.
ExplicitLargeObjectSpace(String name, VMRequest vmRequest)
          The caller specifies the region of virtual memory to be used for this space.
 
Method Summary
protected  int cellHeaderSize()
          Return the size of the per-cell header for cells of a given class size.
 void free(ObjectReference object)
          Free an object
 void initializeHeader(ObjectReference object, boolean alloc)
          Perform any required initialization of the GC portion of the header.
 boolean isLive(ObjectReference object)
          Is the object in this space alive?
 void prepare()
          Prepare for a new collection increment.
 void release()
          A new collection increment has completed.
 void release(Address first)
          Release a group of pages that were allocated together.
protected  int superPageHeaderSize()
          Return the size of the per-superpage header required by this system.
 void sweep(ExplicitLargeObjectSpace.Sweeper sweeper)
          Sweep through all the objects in this space.
 ObjectReference traceObject(TransitiveClosure trace, ObjectReference object)
          Trace a reference to an object under a mark sweep collection policy.
 
Methods inherited from class org.mmtk.policy.BaseLargeObjectSpace
free, getHeaderSize, getSize, getSuperPage
 
Methods inherited from class org.mmtk.policy.Space
acquire, availablePhysicalPages, chunkAlign, chunkAlign, committedPages, cumulativeCommittedPages, eagerlyMmapMMTkContiguousSpaces, eagerlyMmapMMTkDiscontiguousSpaces, eagerlyMmapMMTkSpaces, getDescriptor, getDiscontigEnd, getDiscontigStart, getExtent, getFracAvailable, getHeadDiscontiguousRegion, getIndex, getName, getSpaceForAddress, getSpaceForObject, getStart, growDiscontiguousSpace, growSpace, isImmortal, isImmortal, isInSpace, isInSpace, isMappedAddress, isMappedObject, isMovable, isMovable, isReachable, printUsageMB, printUsagePages, printVMMap, releaseAllChunks, releaseDiscontiguousChunks, requiredChunks, reservedPages, setZeroingApproach, skipConcurrentZeroing, triggerConcurrentZeroing, visitSpaces
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

cells

private final DoublyLinkedList cells
Constructor Detail

ExplicitLargeObjectSpace

public ExplicitLargeObjectSpace(String name,
                                VMRequest vmRequest)
The caller specifies the region of virtual memory to be used for this space. If this region conflicts with an existing space, then the constructor will fail.

Parameters:
name - The name of this space (used when printing error messages etc)
vmRequest - An object describing the virtual memory requested.

ExplicitLargeObjectSpace

public ExplicitLargeObjectSpace(String name,
                                boolean zeroed,
                                VMRequest vmRequest)
The caller specifies the region of virtual memory to be used for this space. If this region conflicts with an existing space, then the constructor will fail.

Parameters:
name - The name of this space (used when printing error messages etc)
zeroed - if true, allocations return zeroed memory.
vmRequest - An object describing the virtual memory requested.
Method Detail

prepare

public void prepare()
Prepare for a new collection increment.


release

public void release()
A new collection increment has completed.


release

public void release(Address first)
Release a group of pages that were allocated together.

Specified by:
release in class Space
Parameters:
first - The first page in the group of pages that were allocated together.

initializeHeader

public void initializeHeader(ObjectReference object,
                             boolean alloc)
Perform any required initialization of the GC portion of the header.

Parameters:
object - the object ref to the storage to be initialized
alloc - is this initialization occuring due to (initial) allocation (true) or due to copying (false)?

traceObject

public ObjectReference traceObject(TransitiveClosure trace,
                                   ObjectReference object)
Trace a reference to an object under a mark sweep collection policy. If the object header is not already marked, mark the object in either the bitmap or by moving it off the treadmill, and enqueue the object for subsequent processing. The object is marked as (an atomic) side-effect of checking whether already marked.

Specified by:
traceObject in class Space
Parameters:
trace - The trace being conducted.
object - The object to be traced.
Returns:
The object (there is no object forwarding in this collector, so we always return the same object: this could be a void method but for compliance to a more general interface).

isLive

public boolean isLive(ObjectReference object)
Description copied from class: Space
Is the object in this space alive?

Specified by:
isLive in class Space
Parameters:
object - The object in question
Returns:
true if this object is known to be live (i.e. it is marked)

superPageHeaderSize

protected int superPageHeaderSize()
Description copied from class: BaseLargeObjectSpace
Return the size of the per-superpage header required by this system. In this case it is just the underlying superpage header size.

Specified by:
superPageHeaderSize in class BaseLargeObjectSpace
Returns:
The size of the per-superpage header required by this system.

cellHeaderSize

protected int cellHeaderSize()
Description copied from class: BaseLargeObjectSpace
Return the size of the per-cell header for cells of a given class size.

Specified by:
cellHeaderSize in class BaseLargeObjectSpace
Returns:
The size of the per-cell header for cells of a given class size.

sweep

public void sweep(ExplicitLargeObjectSpace.Sweeper sweeper)
Sweep through all the objects in this space.

Parameters:
sweeper - The sweeper callback to use.

free

public void free(ObjectReference object)
Free an object

Parameters:
object - The object to be freed.