org.mmtk.utility.sanitychecker
Class SanityChecker

java.lang.Object
  extended by org.mmtk.utility.sanitychecker.SanityChecker
All Implemented Interfaces:
Constants

public final class SanityChecker
extends Object
implements Constants

This class performs sanity checks for Simple collectors.


Field Summary
static int ALIVE
           
 Trace checkTrace
           
(package private)  SanityTraceLocal checkTraceLocal
           
static long danglingReferenceCount
           
static int DEAD
           
static long liveObjectCount
           
static int LOG_SANITY_DATA_SIZE
           
static long nullReferenceCount
           
private  boolean preGCSanity
           
static long referenceCount
           
static long rootReferenceCount
           
 Trace rootTrace
           
private  SanityDataTable sanityTable
           
private  SanityLinearScan scanner
           
static int UNSURE
           
 
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
SanityChecker()
           
 
Method Summary
 boolean collectionPhase(int phaseId)
          Perform any sanity checking collection phases.
static void dumpObjectInformation(ObjectReference object)
          Print out object information (used for warning and error messages)
 void processObject(TraceLocal trace, ObjectReference object, boolean root)
          Process an object during sanity checking, validating data, incrementing counters and enqueuing if this is the first visit to the object.
 void scanProcessObject(ObjectReference object)
          Process an object during a linear scan of the heap.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

referenceCount

public static long referenceCount

rootReferenceCount

public static long rootReferenceCount

danglingReferenceCount

public static long danglingReferenceCount

nullReferenceCount

public static long nullReferenceCount

liveObjectCount

public static long liveObjectCount

DEAD

public static final int DEAD
See Also:
Constant Field Values

ALIVE

public static final int ALIVE
See Also:
Constant Field Values

UNSURE

public static final int UNSURE
See Also:
Constant Field Values

LOG_SANITY_DATA_SIZE

public static final int LOG_SANITY_DATA_SIZE
See Also:
Constant Field Values

rootTrace

public Trace rootTrace

checkTrace

public Trace checkTrace

sanityTable

private final SanityDataTable sanityTable

preGCSanity

private boolean preGCSanity

checkTraceLocal

final SanityTraceLocal checkTraceLocal

scanner

private final SanityLinearScan scanner
Constructor Detail

SanityChecker

public SanityChecker()
Method Detail

collectionPhase

public boolean collectionPhase(int phaseId)
Perform any sanity checking collection phases.

Parameters:
phaseId - The id to proces
Returns:
true if the phase was handled.

scanProcessObject

public void scanProcessObject(ObjectReference object)
Process an object during a linear scan of the heap. We have already checked all objects in the table. So we are only interested in objects that are not in the sanity table here. We are therefore only looking for leaks here.

Parameters:
object - The object being scanned.

processObject

public void processObject(TraceLocal trace,
                          ObjectReference object,
                          boolean root)
Process an object during sanity checking, validating data, incrementing counters and enqueuing if this is the first visit to the object.

Parameters:
object - The object to mark.
root - true If the object is a root.

dumpObjectInformation

public static void dumpObjectInformation(ObjectReference object)
Print out object information (used for warning and error messages)

Parameters:
object - The object to dump info for.