2
2
3
3
use crate :: CallType :: Call ;
4
4
use cairo_lang_starknet:: casm_contract_class:: CasmContractEntryPoints ;
5
+ use cairo_lang_starknet:: contract_class:: ContractClass ;
5
6
use cairo_lang_starknet:: contract_class:: ContractEntryPoints ;
6
7
use cairo_vm:: felt:: Felt252 ;
7
8
use num_bigint:: BigUint ;
@@ -27,6 +28,19 @@ use std::collections::HashMap;
27
28
use std:: collections:: HashSet ;
28
29
use std:: sync:: Arc ;
29
30
31
+ fn insert_sierra_class_into_cache (
32
+ contract_class_cache : & mut HashMap < ClassHash , CompiledClass > ,
33
+ class_hash : ClassHash ,
34
+ sierra_class : ContractClass ,
35
+ ) {
36
+ let sierra_program = sierra_class. extract_sierra_program ( ) . unwrap ( ) ;
37
+ let entry_points = sierra_class. entry_points_by_type ;
38
+ contract_class_cache. insert (
39
+ class_hash,
40
+ CompiledClass :: Sierra ( Arc :: new ( ( sierra_program, entry_points) ) ) ,
41
+ ) ;
42
+ }
43
+
30
44
#[ test]
31
45
fn integration_test_erc20 ( ) {
32
46
let sierra_contract_class: cairo_lang_starknet:: contract_class:: ContractClass =
@@ -54,9 +68,10 @@ fn integration_test_erc20() {
54
68
55
69
let caller_address = Address ( 123456789 . into ( ) ) ;
56
70
57
- contract_class_cache. insert (
71
+ insert_sierra_class_into_cache (
72
+ & mut contract_class_cache,
58
73
NATIVE_CLASS_HASH ,
59
- CompiledClass :: Sierra ( Arc :: new ( sierra_contract_class) ) ,
74
+ sierra_contract_class,
60
75
) ;
61
76
contract_class_cache. insert (
62
77
CASM_CLASS_HASH ,
@@ -449,13 +464,16 @@ fn call_contract_test() {
449
464
let callee_class_hash: ClassHash = [ 2 ; 32 ] ;
450
465
let callee_nonce = Felt252 :: zero ( ) ;
451
466
452
- contract_class_cache. insert (
467
+ insert_sierra_class_into_cache (
468
+ & mut contract_class_cache,
453
469
caller_class_hash,
454
- CompiledClass :: Sierra ( Arc :: new ( caller_contract_class) ) ,
470
+ caller_contract_class,
455
471
) ;
456
- contract_class_cache. insert (
472
+
473
+ insert_sierra_class_into_cache (
474
+ & mut contract_class_cache,
457
475
callee_class_hash,
458
- CompiledClass :: Sierra ( Arc :: new ( callee_contract_class) ) ,
476
+ callee_contract_class,
459
477
) ;
460
478
461
479
let mut state_reader = InMemoryStateReader :: default ( ) ;
@@ -534,14 +552,16 @@ fn call_echo_contract_test() {
534
552
let callee_class_hash: ClassHash = [ 2 ; 32 ] ;
535
553
let callee_nonce = Felt252 :: zero ( ) ;
536
554
537
- contract_class_cache. insert (
555
+ insert_sierra_class_into_cache (
556
+ & mut contract_class_cache,
538
557
caller_class_hash,
539
- CompiledClass :: Sierra ( Arc :: new ( caller_contract_class) ) ,
558
+ caller_contract_class,
540
559
) ;
541
560
542
- contract_class_cache. insert (
561
+ insert_sierra_class_into_cache (
562
+ & mut contract_class_cache,
543
563
callee_class_hash,
544
- CompiledClass :: Sierra ( Arc :: new ( callee_contract_class) ) ,
564
+ callee_contract_class,
545
565
) ;
546
566
547
567
let mut state_reader = InMemoryStateReader :: default ( ) ;
@@ -622,14 +642,16 @@ fn call_events_contract_test() {
622
642
let callee_class_hash: ClassHash = [ 2 ; 32 ] ;
623
643
let callee_nonce = Felt252 :: zero ( ) ;
624
644
625
- contract_class_cache. insert (
645
+ insert_sierra_class_into_cache (
646
+ & mut contract_class_cache,
626
647
caller_class_hash,
627
- CompiledClass :: Sierra ( Arc :: new ( caller_contract_class) ) ,
648
+ caller_contract_class,
628
649
) ;
629
650
630
- contract_class_cache. insert (
651
+ insert_sierra_class_into_cache (
652
+ & mut contract_class_cache,
631
653
callee_class_hash,
632
- CompiledClass :: Sierra ( Arc :: new ( callee_contract_class) ) ,
654
+ callee_contract_class,
633
655
) ;
634
656
635
657
let mut state_reader = InMemoryStateReader :: default ( ) ;
@@ -840,14 +862,16 @@ fn deploy_syscall_test() {
840
862
let deployee_class_hash: ClassHash = Felt252 :: one ( ) . to_be_bytes ( ) ;
841
863
let _deployee_nonce = Felt252 :: zero ( ) ;
842
864
843
- contract_class_cache. insert (
865
+ insert_sierra_class_into_cache (
866
+ & mut contract_class_cache,
844
867
deployer_class_hash,
845
- CompiledClass :: Sierra ( Arc :: new ( deployer_contract_class) ) ,
868
+ deployer_contract_class,
846
869
) ;
847
870
848
- contract_class_cache. insert (
871
+ insert_sierra_class_into_cache (
872
+ & mut contract_class_cache,
849
873
deployee_class_hash,
850
- CompiledClass :: Sierra ( Arc :: new ( deployee_contract_class) ) ,
874
+ deployee_contract_class,
851
875
) ;
852
876
853
877
let mut state_reader = InMemoryStateReader :: default ( ) ;
@@ -945,14 +969,16 @@ fn deploy_syscall_address_unavailable_test() {
945
969
// Insert contract to be deployed so that its address is taken
946
970
let deployee_address = expected_deployed_contract_address;
947
971
948
- contract_class_cache. insert (
972
+ insert_sierra_class_into_cache (
973
+ & mut contract_class_cache,
949
974
deployer_class_hash,
950
- CompiledClass :: Sierra ( Arc :: new ( deployer_contract_class) ) ,
975
+ deployer_contract_class,
951
976
) ;
952
977
953
- contract_class_cache. insert (
978
+ insert_sierra_class_into_cache (
979
+ & mut contract_class_cache,
954
980
deployee_class_hash,
955
- CompiledClass :: Sierra ( Arc :: new ( deployee_contract_class) ) ,
981
+ deployee_contract_class,
956
982
) ;
957
983
958
984
let mut state_reader = InMemoryStateReader :: default ( ) ;
0 commit comments