public final class AddressAllocationTable
extends java.lang.Object
AddressAllocationTable
implements a region-sensitive allocation table.Constructor and Description |
---|
AddressAllocationTable(int lower,
int upper,
long addressMask,
java.util.Collection<? extends Range<java.lang.Long>> regions)
Creates an allocation table for the given address field.
|
Modifier and Type | Method and Description |
---|---|
long |
allocate(Range<java.lang.Long> region,
boolean peek,
java.util.Set<java.lang.Long> exclude)
Allocates an address field value for the given region.
|
java.util.Collection<java.lang.Long> |
getAllAddresses(Range<java.lang.Long> region) |
java.util.Collection<java.lang.Long> |
getUsedAddresses(Range<java.lang.Long> region) |
void |
reset() |
public AddressAllocationTable(int lower, int upper, long addressMask, java.util.Collection<? extends Range<java.lang.Long>> regions)
lower
- the lower bit of the field.upper
- the upper bit of the field.addressMask
- the mask indicating insignificant address bits.regions
- the memory regions or null
.public long allocate(Range<java.lang.Long> region, boolean peek, java.util.Set<java.lang.Long> exclude)
region
- the region or null
.peek
- if peek == true
, peek an address without allocation.exclude
- the values to be excluded or null
.public void reset()
public java.util.Collection<java.lang.Long> getUsedAddresses(Range<java.lang.Long> region)
public java.util.Collection<java.lang.Long> getAllAddresses(Range<java.lang.Long> region)