Skip to content

Commit 737f9d4

Browse files
Adapt other methods
1 parent aea7959 commit 737f9d4

File tree

9 files changed

+214
-158
lines changed

9 files changed

+214
-158
lines changed

vm/src/hint_processor/builtin_hint_processor/builtin_hint_processor_definition.rs

Lines changed: 102 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -197,27 +197,27 @@ impl HintProcessorLogic for BuiltinHintProcessor {
197197
.downcast_ref::<HintProcessorData>()
198198
.ok_or(HintError::WrongHintData)?;
199199

200-
let identifiers = hint_data.identifiers.as_ref();
201-
let owned_constants = identifiers
202-
.clone()
203-
.into_iter()
204-
.filter_map(|(key, identifier)| {
205-
if identifier.type_? == "const" {
206-
Some((key, identifier.value?))
207-
} else {
208-
None
209-
}
210-
})
211-
.collect();
212-
let constants = &owned_constants;
213-
214200
if let Some(hint_func) = self.extra_hints.get(&hint_data.code) {
201+
let constants = hint_data
202+
.identifiers
203+
.as_ref()
204+
.clone()
205+
.into_iter()
206+
.filter_map(|(key, identifier)| {
207+
if identifier.type_? == "const" {
208+
Some((key, identifier.value?))
209+
} else {
210+
None
211+
}
212+
})
213+
.collect();
214+
215215
return hint_func.0(
216216
vm,
217217
exec_scopes,
218218
&hint_data.ids_data,
219219
&hint_data.ap_tracking,
220-
constants,
220+
&constants,
221221
);
222222
}
223223
match &*hint_data.code {
@@ -246,9 +246,13 @@ impl HintProcessorLogic for BuiltinHintProcessor {
246246
&hint_data.accessible_scopes,
247247
),
248248
hint_code::IS_250_BITS => is_250_bits(vm, &hint_data.ids_data, &hint_data.ap_tracking),
249-
hint_code::IS_ADDR_BOUNDED => {
250-
is_addr_bounded(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
251-
}
249+
hint_code::IS_ADDR_BOUNDED => is_addr_bounded(
250+
vm,
251+
&hint_data.ids_data,
252+
&hint_data.ap_tracking,
253+
&hint_data.identifiers,
254+
&hint_data.accessible_scopes,
255+
),
252256
hint_code::IS_POSITIVE => is_positive(vm, &hint_data.ids_data, &hint_data.ap_tracking),
253257
hint_code::SPLIT_INT_ASSERT_RANGE => {
254258
split_int_assert_range(vm, &hint_data.ids_data, &hint_data.ap_tracking)
@@ -468,9 +472,13 @@ impl HintProcessorLogic for BuiltinHintProcessor {
468472
hint_code::UINT256_EXPANDED_UNSIGNED_DIV_REM => {
469473
uint256_expanded_unsigned_div_rem(vm, &hint_data.ids_data, &hint_data.ap_tracking)
470474
}
471-
hint_code::BIGINT_TO_UINT256 => {
472-
bigint_to_uint256(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
473-
}
475+
hint_code::BIGINT_TO_UINT256 => bigint_to_uint256(
476+
vm,
477+
&hint_data.ids_data,
478+
&hint_data.ap_tracking,
479+
&hint_data.identifiers,
480+
&hint_data.accessible_scopes,
481+
),
474482
hint_code::IS_ZERO_PACK_V1 | hint_code::IS_ZERO_PACK_V2 => {
475483
is_zero_pack(vm, exec_scopes, &hint_data.ids_data, &hint_data.ap_tracking)
476484
}
@@ -524,7 +532,8 @@ impl HintProcessorLogic for BuiltinHintProcessor {
524532
exec_scopes,
525533
&hint_data.ids_data,
526534
&hint_data.ap_tracking,
527-
constants,
535+
&hint_data.identifiers,
536+
&hint_data.accessible_scopes,
528537
),
529538
hint_code::EC_NEGATE => ec_negate_import_secp_p(
530539
vm,
@@ -682,20 +691,21 @@ impl HintProcessorLogic for BuiltinHintProcessor {
682691
vm,
683692
&hint_data.ids_data,
684693
&hint_data.ap_tracking,
685-
constants,
694+
&hint_data.identifiers,
695+
&hint_data.accessible_scopes,
686696
),
687697
hint_code::SHA256_MAIN_CONSTANT_INPUT_LENGTH => sha256_main_constant_input_length(
688698
vm,
689699
&hint_data.ids_data,
690700
&hint_data.ap_tracking,
691-
identifiers,
701+
&hint_data.identifiers,
692702
&hint_data.accessible_scopes,
693703
),
694704
hint_code::SHA256_MAIN_ARBITRARY_INPUT_LENGTH => sha256_main_arbitrary_input_length(
695705
vm,
696706
&hint_data.ids_data,
697707
&hint_data.ap_tracking,
698-
identifiers,
708+
&hint_data.identifiers,
699709
&hint_data.accessible_scopes,
700710
),
701711
hint_code::SHA256_INPUT => {
@@ -712,21 +722,40 @@ impl HintProcessorLogic for BuiltinHintProcessor {
712722
vm,
713723
&hint_data.ids_data,
714724
&hint_data.ap_tracking,
715-
constants,
725+
&hint_data.identifiers,
726+
&hint_data.accessible_scopes,
716727
)
717728
}
718729
hint_code::BLOCK_PERMUTATION | hint_code::BLOCK_PERMUTATION_WHITELIST_V1 => {
719-
block_permutation_v1(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
720-
}
721-
hint_code::BLOCK_PERMUTATION_WHITELIST_V2 => {
722-
block_permutation_v2(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
723-
}
724-
hint_code::CAIRO_KECCAK_FINALIZE_V1 => {
725-
cairo_keccak_finalize_v1(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
726-
}
727-
hint_code::CAIRO_KECCAK_FINALIZE_V2 => {
728-
cairo_keccak_finalize_v2(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
730+
block_permutation_v1(
731+
vm,
732+
&hint_data.ids_data,
733+
&hint_data.ap_tracking,
734+
&hint_data.identifiers,
735+
&hint_data.accessible_scopes,
736+
)
729737
}
738+
hint_code::BLOCK_PERMUTATION_WHITELIST_V2 => block_permutation_v2(
739+
vm,
740+
&hint_data.ids_data,
741+
&hint_data.ap_tracking,
742+
&hint_data.identifiers,
743+
&hint_data.accessible_scopes,
744+
),
745+
hint_code::CAIRO_KECCAK_FINALIZE_V1 => cairo_keccak_finalize_v1(
746+
vm,
747+
&hint_data.ids_data,
748+
&hint_data.ap_tracking,
749+
&hint_data.identifiers,
750+
&hint_data.accessible_scopes,
751+
),
752+
hint_code::CAIRO_KECCAK_FINALIZE_V2 => cairo_keccak_finalize_v2(
753+
vm,
754+
&hint_data.ids_data,
755+
&hint_data.ap_tracking,
756+
&hint_data.identifiers,
757+
&hint_data.accessible_scopes,
758+
),
730759
hint_code::FAST_EC_ADD_ASSIGN_NEW_X => fast_ec_add_assign_new_x(
731760
vm,
732761
exec_scopes,
@@ -788,9 +817,13 @@ impl HintProcessorLogic for BuiltinHintProcessor {
788817
hint_code::SPLIT_INPUT_15 => {
789818
split_input(vm, &hint_data.ids_data, &hint_data.ap_tracking, 15, 5)
790819
}
791-
hint_code::SPLIT_N_BYTES => {
792-
split_n_bytes(vm, &hint_data.ids_data, &hint_data.ap_tracking, constants)
793-
}
820+
hint_code::SPLIT_N_BYTES => split_n_bytes(
821+
vm,
822+
&hint_data.ids_data,
823+
&hint_data.ap_tracking,
824+
&hint_data.identifiers,
825+
&hint_data.accessible_scopes,
826+
),
794827
hint_code::SPLIT_OUTPUT_MID_LOW_HIGH => {
795828
split_output_mid_low_high(vm, &hint_data.ids_data, &hint_data.ap_tracking)
796829
}
@@ -903,7 +936,8 @@ impl HintProcessorLogic for BuiltinHintProcessor {
903936
vm,
904937
&hint_data.ids_data,
905938
&hint_data.ap_tracking,
906-
constants,
939+
&hint_data.identifiers,
940+
&hint_data.accessible_scopes,
907941
)
908942
}
909943
#[cfg(feature = "test_utils")]
@@ -920,7 +954,7 @@ impl HintProcessorLogic for BuiltinHintProcessor {
920954
vm,
921955
&hint_data.ids_data,
922956
&hint_data.ap_tracking,
923-
identifiers,
957+
&hint_data.identifiers,
924958
&hint_data.accessible_scopes,
925959
exec_scopes,
926960
),
@@ -930,15 +964,16 @@ impl HintProcessorLogic for BuiltinHintProcessor {
930964
exec_scopes,
931965
&hint_data.ids_data,
932966
&hint_data.ap_tracking,
933-
constants,
967+
&hint_data.identifiers,
968+
&hint_data.accessible_scopes,
934969
),
935970
#[cfg(feature = "cairo-0-secp-hints")]
936971
cairo0_hints::COMPUTE_IDS_HIGH_LOW => cairo0_hints::compute_ids_high_low(
937972
vm,
938973
exec_scopes,
939974
&hint_data.ids_data,
940975
&hint_data.ap_tracking,
941-
identifiers,
976+
&hint_data.identifiers,
942977
&hint_data.accessible_scopes,
943978
),
944979
#[cfg(feature = "cairo-0-secp-hints")]
@@ -947,7 +982,8 @@ impl HintProcessorLogic for BuiltinHintProcessor {
947982
exec_scopes,
948983
&hint_data.ids_data,
949984
&hint_data.ap_tracking,
950-
constants,
985+
&hint_data.identifiers,
986+
&hint_data.accessible_scopes,
951987
SECP256R1_P.magnitude(),
952988
),
953989
#[cfg(feature = "cairo-0-secp-hints")]
@@ -956,7 +992,8 @@ impl HintProcessorLogic for BuiltinHintProcessor {
956992
exec_scopes,
957993
&hint_data.ids_data,
958994
&hint_data.ap_tracking,
959-
constants,
995+
&hint_data.identifiers,
996+
&hint_data.accessible_scopes,
960997
&CAIRO_PRIME,
961998
),
962999
#[cfg(feature = "cairo-0-secp-hints")]
@@ -965,23 +1002,26 @@ impl HintProcessorLogic for BuiltinHintProcessor {
9651002
exec_scopes,
9661003
&hint_data.ids_data,
9671004
&hint_data.ap_tracking,
968-
constants,
1005+
&hint_data.identifiers,
1006+
&hint_data.accessible_scopes,
9691007
),
9701008
#[cfg(feature = "cairo-0-secp-hints")]
9711009
cairo0_hints::COMPUTE_VALUE_DIV_MOD => cairo0_hints::compute_value_div_mod(
9721010
vm,
9731011
exec_scopes,
9741012
&hint_data.ids_data,
9751013
&hint_data.ap_tracking,
976-
constants,
1014+
&hint_data.identifiers,
1015+
&hint_data.accessible_scopes,
9771016
),
9781017
#[cfg(feature = "cairo-0-secp-hints")]
9791018
cairo0_hints::GENERATE_NIBBLES => cairo0_hints::generate_nibbles(
9801019
vm,
9811020
exec_scopes,
9821021
&hint_data.ids_data,
9831022
&hint_data.ap_tracking,
984-
constants,
1023+
&hint_data.identifiers,
1024+
&hint_data.accessible_scopes,
9851025
),
9861026

9871027
#[cfg(feature = "cairo-0-secp-hints")]
@@ -990,23 +1030,26 @@ impl HintProcessorLogic for BuiltinHintProcessor {
9901030
exec_scopes,
9911031
&hint_data.ids_data,
9921032
&hint_data.ap_tracking,
993-
constants,
1033+
&hint_data.identifiers,
1034+
&hint_data.accessible_scopes,
9941035
),
9951036
#[cfg(feature = "cairo-0-secp-hints")]
9961037
cairo0_hints::IS_ON_CURVE_2 => cairo0_hints::is_on_curve_2(
9971038
vm,
9981039
exec_scopes,
9991040
&hint_data.ids_data,
10001041
&hint_data.ap_tracking,
1001-
constants,
1042+
&hint_data.identifiers,
1043+
&hint_data.accessible_scopes,
10021044
),
10031045
#[cfg(feature = "cairo-0-secp-hints")]
10041046
cairo0_hints::SECP_R1_GET_POINT_FROM_X => cairo0_hints::r1_get_point_from_x(
10051047
vm,
10061048
exec_scopes,
10071049
&hint_data.ids_data,
10081050
&hint_data.ap_tracking,
1009-
constants,
1051+
&hint_data.identifiers,
1052+
&hint_data.accessible_scopes,
10101053
SECP256R1_P.magnitude(),
10111054
),
10121055

@@ -1016,7 +1059,8 @@ impl HintProcessorLogic for BuiltinHintProcessor {
10161059
exec_scopes,
10171060
&hint_data.ids_data,
10181061
&hint_data.ap_tracking,
1019-
constants,
1062+
&hint_data.identifiers,
1063+
&hint_data.accessible_scopes,
10201064
&CAIRO_PRIME,
10211065
),
10221066

@@ -1026,23 +1070,26 @@ impl HintProcessorLogic for BuiltinHintProcessor {
10261070
exec_scopes,
10271071
&hint_data.ids_data,
10281072
&hint_data.ap_tracking,
1029-
constants,
1073+
&hint_data.identifiers,
1074+
&hint_data.accessible_scopes,
10301075
),
10311076
#[cfg(feature = "cairo-0-secp-hints")]
10321077
cairo0_hints::SECP_REDUCE_X => cairo0_hints::reduce_x(
10331078
vm,
10341079
exec_scopes,
10351080
&hint_data.ids_data,
10361081
&hint_data.ap_tracking,
1037-
constants,
1082+
&hint_data.identifiers,
1083+
&hint_data.accessible_scopes,
10381084
),
10391085
#[cfg(feature = "cairo-0-data-availability-hints")]
10401086
super::kzg_da::WRITE_DIVMOD_SEGMENT => super::kzg_da::write_div_mod_segment(
10411087
vm,
10421088
exec_scopes,
10431089
&hint_data.ids_data,
10441090
&hint_data.ap_tracking,
1045-
constants,
1091+
&hint_data.identifiers,
1092+
&hint_data.accessible_scopes,
10461093
),
10471094

10481095
code => Err(HintError::UnknownHint(code.to_string().into_boxed_str())),

0 commit comments

Comments
 (0)