pub struct CommonSpace<VM: VMBinding> {Show 23 fields
pub name: &'static str,
pub descriptor: SpaceDescriptor,
pub vmrequest: VMRequest,
pub copy: Option<CopySemantics>,
pub immortal: bool,
pub movable: bool,
pub contiguous: bool,
pub zeroed: bool,
pub permission_exec: bool,
pub start: Address,
pub extent: usize,
pub vm_map: &'static dyn VMMap,
pub mmapper: &'static dyn Mmapper,
pub(crate) metadata: SideMetadataContext,
pub needs_log_bit: bool,
pub unlog_allocated_object: bool,
pub unlog_traced_object: bool,
pub acquire_lock: Mutex<()>,
pub gc_trigger: Arc<GCTrigger<VM>>,
pub global_state: Arc<GlobalState>,
pub options: Arc<Options>,
pub allocate_as_live: AtomicBool,
p: PhantomData<VM>,
}Fields§
§name: &'static str§descriptor: SpaceDescriptor§vmrequest: VMRequest§copy: Option<CopySemantics>For a copying space that allows sft_trace_object(), this should be set before each GC so we know
immortal: bool§movable: bool§contiguous: bool§zeroed: bool§permission_exec: bool§start: Address§extent: usize§vm_map: &'static dyn VMMap§mmapper: &'static dyn Mmapper§metadata: SideMetadataContext§needs_log_bit: boolThis field equals to needs_log_bit in the plan constraints.
unlog_allocated_object: bool§unlog_traced_object: bool§acquire_lock: Mutex<()>A lock used during acquire() to make sure only one thread can allocate.
gc_trigger: Arc<GCTrigger<VM>>§global_state: Arc<GlobalState>§options: Arc<Options>§allocate_as_live: AtomicBool§p: PhantomData<VM>Implementations§
Source§impl<VM: VMBinding> CommonSpace<VM>
impl<VM: VMBinding> CommonSpace<VM>
pub fn new(args: PolicyCreateSpaceArgs<'_, VM>) -> Self
Sourcepub fn estimate_reasonable_contiguous_extent(
options: &Options,
gc_trigger: &GCTrigger<VM>,
vm_map: &dyn VMMap,
extent: usize,
) -> usize
pub fn estimate_reasonable_contiguous_extent( options: &Options, gc_trigger: &GCTrigger<VM>, vm_map: &dyn VMMap, extent: usize, ) -> usize
This function return an estimate value of required virtual memory for the heap size. Considering virtual memory fragmentation, we may need more virtual memory than the actual heap size. When a space needs to quarantine a virtual memory range, it can use this function to get an estimate of the required virtual memory, and use that to decide how much virtual memory to quarantine.
pub fn initialize_sft( &self, sft: &(dyn SFT + Sync + 'static), sft_map: &mut dyn SFTMap, )
pub fn vm_map(&self) -> &'static dyn VMMap
pub fn mmap_protection(&self) -> MmapProtection
pub(crate) fn debug_print_object_global_info(&self, object: ObjectReference)
Auto Trait Implementations§
impl<VM> !Freeze for CommonSpace<VM>
impl<VM> !RefUnwindSafe for CommonSpace<VM>
impl<VM> Send for CommonSpace<VM>
impl<VM> Sync for CommonSpace<VM>
impl<VM> Unpin for CommonSpace<VM>where
VM: Unpin,
impl<VM> !UnwindSafe for CommonSpace<VM>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Converts
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Converts
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Converts
&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)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Converts
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.§impl<T> DowncastSend for T
impl<T> DowncastSend for T
§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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