org.mmtk.utility.alloc
Class EmbeddedMetaData

java.lang.Object
  extended by org.mmtk.utility.alloc.EmbeddedMetaData
All Implemented Interfaces:
Constants

public final class EmbeddedMetaData
extends Object
implements Constants

This plan implements constants and access methods for meta data that is embedded in allocation spaces (rather than kept on the side). The basic idea is that meta data be embedded at a very coarse power of two granularity for fast access, minimal wastage and by making the regions coarse, the contiguous meta-data will be relatively large and thus the probability of L1 conflict misses will be reduced (as compared with embedding meta-data at the start of each page which will cause those few cache lines corresponding to the start of each page to be heavily conflicted).


Field Summary
static int BYTES_IN_REGION
           
static int LOG_BYTES_IN_REGION
           
static int LOG_PAGES_IN_REGION
           
static int PAGES_IN_REGION
           
private static Word REGION_MASK
           
 
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
EmbeddedMetaData()
           
 
Method Summary
static Address getMetaDataBase(Address address)
          Given an address, return the beginning of the meta data for the region containing the address.
static Extent getMetaDataOffset(Address address, int logCoverage, int logAlign)
          Given an address, the density (coverage) of a meta data type, and the granularity (alignment) of the meta data, return the offset into the meta data the address.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LOG_BYTES_IN_REGION

public static final int LOG_BYTES_IN_REGION
See Also:
Constant Field Values

BYTES_IN_REGION

public static final int BYTES_IN_REGION
See Also:
Constant Field Values

REGION_MASK

private static final Word REGION_MASK

LOG_PAGES_IN_REGION

public static final int LOG_PAGES_IN_REGION

PAGES_IN_REGION

public static final int PAGES_IN_REGION
Constructor Detail

EmbeddedMetaData

public EmbeddedMetaData()
Method Detail

getMetaDataBase

public static Address getMetaDataBase(Address address)
Given an address, return the beginning of the meta data for the region containing the address. This is a fast operation because it only involves masking out low order bits.

Parameters:
address - The address whose meta data is sought.
Returns:
The address of the start of the meta data for the meta region in which the address is located.

getMetaDataOffset

public static Extent getMetaDataOffset(Address address,
                                       int logCoverage,
                                       int logAlign)
Given an address, the density (coverage) of a meta data type, and the granularity (alignment) of the meta data, return the offset into the meta data the address.

Parameters:
address - The address whose meta data offset is sought.
logCoverage - The log base two of the coverage of the meta data in question. For example, a value of 4 would indicate a coverage of 16; one metadata byte for every 16 bytes of data.
logAlign - The log base two of the alignment or granularity of the meta-data (it may be arranged in bytes, words, double words etc).
Returns:
The offset into the meta-data for this region, given the specified address and coverage and alignment requirements.