org.mmtk.utility.alloc
Class EmbeddedMetaData
java.lang.Object
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).
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 |
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 |
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
EmbeddedMetaData
public EmbeddedMetaData()
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.