@@ -811,6 +811,8 @@ pub mod trace_dump {
811
811
sync:: { LazyLock , Mutex } ,
812
812
} ;
813
813
814
+ use crate :: starknet:: ArrayAbi ;
815
+
814
816
use super :: FeltDict ;
815
817
816
818
pub static TRACE_DUMP : LazyLock < Mutex < HashMap < u64 , TraceDump > > > =
@@ -978,31 +980,20 @@ pub mod trace_dump {
978
980
get_layout,
979
981
) ,
980
982
CoreTypeConcrete :: Array ( info) => {
981
- let layout = Layout :: new :: < ( ) > ( ) ;
982
- let ( array_ptr, layout) = {
983
- let ( layout, offset) = layout. extend ( Layout :: new :: < * mut ( ) > ( ) ) . unwrap ( ) ;
984
- ( value_ptr. byte_add ( offset) . cast :: < * mut ( ) > ( ) . read ( ) , layout)
985
- } ;
986
- let ( array_begin, layout) = {
987
- let ( layout, offset) = layout. extend ( Layout :: new :: < u32 > ( ) ) . unwrap ( ) ;
988
- ( value_ptr. byte_add ( offset) . cast :: < u32 > ( ) . read ( ) , layout)
989
- } ;
990
- let ( array_end, _) = {
991
- let ( layout, offset) = layout. extend ( Layout :: new :: < u32 > ( ) ) . unwrap ( ) ;
992
- ( value_ptr. byte_add ( offset) . cast :: < u32 > ( ) . read ( ) , layout)
993
- } ;
983
+ let array = value_ptr. cast :: < ArrayAbi < ( ) > > ( ) . read ( ) ;
994
984
995
985
let layout =
996
986
get_layout ( registry. get_type ( & info. ty ) . unwrap ( ) , registry) . pad_to_align ( ) ;
997
987
998
- let mut data = Vec :: with_capacity ( ( array_end - array_begin) as usize ) ;
999
- for index in array_begin..array_end {
988
+ let mut data = Vec :: with_capacity ( ( array. until - array. since ) as usize ) ;
989
+ let data_ptr = array. ptr . read ( ) ;
990
+ for index in ( array. since ) ..array. until {
1000
991
let index = index as usize ;
1001
992
1002
993
data. push ( read_value_ptr (
1003
994
registry,
1004
995
& info. ty ,
1005
- NonNull :: new ( array_ptr . byte_add ( layout. size ( ) * index) ) . unwrap ( ) ,
996
+ NonNull :: new ( data_ptr . byte_add ( layout. size ( ) * index) ) . unwrap ( ) ,
1006
997
get_layout,
1007
998
) ) ;
1008
999
}
0 commit comments