Skip to content

Commit 49e46ba

Browse files
Fix array trace dump
1 parent 63d2c91 commit 49e46ba

File tree

1 file changed

+7
-16
lines changed

1 file changed

+7
-16
lines changed

src/runtime.rs

+7-16
Original file line numberDiff line numberDiff line change
@@ -811,6 +811,8 @@ pub mod trace_dump {
811811
sync::{LazyLock, Mutex},
812812
};
813813

814+
use crate::starknet::ArrayAbi;
815+
814816
use super::FeltDict;
815817

816818
pub static TRACE_DUMP: LazyLock<Mutex<HashMap<u64, TraceDump>>> =
@@ -978,31 +980,20 @@ pub mod trace_dump {
978980
get_layout,
979981
),
980982
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();
994984

995985
let layout =
996986
get_layout(registry.get_type(&info.ty).unwrap(), registry).pad_to_align();
997987

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 {
1000991
let index = index as usize;
1001992

1002993
data.push(read_value_ptr(
1003994
registry,
1004995
&info.ty,
1005-
NonNull::new(array_ptr.byte_add(layout.size() * index)).unwrap(),
996+
NonNull::new(data_ptr.byte_add(layout.size() * index)).unwrap(),
1006997
get_layout,
1007998
));
1008999
}

0 commit comments

Comments
 (0)