From ea4e4a52790ae1b531114a142877a48b1b4ec6d5 Mon Sep 17 00:00:00 2001 From: Milton Date: Thu, 27 Apr 2023 14:27:26 -0300 Subject: [PATCH 1/2] Felt252DictEntryUpdate --- .../src/hint_processor.rs | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/crates/cairo-1-hint-processor/src/hint_processor.rs b/crates/cairo-1-hint-processor/src/hint_processor.rs index bdd897599..0fd6c8700 100644 --- a/crates/cairo-1-hint-processor/src/hint_processor.rs +++ b/crates/cairo-1-hint-processor/src/hint_processor.rs @@ -442,6 +442,24 @@ impl Cairo1HintProcessor { println!(); Ok(()) } + + fn felt_252_dict_entry_update( + &self, + vm: &mut VirtualMachine, + exec_scopes: &mut ExecutionScopes, + dict_ptr: &ResOperand, + value: &ResOperand, + ) -> Result<(), HintError> { + let (dict_base, dict_offset) = extract_buffer(dict_ptr)?; + let dict_address = get_ptr(vm, dict_base, &dict_offset)?; + let key = get_double_deref_val(vm, dict_base, &(dict_offset + Felt252::from(-3)))?; + let value = res_operand_get_val(vm, value)?; + let dict_manager_exec_scope = exec_scopes + .get_mut_ref::("dict_manager_exec_scope") + .expect("Trying to write to a dict while dict manager was not initialized."); + dict_manager_exec_scope.insert_to_tracker(dict_address, key, value); + Ok(()) + } } impl HintProcessor for Cairo1HintProcessor { @@ -538,7 +556,12 @@ impl HintProcessor for Cairo1HintProcessor { a, b, }) => self.assert_le_find_small_arcs(vm, exec_scopes, range_check_ptr, a, b), - _ => todo!(), + + Hint::Core(CoreHint::Felt252DictEntryUpdate { dict_ptr, value }) => { + self.felt_252_dict_entry_update(vm, exec_scopes, dict_ptr, value) + } + + _ => unimplemented!(), } } } From ac85f61f5ee0fdd4a9063c4e7f9ecbd2a4b8ef31 Mon Sep 17 00:00:00 2001 From: Milton Date: Fri, 28 Apr 2023 15:27:31 -0300 Subject: [PATCH 2/2] merge 0.11 --- crates/cairo-1-hint-processor/src/hint_processor.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/cairo-1-hint-processor/src/hint_processor.rs b/crates/cairo-1-hint-processor/src/hint_processor.rs index b3f26ca94..63072a09e 100644 --- a/crates/cairo-1-hint-processor/src/hint_processor.rs +++ b/crates/cairo-1-hint-processor/src/hint_processor.rs @@ -636,7 +636,11 @@ impl Cairo1HintProcessor { let value = res_operand_get_val(vm, value)?; let dict_manager_exec_scope = exec_scopes .get_mut_ref::("dict_manager_exec_scope") - .expect("Trying to write to a dict while dict manager was not initialized."); + .map_err(|_| { + HintError::CustomHint( + "Trying to write to a dict while dict manager was not initialized.".to_string(), + ) + })?; dict_manager_exec_scope.insert_to_tracker(dict_address, key, value); Ok(())