From 066d22fef155b0065d9eebda2264139281656564 Mon Sep 17 00:00:00 2001 From: Alexander Hansen Date: Fri, 17 Sep 2021 18:37:25 -0700 Subject: [PATCH 1/5] WIP broken RETD --- Cargo.lock | 22 ++++-- core_lang/src/asm_generation/mod.rs | 69 +++++++++++++++++-- core_lang/src/asm_lang/allocated_ops.rs | 3 + core_lang/src/asm_lang/mod.rs | 10 +++ core_lang/src/asm_lang/virtual_ops.rs | 5 ++ test/Cargo.toml | 2 +- test/src/e2e_vm_tests/mod.rs | 14 ++++ .../test_programs/retd_b256/Forc.toml | 5 ++ .../test_programs/retd_b256/src/main.sw | 11 +++ .../test_programs/retd_struct/Forc.toml | 5 ++ .../test_programs/retd_struct/src/main.sw | 13 ++++ 11 files changed, 146 insertions(+), 13 deletions(-) create mode 100644 test/src/e2e_vm_tests/test_programs/retd_b256/Forc.toml create mode 100644 test/src/e2e_vm_tests/test_programs/retd_b256/src/main.sw create mode 100644 test/src/e2e_vm_tests/test_programs/retd_struct/Forc.toml create mode 100644 test/src/e2e_vm_tests/test_programs/retd_struct/src/main.sw diff --git a/Cargo.lock b/Cargo.lock index 709c575c7ba..9905e52762c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -759,7 +759,7 @@ dependencies = [ "derivative", "either", "fuel-asm", - "fuel-vm", + "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", "hex", "pest 2.1.3 (git+https://github.com/sezna/pest.git?rev=8aa58791f759daf4caee26e8560e862df5a6afb7)", "pest_derive", @@ -1161,7 +1161,7 @@ dependencies = [ "fuel-asm", "fuel-client", "fuel-tx", - "fuel-vm", + "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", "hex", "line-col", "pest 2.1.3 (git+https://github.com/sezna/pest.git?rev=8aa58791f759daf4caee26e8560e862df5a6afb7)", @@ -1234,7 +1234,7 @@ dependencies = [ "async-graphql 2.9.12", "cynic", "fuel-core", - "fuel-vm", + "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", "schemafy_lib", "serde", "serde_json", @@ -1250,7 +1250,7 @@ dependencies = [ "bincode", "dirs 3.0.2", "env_logger", - "fuel-vm", + "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", "futures", "hex", "hyper", @@ -1281,6 +1281,18 @@ dependencies = [ "sha2", ] +[[package]] +name = "fuel-vm" +version = "0.1.0" +dependencies = [ + "fuel-asm", + "fuel-tx", + "itertools", + "secp256k1", + "sha3", + "tracing", +] + [[package]] name = "fuel-vm" version = "0.1.0" @@ -3211,7 +3223,7 @@ dependencies = [ "forc", "fuel-asm", "fuel-tx", - "fuel-vm", + "fuel-vm 0.1.0", "rand 0.8.4", ] diff --git a/core_lang/src/asm_generation/mod.rs b/core_lang/src/asm_generation/mod.rs index 70ee4a09973..03c1c361381 100644 --- a/core_lang/src/asm_generation/mod.rs +++ b/core_lang/src/asm_generation/mod.rs @@ -642,11 +642,66 @@ pub(crate) fn compile_ast_to_asm<'sc>( comment: "main fn returns unit value".into(), }); } else { - asm_buf.push(Op { - owning_span: None, - opcode: Either::Left(VirtualOp::RET(return_register)), - comment: "main fn return value".into(), - }); + let size_of_main_func_return_bytes = check!( + main_function.return_type.force_resolution( + &MaybeResolvedType::Resolved(ResolvedType::Unit), + &main_function.return_type_span + ), + return err(warnings, errors), + warnings, + errors + ) + .stack_size_of() + * 8; + if size_of_main_func_return_bytes == 8 { + asm_buf.push(Op { + owning_span: None, + opcode: Either::Left(VirtualOp::RET(return_register)), + comment: "main fn return value".into(), + }); + } else { + // if the type is larger than one word, then we use RETD to return data + // calculate the value of $rB by adding the stack size * 8 to the start pointer + let rb_register = register_sequencer.next(); + let size_in_bytes = match VirtualImmediate12::new( + size_of_main_func_return_bytes, + main_function.return_type_span.clone(), + ) { + Ok(o) => o, + Err(e) => { + errors.push(e); + return err(warnings, errors); + } + }; + let ra_register = register_sequencer.next(); + // add `is` to $rA + asm_buf.push(Op { + opcode: Either::Left(VirtualOp::ADD( + ra_register.clone(), + ra_register.clone(), + VirtualRegister::Constant(ConstantRegister::InstructionStart), + )), + owning_span: Some(main_function.return_type_span.clone()), + comment: "adding $is to $rA for RETD".into(), + }); + // `return_register` is $rA + asm_buf.push(Op { + opcode: Either::Left(VirtualOp::ADDI( + rb_register.clone(), + ra_register.clone(), + size_in_bytes, + )), + owning_span: Some(main_function.return_type_span), + comment: "calculating rB for RETD".into(), + }); + + // now $rB has $rA + size_of_type_in_bytes + asm_buf.push(Op { + owning_span: None, + opcode: Either::Left(VirtualOp::RETD(ra_register, rb_register)), + comment: "main fn return value".into(), + }); + } } HllAsmSet::ScriptMain { @@ -1099,13 +1154,13 @@ fn build_contract_abi_switch<'sc>( }); } - // if none of the selectors matched, then revert + // if none of the selectors matched, then ret asm_buf.push(Op { // see https://github.com/FuelLabs/sway/issues/97#issuecomment-875674105 opcode: Either::Left(VirtualOp::RET(VirtualRegister::Constant( ConstantRegister::Zero, ))), - comment: "revert if no selectors matched".into(), + comment: "return if no selectors matched".into(), owning_span: None, }); diff --git a/core_lang/src/asm_lang/allocated_ops.rs b/core_lang/src/asm_lang/allocated_ops.rs index 9c445e5fdc4..e6b620b06a4 100644 --- a/core_lang/src/asm_lang/allocated_ops.rs +++ b/core_lang/src/asm_lang/allocated_ops.rs @@ -88,6 +88,7 @@ pub(crate) enum AllocatedOpcode { JI(VirtualImmediate24), JNEI(AllocatedRegister, AllocatedRegister, VirtualImmediate12), RET(AllocatedRegister), + RETD(AllocatedRegister, AllocatedRegister), CFEI(VirtualImmediate24), CFSI(VirtualImmediate24), LB(AllocatedRegister, AllocatedRegister, VirtualImmediate12), @@ -201,6 +202,7 @@ impl<'sc> fmt::Display for AllocatedOp<'sc> { JI(a) => format!("ji {}", a), JNEI(a, b, c) => format!("jnei {} {} {}", a, b, c), RET(a) => format!("ret {}", a), + RETD(a, b) => format!("retd {} {}", a, b), CFEI(a) => format!("cfei {}", a), CFSI(a) => format!("cfsi {}", a), LB(a, b, c) => format!("lb {} {} {}", a, b, c), @@ -300,6 +302,7 @@ impl<'sc> AllocatedOp<'sc> { JI (a) => VmOp::JI (a.value), JNEI(a, b, c) => VmOp::JNEI(a.to_register_id(), b.to_register_id(), c.value), RET (a) => VmOp::RET (a.to_register_id()), + RETD(a, b) => VmOp::RETD (a.to_register_id(), b.to_register_id()), CFEI(a) => VmOp::CFEI(a.value), CFSI(a) => VmOp::CFSI(a.value), LB (a, b, c) => VmOp::LB (a.to_register_id(), b.to_register_id(), c.value), diff --git a/core_lang/src/asm_lang/mod.rs b/core_lang/src/asm_lang/mod.rs index 6ddf5555279..794182ba3c0 100644 --- a/core_lang/src/asm_lang/mod.rs +++ b/core_lang/src/asm_lang/mod.rs @@ -558,6 +558,15 @@ impl<'sc> Op<'sc> { ); VirtualOp::RET(r1) } + "retd" => { + let (r1, r2) = check!( + two_regs(args, immediate, whole_op_span), + return err(warnings, errors), + warnings, + errors + ); + VirtualOp::RETD(r1, r2) + } "cfei" => { let imm = check!( single_imm_24(args, immediate, whole_op_span), @@ -1254,6 +1263,7 @@ impl fmt::Display for Op<'_> { JI(a) => format!("ji {}", a), JNEI(a, b, c) => format!("jnei {} {} {}", a, b, c), RET(a) => format!("ret {}", a), + RETD(a, b) => format!("retd {} {}", a, b), CFEI(a) => format!("cfei {}", a), CFSI(a) => format!("cfsi {}", a), LB(a, b, c) => format!("lb {} {} {}", a, b, c), diff --git a/core_lang/src/asm_lang/virtual_ops.rs b/core_lang/src/asm_lang/virtual_ops.rs index 5458d32397b..3744579442d 100644 --- a/core_lang/src/asm_lang/virtual_ops.rs +++ b/core_lang/src/asm_lang/virtual_ops.rs @@ -286,6 +286,7 @@ pub(crate) enum VirtualOp { JI(VirtualImmediate24), JNEI(VirtualRegister, VirtualRegister, VirtualImmediate12), RET(VirtualRegister), + RETD(VirtualRegister, VirtualRegister), CFEI(VirtualImmediate24), CFSI(VirtualImmediate24), LB(VirtualRegister, VirtualRegister, VirtualImmediate12), @@ -396,6 +397,7 @@ impl VirtualOp { JI(_im) => vec![], JNEI(r1, r2, _i) => vec![r1, r2], RET(r1) => vec![r1], + RETD(r1, r2) => vec![r1, r2], CFEI(_imm) => vec![], CFSI(_imm) => vec![], LB(r1, r2, _i) => vec![r1, r2], @@ -635,6 +637,9 @@ impl VirtualOp { imm.clone(), ), RET(reg) => AllocatedOpcode::RET(map_reg(&mapping, reg)), + RETD(reg1, reg2) => { + AllocatedOpcode::RETD(map_reg(&mapping, reg1), map_reg(&mapping, reg2)) + } CFEI(imm) => AllocatedOpcode::CFEI(imm.clone()), CFSI(imm) => AllocatedOpcode::CFSI(imm.clone()), LB(reg1, reg2, imm) => AllocatedOpcode::LB( diff --git a/test/Cargo.toml b/test/Cargo.toml index 673b9b49fcf..1f0f0bb12a7 100644 --- a/test/Cargo.toml +++ b/test/Cargo.toml @@ -9,6 +9,6 @@ edition = "2018" [dependencies] forc = { path = "../forc" } fuel-tx = { git = "ssh://git@github.com/FuelLabs/fuel-tx.git" } -fuel-vm = { git = "ssh://git@github.com/FuelLabs/fuel-vm.git" } +fuel-vm = { path = "../../fuel-vm" } fuel-asm = { git = "ssh://git@github.com/FuelLabs/fuel-asm.git" } rand = "0.8" diff --git a/test/src/e2e_vm_tests/mod.rs b/test/src/e2e_vm_tests/mod.rs index d77bdc0d797..0d72d197a9d 100644 --- a/test/src/e2e_vm_tests/mod.rs +++ b/test/src/e2e_vm_tests/mod.rs @@ -18,6 +18,20 @@ pub fn run() { ("main_returns_unit", ProgramState::Return(0)), ("unary_not_basic", ProgramState::Return(1)), // 1 == true ("unary_not_basic_2", ProgramState::Return(1)), // 1 == true + ( + "retd_b256", + ProgramState::ReturnData(Bytes32::from([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + ])), + ), + /* ( + "retd_struct", + ProgramState::ReturnData(Bytes32::from([ + 198, 228, 61, 7, 162, 207, 184, 14, 142, 15, 158, 36, 138, 121, 140, 194, 99, 64, + 11, 124, 131, 161, 54, 143, 146, 216, 146, 99, 203, 92, 89, 164, + ])), + )*/ ]; project_names.into_iter().for_each(|(name, res)| { assert_eq!(crate::e2e_vm_tests::harness::runs_in_vm(name), res); diff --git a/test/src/e2e_vm_tests/test_programs/retd_b256/Forc.toml b/test/src/e2e_vm_tests/test_programs/retd_b256/Forc.toml new file mode 100644 index 00000000000..15ef0c0bff7 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/retd_b256/Forc.toml @@ -0,0 +1,5 @@ +[project] +author = "Alexander Hansen" +license = "MIT" +name = "retd_b256" +entry = "main.sw" diff --git a/test/src/e2e_vm_tests/test_programs/retd_b256/src/main.sw b/test/src/e2e_vm_tests/test_programs/retd_b256/src/main.sw new file mode 100644 index 00000000000..a28cae1ad34 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/retd_b256/src/main.sw @@ -0,0 +1,11 @@ +script; + +// a b256 is bigger than a word, so RETD should be used instead of RET. +fn main() -> b256 { + let a = 0x0000000000000000000000000000000000000000000000000000000000000000 ; + asm(r1: a, r2: 0x0000000000000000000000000000000000000000000000000000000000000000 ) { + log r1 r2 zero zero; + zero + }; + return a; +} diff --git a/test/src/e2e_vm_tests/test_programs/retd_struct/Forc.toml b/test/src/e2e_vm_tests/test_programs/retd_struct/Forc.toml new file mode 100644 index 00000000000..f84d373b332 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/retd_struct/Forc.toml @@ -0,0 +1,5 @@ +[project] +author = "Alexander Hansen" +license = "MIT" +name = "retd_struct" +entry = "main.sw" diff --git a/test/src/e2e_vm_tests/test_programs/retd_struct/src/main.sw b/test/src/e2e_vm_tests/test_programs/retd_struct/src/main.sw new file mode 100644 index 00000000000..ae5613d4a58 --- /dev/null +++ b/test/src/e2e_vm_tests/test_programs/retd_struct/src/main.sw @@ -0,0 +1,13 @@ +script; + +struct BiggerThanAWord { + field_1: u64, + field_2: b256, +} + +fn main() -> BiggerThanAWord { + BiggerThanAWord { + field_1: 99999u64, + field_2: 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + } +} From 50178f8af7cad9cc58d87a0a2e0863b9ebb079ec Mon Sep 17 00:00:00 2001 From: Alexander Hansen Date: Fri, 17 Sep 2021 18:43:54 -0700 Subject: [PATCH 2/5] remove addition to --- core_lang/src/asm_generation/mod.rs | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/core_lang/src/asm_generation/mod.rs b/core_lang/src/asm_generation/mod.rs index 03c1c361381..eceb771ae58 100644 --- a/core_lang/src/asm_generation/mod.rs +++ b/core_lang/src/asm_generation/mod.rs @@ -673,22 +673,11 @@ pub(crate) fn compile_ast_to_asm<'sc>( return err(warnings, errors); } }; - let ra_register = register_sequencer.next(); - // add `is` to $rA - asm_buf.push(Op { - opcode: Either::Left(VirtualOp::ADD( - ra_register.clone(), - ra_register.clone(), - VirtualRegister::Constant(ConstantRegister::InstructionStart), - )), - owning_span: Some(main_function.return_type_span.clone()), - comment: "adding $is to $rA for RETD".into(), - }); // `return_register` is $rA asm_buf.push(Op { opcode: Either::Left(VirtualOp::ADDI( rb_register.clone(), - ra_register.clone(), + return_register.clone(), size_in_bytes, )), owning_span: Some(main_function.return_type_span), @@ -698,7 +687,7 @@ pub(crate) fn compile_ast_to_asm<'sc>( // now $rB has $rA + size_of_type_in_bytes asm_buf.push(Op { owning_span: None, - opcode: Either::Left(VirtualOp::RETD(ra_register, rb_register)), + opcode: Either::Left(VirtualOp::RETD(return_register, rb_register)), comment: "main fn return value".into(), }); } From dd75e458d44ad9535a9a7036de8333c6dd02e5a4 Mon Sep 17 00:00:00 2001 From: Alexander Hansen Date: Fri, 17 Sep 2021 19:08:14 -0700 Subject: [PATCH 3/5] add more logging --- core_lang/src/asm_generation/mod.rs | 10 ++++++++++ test/src/e2e_vm_tests/harness.rs | 3 +-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core_lang/src/asm_generation/mod.rs b/core_lang/src/asm_generation/mod.rs index eceb771ae58..ffacbcd4a1b 100644 --- a/core_lang/src/asm_generation/mod.rs +++ b/core_lang/src/asm_generation/mod.rs @@ -683,6 +683,16 @@ pub(crate) fn compile_ast_to_asm<'sc>( owning_span: Some(main_function.return_type_span), comment: "calculating rB for RETD".into(), }); + asm_buf.push(Op { + opcode: Either::Left(VirtualOp::LOG( + return_register.clone(), + rb_register.clone(), + VirtualRegister::Constant(ConstantRegister::Zero), + VirtualRegister::Constant(ConstantRegister::Zero), + )), + owning_span: None, + comment: "".into(), + }); // now $rB has $rA + size_of_type_in_bytes asm_buf.push(Op { diff --git a/test/src/e2e_vm_tests/harness.rs b/test/src/e2e_vm_tests/harness.rs index 8fd8657c942..4eb1afd86b7 100644 --- a/test/src/e2e_vm_tests/harness.rs +++ b/test/src/e2e_vm_tests/harness.rs @@ -75,8 +75,7 @@ pub(crate) fn runs_in_vm(file_name: &str) -> ProgramState { ); let block_height = (u32::MAX >> 1) as u64; tx_to_test.validate(block_height).unwrap(); - Interpreter::transition(&mut storage, tx_to_test) - .unwrap() + dbg!(Interpreter::transition(&mut storage, tx_to_test).unwrap()) .state() .clone() } From cecff5e4f5433771faf173ecaac3e6296278ce3c Mon Sep 17 00:00:00 2001 From: Alexander Hansen Date: Mon, 20 Sep 2021 13:08:44 -0700 Subject: [PATCH 4/5] fix up retd rB register --- Cargo.lock | 22 +++++----------------- core_lang/src/asm_generation/mod.rs | 24 ++++++------------------ test/Cargo.toml | 2 +- test/src/e2e_vm_tests/mod.rs | 12 ++++++------ 4 files changed, 18 insertions(+), 42 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9905e52762c..709c575c7ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -759,7 +759,7 @@ dependencies = [ "derivative", "either", "fuel-asm", - "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", + "fuel-vm", "hex", "pest 2.1.3 (git+https://github.com/sezna/pest.git?rev=8aa58791f759daf4caee26e8560e862df5a6afb7)", "pest_derive", @@ -1161,7 +1161,7 @@ dependencies = [ "fuel-asm", "fuel-client", "fuel-tx", - "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", + "fuel-vm", "hex", "line-col", "pest 2.1.3 (git+https://github.com/sezna/pest.git?rev=8aa58791f759daf4caee26e8560e862df5a6afb7)", @@ -1234,7 +1234,7 @@ dependencies = [ "async-graphql 2.9.12", "cynic", "fuel-core", - "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", + "fuel-vm", "schemafy_lib", "serde", "serde_json", @@ -1250,7 +1250,7 @@ dependencies = [ "bincode", "dirs 3.0.2", "env_logger", - "fuel-vm 0.1.0 (git+ssh://git@github.com/FuelLabs/fuel-vm.git)", + "fuel-vm", "futures", "hex", "hyper", @@ -1281,18 +1281,6 @@ dependencies = [ "sha2", ] -[[package]] -name = "fuel-vm" -version = "0.1.0" -dependencies = [ - "fuel-asm", - "fuel-tx", - "itertools", - "secp256k1", - "sha3", - "tracing", -] - [[package]] name = "fuel-vm" version = "0.1.0" @@ -3223,7 +3211,7 @@ dependencies = [ "forc", "fuel-asm", "fuel-tx", - "fuel-vm 0.1.0", + "fuel-vm", "rand 0.8.4", ] diff --git a/core_lang/src/asm_generation/mod.rs b/core_lang/src/asm_generation/mod.rs index ffacbcd4a1b..6189169f124 100644 --- a/core_lang/src/asm_generation/mod.rs +++ b/core_lang/src/asm_generation/mod.rs @@ -661,27 +661,15 @@ pub(crate) fn compile_ast_to_asm<'sc>( }); } else { // if the type is larger than one word, then we use RETD to return data - // calculate the value of $rB by adding the stack size * 8 to the start pointer + // RB is the size_in_bytes let rb_register = register_sequencer.next(); - let size_in_bytes = match VirtualImmediate12::new( - size_of_main_func_return_bytes, - main_function.return_type_span.clone(), - ) { - Ok(o) => o, - Err(e) => { - errors.push(e); - return err(warnings, errors); - } - }; + let size_bytes = + namespace.insert_data_value(&Literal::U64(size_of_main_func_return_bytes)); // `return_register` is $rA asm_buf.push(Op { - opcode: Either::Left(VirtualOp::ADDI( - rb_register.clone(), - return_register.clone(), - size_in_bytes, - )), + opcode: Either::Left(VirtualOp::LWDataId(rb_register.clone(), size_bytes)), owning_span: Some(main_function.return_type_span), - comment: "calculating rB for RETD".into(), + comment: "loading rB for RETD".into(), }); asm_buf.push(Op { opcode: Either::Left(VirtualOp::LOG( @@ -694,7 +682,7 @@ pub(crate) fn compile_ast_to_asm<'sc>( comment: "".into(), }); - // now $rB has $rA + size_of_type_in_bytes + // now $rB has the size of the type in bytes asm_buf.push(Op { owning_span: None, opcode: Either::Left(VirtualOp::RETD(return_register, rb_register)), diff --git a/test/Cargo.toml b/test/Cargo.toml index 1f0f0bb12a7..673b9b49fcf 100644 --- a/test/Cargo.toml +++ b/test/Cargo.toml @@ -9,6 +9,6 @@ edition = "2018" [dependencies] forc = { path = "../forc" } fuel-tx = { git = "ssh://git@github.com/FuelLabs/fuel-tx.git" } -fuel-vm = { path = "../../fuel-vm" } +fuel-vm = { git = "ssh://git@github.com/FuelLabs/fuel-vm.git" } fuel-asm = { git = "ssh://git@github.com/FuelLabs/fuel-asm.git" } rand = "0.8" diff --git a/test/src/e2e_vm_tests/mod.rs b/test/src/e2e_vm_tests/mod.rs index 0d72d197a9d..df41ce9fa0e 100644 --- a/test/src/e2e_vm_tests/mod.rs +++ b/test/src/e2e_vm_tests/mod.rs @@ -21,17 +21,17 @@ pub fn run() { ( "retd_b256", ProgramState::ReturnData(Bytes32::from([ - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, + 102, 104, 122, 173, 248, 98, 189, 119, 108, 143, 193, 139, 142, 159, 142, 32, 8, + 151, 20, 133, 110, 226, 51, 179, 144, 42, 89, 29, 13, 95, 41, 37, ])), ), - /* ( + ( "retd_struct", ProgramState::ReturnData(Bytes32::from([ - 198, 228, 61, 7, 162, 207, 184, 14, 142, 15, 158, 36, 138, 121, 140, 194, 99, 64, - 11, 124, 131, 161, 54, 143, 146, 216, 146, 99, 203, 92, 89, 164, + 2, 23, 32, 21, 62, 98, 71, 190, 175, 43, 135, 133, 106, 105, 116, 64, 126, 40, 204, + 235, 151, 159, 245, 170, 112, 203, 40, 158, 9, 238, 188, 213, ])), - )*/ + ), ]; project_names.into_iter().for_each(|(name, res)| { assert_eq!(crate::e2e_vm_tests::harness::runs_in_vm(name), res); From 0b514c9752f855c5995ad53d167a6ab1b98e49e1 Mon Sep 17 00:00:00 2001 From: Alexander Hansen Date: Mon, 20 Sep 2021 13:13:38 -0700 Subject: [PATCH 5/5] remove unneeded log --- core_lang/src/asm_generation/mod.rs | 10 ---------- test/src/e2e_vm_tests/harness.rs | 3 ++- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/core_lang/src/asm_generation/mod.rs b/core_lang/src/asm_generation/mod.rs index 6189169f124..c67ba4f2df5 100644 --- a/core_lang/src/asm_generation/mod.rs +++ b/core_lang/src/asm_generation/mod.rs @@ -671,16 +671,6 @@ pub(crate) fn compile_ast_to_asm<'sc>( owning_span: Some(main_function.return_type_span), comment: "loading rB for RETD".into(), }); - asm_buf.push(Op { - opcode: Either::Left(VirtualOp::LOG( - return_register.clone(), - rb_register.clone(), - VirtualRegister::Constant(ConstantRegister::Zero), - VirtualRegister::Constant(ConstantRegister::Zero), - )), - owning_span: None, - comment: "".into(), - }); // now $rB has the size of the type in bytes asm_buf.push(Op { diff --git a/test/src/e2e_vm_tests/harness.rs b/test/src/e2e_vm_tests/harness.rs index 4eb1afd86b7..8fd8657c942 100644 --- a/test/src/e2e_vm_tests/harness.rs +++ b/test/src/e2e_vm_tests/harness.rs @@ -75,7 +75,8 @@ pub(crate) fn runs_in_vm(file_name: &str) -> ProgramState { ); let block_height = (u32::MAX >> 1) as u64; tx_to_test.validate(block_height).unwrap(); - dbg!(Interpreter::transition(&mut storage, tx_to_test).unwrap()) + Interpreter::transition(&mut storage, tx_to_test) + .unwrap() .state() .clone() }