Skip to content

Commit 9511d51

Browse files
committed
refactor!(tasm_object): Delete encoding_length trait function
Deleted in favor of the `compute_size_and_assert_valid_size_indicator` which also returns the length of the struct but at the same time also verifies that all contained size-indicators are correct.
1 parent 1482a22 commit 9511d51

File tree

8 files changed

+2
-615
lines changed

8 files changed

+2
-615
lines changed

derive_tasm_object/src/lib.rs

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -304,46 +304,6 @@ fn impl_derive_tasm_object_macro(ast: DeriveInput) -> TokenStream {
304304
}
305305
};
306306

307-
let encoding_length = if let Some(tokens) = get_current_field_start_with_jump.clone().last() {
308-
quote! {
309-
let first_field_with_jump_distance = { #tokens };
310-
let add = crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Add);
311-
let dup0 = crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Dup(crate::triton_vm::op_stack::OpStackElement::ST0));
312-
let swap1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Swap(crate::triton_vm::op_stack::OpStackElement::ST1));
313-
let push_neg_1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Push(crate::triton_vm::prelude::BFieldElement::new(crate::triton_vm::prelude::BFieldElement::P-1)));
314-
let mul = crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Mul);
315-
316-
// Get `*field` and `size` for last field of encoding, which is the 1st in the definition.
317-
// Then add them to a pointer one past the end of the object. Then subtract `*object`
318-
// of the object to get final size.
319-
let extract_encoding_size = [
320-
// _ *object *field size
321-
add.clone(),
322-
// _ *object (*field+size)
323-
swap1,
324-
// _ (*field+size) *object
325-
push_neg_1,
326-
// _ (*field+size) *object -1
327-
mul,
328-
// _ (*field+size) (-*object)
329-
add
330-
// _ encoding_size
331-
].to_vec();
332-
333-
[
334-
[dup0].to_vec(),
335-
first_field_with_jump_distance,
336-
extract_encoding_size].concat()
337-
}
338-
} else {
339-
quote! {
340-
[
341-
crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Pop(crate::triton_vm::op_stack::NumberOfWords::N1)),
342-
crate::triton_vm::instruction::LabelledInstruction::Instruction(crate::triton_vm::instruction::AnInstruction::Push(crate::triton_vm::prelude::BFieldElement::new(0u64))),
343-
].to_vec()
344-
}
345-
};
346-
347307
let integral_size_indicators_code = generate_integral_size_indicators_code(&parse_result);
348308

349309
let name = &ast.ident;
@@ -413,10 +373,6 @@ fn impl_derive_tasm_object_macro(ast: DeriveInput) -> TokenStream {
413373
}
414374
}
415375

416-
fn get_encoding_length() -> Vec<crate::triton_vm::instruction::LabelledInstruction> {
417-
#encoding_length
418-
}
419-
420376
fn compute_size_and_assert_valid_size_indicator(library: &mut crate::tasm_lib::Library) -> Vec<crate::triton_vm::instruction::LabelledInstruction> {
421377
#integral_size_indicators_code
422378
}

tasm-lib/src/structure/auto_generated_tasm_object_implementations/claim.rs

Lines changed: 1 addition & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -874,104 +874,7 @@ impl crate::tasm_lib::structure::tasm_object::TasmObject for Claim {
874874
}
875875
}
876876
}
877-
fn get_encoding_length() -> Vec<crate::triton_vm::instruction::LabelledInstruction> {
878-
let first_field_with_jump_distance = {
879-
[
880-
Self::get_field_start_with_jump_distance("input"),
881-
[
882-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
883-
crate::triton_vm::instruction::AnInstruction::Add,
884-
),
885-
]
886-
.to_vec(),
887-
{
888-
if let Some(size) = <Digest as crate::twenty_first::math::bfield_codec::BFieldCodec>::static_length() {
889-
[
890-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
891-
crate::triton_vm::instruction::AnInstruction::Push(
892-
crate::BFieldElement::new(size as u64),
893-
),
894-
),
895-
]
896-
.to_vec()
897-
} else {
898-
[
899-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
900-
crate::triton_vm::instruction::AnInstruction::ReadMem(
901-
crate::triton_vm::op_stack::NumberOfWords::N1,
902-
),
903-
),
904-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
905-
crate::triton_vm::instruction::AnInstruction::Push(
906-
crate::triton_vm::prelude::BFieldElement::new(
907-
Self::MAX_OFFSET.into(),
908-
),
909-
),
910-
),
911-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
912-
crate::triton_vm::instruction::AnInstruction::Dup(
913-
crate::triton_vm::op_stack::OpStackElement::ST2,
914-
),
915-
),
916-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
917-
crate::triton_vm::instruction::AnInstruction::Lt,
918-
),
919-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
920-
crate::triton_vm::instruction::AnInstruction::Assert,
921-
),
922-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
923-
crate::triton_vm::instruction::AnInstruction::AddI(
924-
crate::BFieldElement::new(1u64),
925-
),
926-
),
927-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
928-
crate::triton_vm::instruction::AnInstruction::Swap(
929-
crate::triton_vm::op_stack::OpStackElement::ST1,
930-
),
931-
),
932-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
933-
crate::triton_vm::instruction::AnInstruction::AddI(
934-
crate::BFieldElement::new(1u64),
935-
),
936-
),
937-
]
938-
.to_vec()
939-
}
940-
},
941-
]
942-
.concat()
943-
};
944-
let add = crate::triton_vm::instruction::LabelledInstruction::Instruction(
945-
crate::triton_vm::instruction::AnInstruction::Add,
946-
);
947-
let dup0 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
948-
crate::triton_vm::instruction::AnInstruction::Dup(
949-
crate::triton_vm::op_stack::OpStackElement::ST0,
950-
),
951-
);
952-
let swap1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
953-
crate::triton_vm::instruction::AnInstruction::Swap(
954-
crate::triton_vm::op_stack::OpStackElement::ST1,
955-
),
956-
);
957-
let push_neg_1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
958-
crate::triton_vm::instruction::AnInstruction::Push(
959-
crate::triton_vm::prelude::BFieldElement::new(
960-
crate::triton_vm::prelude::BFieldElement::P - 1,
961-
),
962-
),
963-
);
964-
let mul = crate::triton_vm::instruction::LabelledInstruction::Instruction(
965-
crate::triton_vm::instruction::AnInstruction::Mul,
966-
);
967-
let extract_encoding_size = [add.clone(), swap1, push_neg_1, mul, add].to_vec();
968-
[
969-
[dup0].to_vec(),
970-
first_field_with_jump_distance,
971-
extract_encoding_size,
972-
]
973-
.concat()
974-
}
877+
975878
fn compute_size_and_assert_valid_size_indicator(
976879
library: &mut crate::tasm_lib::Library,
977880
) -> Vec<crate::triton_vm::instruction::LabelledInstruction> {

tasm-lib/src/structure/auto_generated_tasm_object_implementations/fri_response.rs

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -591,104 +591,6 @@ impl crate::tasm_lib::structure::tasm_object::TasmObject for FriResponse {
591591
}
592592
}
593593
}
594-
fn get_encoding_length() -> Vec<crate::triton_vm::instruction::LabelledInstruction> {
595-
let first_field_with_jump_distance = {
596-
[
597-
Self::get_field_start_with_jump_distance("revealed_leaves"),
598-
[
599-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
600-
crate::triton_vm::instruction::AnInstruction::Add,
601-
),
602-
]
603-
.to_vec(),
604-
{
605-
if let Some(size) = <AuthenticationStructure as crate::twenty_first::math::bfield_codec::BFieldCodec>::static_length() {
606-
[
607-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
608-
crate::triton_vm::instruction::AnInstruction::Push(
609-
crate::BFieldElement::new(size as u64),
610-
),
611-
),
612-
]
613-
.to_vec()
614-
} else {
615-
[
616-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
617-
crate::triton_vm::instruction::AnInstruction::ReadMem(
618-
crate::triton_vm::op_stack::NumberOfWords::N1,
619-
),
620-
),
621-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
622-
crate::triton_vm::instruction::AnInstruction::Push(
623-
crate::triton_vm::prelude::BFieldElement::new(
624-
Self::MAX_OFFSET.into(),
625-
),
626-
),
627-
),
628-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
629-
crate::triton_vm::instruction::AnInstruction::Dup(
630-
crate::triton_vm::op_stack::OpStackElement::ST2,
631-
),
632-
),
633-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
634-
crate::triton_vm::instruction::AnInstruction::Lt,
635-
),
636-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
637-
crate::triton_vm::instruction::AnInstruction::Assert,
638-
),
639-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
640-
crate::triton_vm::instruction::AnInstruction::AddI(
641-
crate::BFieldElement::new(1u64),
642-
),
643-
),
644-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
645-
crate::triton_vm::instruction::AnInstruction::Swap(
646-
crate::triton_vm::op_stack::OpStackElement::ST1,
647-
),
648-
),
649-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
650-
crate::triton_vm::instruction::AnInstruction::AddI(
651-
crate::BFieldElement::new(1u64),
652-
),
653-
),
654-
]
655-
.to_vec()
656-
}
657-
},
658-
]
659-
.concat()
660-
};
661-
let add = crate::triton_vm::instruction::LabelledInstruction::Instruction(
662-
crate::triton_vm::instruction::AnInstruction::Add,
663-
);
664-
let dup0 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
665-
crate::triton_vm::instruction::AnInstruction::Dup(
666-
crate::triton_vm::op_stack::OpStackElement::ST0,
667-
),
668-
);
669-
let swap1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
670-
crate::triton_vm::instruction::AnInstruction::Swap(
671-
crate::triton_vm::op_stack::OpStackElement::ST1,
672-
),
673-
);
674-
let push_neg_1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
675-
crate::triton_vm::instruction::AnInstruction::Push(
676-
crate::triton_vm::prelude::BFieldElement::new(
677-
crate::triton_vm::prelude::BFieldElement::P - 1,
678-
),
679-
),
680-
);
681-
let mul = crate::triton_vm::instruction::LabelledInstruction::Instruction(
682-
crate::triton_vm::instruction::AnInstruction::Mul,
683-
);
684-
let extract_encoding_size = [add.clone(), swap1, push_neg_1, mul, add].to_vec();
685-
[
686-
[dup0].to_vec(),
687-
first_field_with_jump_distance,
688-
extract_encoding_size,
689-
]
690-
.concat()
691-
}
692594
fn compute_size_and_assert_valid_size_indicator(
693595
library: &mut crate::tasm_lib::Library,
694596
) -> Vec<crate::triton_vm::instruction::LabelledInstruction> {

tasm-lib/src/structure/auto_generated_tasm_object_implementations/mmr_accumulator.rs

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -590,104 +590,6 @@ impl crate::tasm_lib::structure::tasm_object::TasmObject for MmrAccumulator {
590590
}
591591
}
592592
}
593-
fn get_encoding_length() -> Vec<crate::triton_vm::instruction::LabelledInstruction> {
594-
let first_field_with_jump_distance = {
595-
[
596-
Self::get_field_start_with_jump_distance("peaks"),
597-
[
598-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
599-
crate::triton_vm::instruction::AnInstruction::Add,
600-
),
601-
]
602-
.to_vec(),
603-
{
604-
if let Some(size) = <u64 as crate::twenty_first::math::bfield_codec::BFieldCodec>::static_length() {
605-
[
606-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
607-
crate::triton_vm::instruction::AnInstruction::Push(
608-
crate::BFieldElement::new(size as u64),
609-
),
610-
),
611-
]
612-
.to_vec()
613-
} else {
614-
[
615-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
616-
crate::triton_vm::instruction::AnInstruction::ReadMem(
617-
crate::triton_vm::op_stack::NumberOfWords::N1,
618-
),
619-
),
620-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
621-
crate::triton_vm::instruction::AnInstruction::Push(
622-
crate::triton_vm::prelude::BFieldElement::new(
623-
Self::MAX_OFFSET.into(),
624-
),
625-
),
626-
),
627-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
628-
crate::triton_vm::instruction::AnInstruction::Dup(
629-
crate::triton_vm::op_stack::OpStackElement::ST2,
630-
),
631-
),
632-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
633-
crate::triton_vm::instruction::AnInstruction::Lt,
634-
),
635-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
636-
crate::triton_vm::instruction::AnInstruction::Assert,
637-
),
638-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
639-
crate::triton_vm::instruction::AnInstruction::AddI(
640-
crate::BFieldElement::new(1u64),
641-
),
642-
),
643-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
644-
crate::triton_vm::instruction::AnInstruction::Swap(
645-
crate::triton_vm::op_stack::OpStackElement::ST1,
646-
),
647-
),
648-
crate::triton_vm::instruction::LabelledInstruction::Instruction(
649-
crate::triton_vm::instruction::AnInstruction::AddI(
650-
crate::BFieldElement::new(1u64),
651-
),
652-
),
653-
]
654-
.to_vec()
655-
}
656-
},
657-
]
658-
.concat()
659-
};
660-
let add = crate::triton_vm::instruction::LabelledInstruction::Instruction(
661-
crate::triton_vm::instruction::AnInstruction::Add,
662-
);
663-
let dup0 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
664-
crate::triton_vm::instruction::AnInstruction::Dup(
665-
crate::triton_vm::op_stack::OpStackElement::ST0,
666-
),
667-
);
668-
let swap1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
669-
crate::triton_vm::instruction::AnInstruction::Swap(
670-
crate::triton_vm::op_stack::OpStackElement::ST1,
671-
),
672-
);
673-
let push_neg_1 = crate::triton_vm::instruction::LabelledInstruction::Instruction(
674-
crate::triton_vm::instruction::AnInstruction::Push(
675-
crate::triton_vm::prelude::BFieldElement::new(
676-
crate::triton_vm::prelude::BFieldElement::P - 1,
677-
),
678-
),
679-
);
680-
let mul = crate::triton_vm::instruction::LabelledInstruction::Instruction(
681-
crate::triton_vm::instruction::AnInstruction::Mul,
682-
);
683-
let extract_encoding_size = [add.clone(), swap1, push_neg_1, mul, add].to_vec();
684-
[
685-
[dup0].to_vec(),
686-
first_field_with_jump_distance,
687-
extract_encoding_size,
688-
]
689-
.concat()
690-
}
691593
fn compute_size_and_assert_valid_size_indicator(
692594
library: &mut crate::tasm_lib::Library,
693595
) -> Vec<crate::triton_vm::instruction::LabelledInstruction> {

0 commit comments

Comments
 (0)