pub struct SFTSpaceMap {
    sft: Vec<SFTRefStorage>,
    space_address_start: Address,
    space_address_end: Address,
}
Expand description

Space map is a small table, and it has one entry for each MMTk space.

Fields§

§sft: Vec<SFTRefStorage>§space_address_start: Address§space_address_end: Address

Implementations§

Trait Implementations§

source§

impl SFTMap for SFTSpaceMap

source§

fn has_sft_entry(&self, addr: Address) -> bool

Check if the address has an SFT entry in the map (including an empty SFT entry). This is mostly a bound check to make sure that we won’t have an index-out-of-bound error. For the sake of performance, the implementation of other methods in this trait (such as get_unchecked(), update() and clear()) does not need to do this check implicitly. Instead, they assume the address has a valid entry in the SFT. If an address could be arbitary, they should call this method as a pre-check before they call those methods in the trait. We also provide a method get_checked() which includes this check, and will return an empty SFT if the address is out of bound.
source§

fn get_side_metadata(&self) -> Option<&SideMetadataSpec>

Get the side metadata spec this SFT map uses.
source§

fn get_checked(&self, address: Address) -> &dyn SFT

Get SFT for the address. The address can be arbitrary. For out-of-bound access, an empty SFT will be returned. We only provide the checked version for get(), as it may be used to query arbitrary objects and addresses. Other methods like update/clear/etc are mostly used inside MMTk, and in most cases, we know that they are within our space address range.
source§

unsafe fn get_unchecked(&self, address: Address) -> &dyn SFT

Get SFT for the address. The address must have a valid SFT entry in the table (e.g. from an object reference, or from an address that is known to be in our spaces). Otherwise, use get_checked(). Read more
source§

unsafe fn update( &self, space: *const dyn SFT + Sync + 'static, start: Address, bytes: usize )

Set SFT for the address range. The address must have a valid SFT entry in the table. Read more
source§

unsafe fn clear(&self, addr: Address)

Clear SFT for the address. The address must have a valid SFT entry in the table. Read more
source§

fn notify_space_creation(&mut self, _space: *const dyn SFT + Sync + 'static)

Notify the SFT map for space creation. DenseChunkMap needs to create an entry for the space.
source§

unsafe fn eager_initialize( &mut self, space: *const dyn SFT + Sync + 'static, start: Address, bytes: usize )

Eagerly initialize the SFT table. For most implementations, it could be the same as update(). However, we need this as a seprate method for SFTDenseChunkMap, as it needs to map side metadata first before setting the table. Read more
source§

impl Sync for SFTSpaceMap

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.