pub struct HoistGuard {
pub len_slot: u16,
pub bound_reg: u16,
pub iv_reg: u16,
pub add_max: i32,
pub add_min: i32,
}Expand description
A hoisted region-entry bounds check (V8 loop bound-check elimination): the loop’s covered accesses run unchecked iff, at entry, the pinned array is long enough for the whole loop and the induction floor is in range. The VM declines the region (replays on bytecode) if it fails.
Fields§
§len_slot: u16Frame slot holding the pinned array’s length (loaded by the prologue).
bound_reg: u16VM register holding the loop’s upper bound.
iv_reg: u16VM register holding the induction variable (its value at entry is the loop’s minimum for the remaining run).
add_max: i32length >= bound + add_max (max access index over the loop).
add_min: i32iv + add_min >= 1 (min access index over the loop, 1-based).
Trait Implementations§
Source§impl Clone for HoistGuard
impl Clone for HoistGuard
Source§fn clone(&self) -> HoistGuard
fn clone(&self) -> HoistGuard
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for HoistGuard
impl Debug for HoistGuard
impl Copy for HoistGuard
Auto Trait Implementations§
impl Freeze for HoistGuard
impl RefUnwindSafe for HoistGuard
impl Send for HoistGuard
impl Sync for HoistGuard
impl Unpin for HoistGuard
impl UnsafeUnpin for HoistGuard
impl UnwindSafe for HoistGuard
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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>
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>
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)
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)
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.