Struct cairo_vm::vm::vm_memory::memory_segments::MemorySegmentManager
source · pub struct MemorySegmentManager {
pub num_segments: usize,
pub num_temp_segments: usize,
pub segment_sizes: HashMap<usize, usize>,
pub segment_used_sizes: Option<Vec<usize>>,
pub public_memory_offsets: HashMap<usize, Vec<(usize, usize)>>,
}Fields§
§num_segments: usize§num_temp_segments: usize§segment_sizes: HashMap<usize, usize>§segment_used_sizes: Option<Vec<usize>>§public_memory_offsets: HashMap<usize, Vec<(usize, usize)>>Implementations§
source§impl MemorySegmentManager
impl MemorySegmentManager
sourcepub fn add(&mut self, memory: &mut Memory) -> Relocatable
pub fn add(&mut self, memory: &mut Memory) -> Relocatable
Adds a new segment and returns its starting location as a RelocatableValue.
sourcepub fn add_temporary_segment(&mut self, memory: &mut Memory) -> Relocatable
pub fn add_temporary_segment(&mut self, memory: &mut Memory) -> Relocatable
Adds a new temporary segment and returns its starting location as a RelocatableValue. Negative segment_index indicates its refer to a temporary segment
sourcepub fn load_data(
&mut self,
memory: &mut Memory,
ptr: &MaybeRelocatable,
data: &Vec<MaybeRelocatable>
) -> Result<MaybeRelocatable, MemoryError>
pub fn load_data(
&mut self,
memory: &mut Memory,
ptr: &MaybeRelocatable,
data: &Vec<MaybeRelocatable>
) -> Result<MaybeRelocatable, MemoryError>
Writes data into the memory at address ptr and returns the first address after the data.
pub fn new() -> MemorySegmentManager
sourcepub fn compute_effective_sizes(&mut self, memory: &Memory) -> &Vec<usize> ⓘ
pub fn compute_effective_sizes(&mut self, memory: &Memory) -> &Vec<usize> ⓘ
Calculates the size (number of non-none elements) of each memory segment.
sourcepub fn get_segment_used_size(&self, index: usize) -> Option<usize>
pub fn get_segment_used_size(&self, index: usize) -> Option<usize>
Returns the number of used segments when they are already computed. Returns None otherwise.
pub fn get_segment_size(&self, index: usize) -> Option<usize>
sourcepub fn relocate_segments(&self) -> Result<Vec<usize>, MemoryError>
pub fn relocate_segments(&self) -> Result<Vec<usize>, MemoryError>
Returns a vector that contains the first relocated address of each memory segment
pub fn gen_arg(
&mut self,
arg: &dyn Any,
memory: &mut Memory
) -> Result<MaybeRelocatable, VirtualMachineError>
pub fn gen_cairo_arg(
&mut self,
arg: &CairoArg,
memory: &mut Memory
) -> Result<MaybeRelocatable, VirtualMachineError>
pub fn write_arg(
&mut self,
memory: &mut Memory,
ptr: &Relocatable,
arg: &dyn Any
) -> Result<MaybeRelocatable, MemoryError>
pub fn is_valid_memory_value(
&self,
value: &MaybeRelocatable
) -> Result<bool, MemoryError>
pub fn get_memory_holes(
&self,
accessed_addresses: impl Iterator<Item = Relocatable>
) -> Result<usize, MemoryError>
Trait Implementations§
source§impl Debug for MemorySegmentManager
impl Debug for MemorySegmentManager
source§impl Default for MemorySegmentManager
impl Default for MemorySegmentManager
source§impl PartialEq<MemorySegmentManager> for MemorySegmentManager
impl PartialEq<MemorySegmentManager> for MemorySegmentManager
source§fn eq(&self, other: &MemorySegmentManager) -> bool
fn eq(&self, other: &MemorySegmentManager) -> bool
This method tests for
self and other values to be equal, and is used
by ==.impl Eq for MemorySegmentManager
impl StructuralEq for MemorySegmentManager
impl StructuralPartialEq for MemorySegmentManager
Auto Trait Implementations§
impl RefUnwindSafe for MemorySegmentManager
impl Send for MemorySegmentManager
impl Sync for MemorySegmentManager
impl Unpin for MemorySegmentManager
impl UnwindSafe for MemorySegmentManager
Blanket Implementations§
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.