diff --git a/src/protocol/eval/value.rs b/src/protocol/eval/value.rs index c4c5060485d669df5943ff6af48090d89b0f604e..97a9f0e8b47f17bdf8d9a75297b8256b2515bea7 100644 --- a/src/protocol/eval/value.rs +++ b/src/protocol/eval/value.rs @@ -261,6 +261,14 @@ impl ValueGroup { } } + /// Retrieves a mutable reference to the value given its ValueId. + pub(crate) fn get_value_mut(&mut self, id: ValueId) -> &mut Value { + match id { + ValueId::Stack(pos) => return &mut self.values[pos as usize], + ValueId::Heap(heap_pos, pos) => return &mut self.regions[heap_pos as usize][pos as usize], + } + } + fn provide_value(&self, value: &Value, to_store: &mut Store) -> Value { if let Some(from_heap_pos) = value.get_heap_pos() { let from_heap_pos = from_heap_pos as usize;