Skip to content

Commit 69e1fbb

Browse files
fix sierra emu eval_trim and add int range to trace dump (#1459)
1 parent b31ad2b commit 69e1fbb

File tree

1 file changed

+85
-2
lines changed

1 file changed

+85
-2
lines changed

src/metadata/trace_dump.rs

Lines changed: 85 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -810,8 +810,84 @@ pub mod trace_dump_runtime {
810810

811811
Value::Bytes31(Felt::from_bytes_le(&data))
812812
}
813-
CoreTypeConcrete::IntRange(_)
814-
| CoreTypeConcrete::Blake(_)
813+
CoreTypeConcrete::IntRange(info) => {
814+
let type_info = registry.get_type(&info.ty).unwrap();
815+
816+
match type_info {
817+
CoreTypeConcrete::Sint8(_) => {
818+
let value = value_ptr.cast::<IntRange<i8>>().read();
819+
Value::IntRange {
820+
x: Box::new(value.x.into()),
821+
y: Box::new(value.y.into()),
822+
}
823+
}
824+
CoreTypeConcrete::Sint16(_) => {
825+
let value = value_ptr.cast::<IntRange<i16>>().read();
826+
Value::IntRange {
827+
x: Box::new(value.x.into()),
828+
y: Box::new(value.y.into()),
829+
}
830+
}
831+
CoreTypeConcrete::Sint32(_) => {
832+
let value = value_ptr.cast::<IntRange<i32>>().read();
833+
Value::IntRange {
834+
x: Box::new(value.x.into()),
835+
y: Box::new(value.y.into()),
836+
}
837+
}
838+
CoreTypeConcrete::Sint64(_) => {
839+
let value = value_ptr.cast::<IntRange<i64>>().read();
840+
Value::IntRange {
841+
x: Box::new(value.x.into()),
842+
y: Box::new(value.y.into()),
843+
}
844+
}
845+
CoreTypeConcrete::Sint128(_) => {
846+
let value = value_ptr.cast::<IntRange<i128>>().read();
847+
Value::IntRange {
848+
x: Box::new(value.x.into()),
849+
y: Box::new(value.y.into()),
850+
}
851+
}
852+
CoreTypeConcrete::Uint8(_) => {
853+
let value = value_ptr.cast::<IntRange<u8>>().read();
854+
Value::IntRange {
855+
x: Box::new(value.x.into()),
856+
y: Box::new(value.y.into()),
857+
}
858+
}
859+
CoreTypeConcrete::Uint16(_) => {
860+
let value = value_ptr.cast::<IntRange<u16>>().read();
861+
Value::IntRange {
862+
x: Box::new(value.x.into()),
863+
y: Box::new(value.y.into()),
864+
}
865+
}
866+
CoreTypeConcrete::Uint32(_) => {
867+
let value = value_ptr.cast::<IntRange<u32>>().read();
868+
Value::IntRange {
869+
x: Box::new(value.x.into()),
870+
y: Box::new(value.y.into()),
871+
}
872+
}
873+
CoreTypeConcrete::Uint64(_) => {
874+
let value = value_ptr.cast::<IntRange<u64>>().read();
875+
Value::IntRange {
876+
x: Box::new(value.x.into()),
877+
y: Box::new(value.y.into()),
878+
}
879+
}
880+
CoreTypeConcrete::Uint128(_) => {
881+
let value = value_ptr.cast::<IntRange<u128>>().read();
882+
Value::IntRange {
883+
x: Box::new(value.x.into()),
884+
y: Box::new(value.y.into()),
885+
}
886+
}
887+
_ => unreachable!(),
888+
}
889+
}
890+
CoreTypeConcrete::Blake(_)
815891
| CoreTypeConcrete::GasReserve(_)
816892
| CoreTypeConcrete::QM31(_) => {
817893
todo!()
@@ -833,6 +909,13 @@ pub mod trace_dump_runtime {
833909
BigUint::from_bytes_le(&output_limbs)
834910
}
835911

912+
#[derive(Debug)]
913+
#[repr(C)]
914+
struct IntRange<T> {
915+
x: T,
916+
y: T,
917+
}
918+
836919
#[derive(Debug)]
837920
struct FeltDictEntry<'a> {
838921
dict: &'a FeltDict,

0 commit comments

Comments
 (0)