diff --git a/forc-plugins/forc-client/tests/deploy.rs b/forc-plugins/forc-client/tests/deploy.rs index fcd8bc41d82..4b569fc1291 100644 --- a/forc-plugins/forc-client/tests/deploy.rs +++ b/forc-plugins/forc-client/tests/deploy.rs @@ -377,7 +377,7 @@ async fn test_simple_deploy() { node.kill().unwrap(); let expected = vec![DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "edd41822e8df9b4db6f8ff5ec094926c1ca46f5aa8bc499155085b5b85e84726", + "2258c97f9903554e7e562f29068f139b57d9cbcd14b7967ff1c9476bde4d71a9", ) .unwrap(), proxy: None, @@ -421,7 +421,7 @@ async fn test_deploy_submit_only() { node.kill().unwrap(); let expected = vec![DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "edd41822e8df9b4db6f8ff5ec094926c1ca46f5aa8bc499155085b5b85e84726", + "2258c97f9903554e7e562f29068f139b57d9cbcd14b7967ff1c9476bde4d71a9", ) .unwrap(), proxy: None, @@ -468,12 +468,12 @@ async fn test_deploy_fresh_proxy() { node.kill().unwrap(); let impl_contract = DeployedPackage::Contract(DeployedContract { id: ContractId::from_str( - "edd41822e8df9b4db6f8ff5ec094926c1ca46f5aa8bc499155085b5b85e84726", + "2258c97f9903554e7e562f29068f139b57d9cbcd14b7967ff1c9476bde4d71a9", ) .unwrap(), proxy: Some( ContractId::from_str( - "f1c07ddc6181e46e9ba1a7ade21946cf9f0730aaf9a04c9ecdf91e528ba77f86", + "00d50cae825707b7b4b5cbf791f4fd27ebe1605bf1a44bdb5420a20d5ae56a3f", ) .unwrap(), ), diff --git a/forc/tests/cli_integration.rs b/forc/tests/cli_integration.rs index 61174f47e89..4bf9da854a5 100644 --- a/forc/tests/cli_integration.rs +++ b/forc/tests/cli_integration.rs @@ -49,10 +49,10 @@ fn test_forc_test_raw_logs() -> Result<(), rexpect::error::Error> { // Assert that the output is correct process.exp_string(" test test_log_4")?; process.exp_string("Raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12248,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12204,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; process.exp_string(" test test_log_2")?; process.exp_string("Raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12248,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12204,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; process.process.exit()?; Ok(()) @@ -74,11 +74,11 @@ fn test_forc_test_both_logs() -> Result<(), rexpect::error::Error> { process.exp_string(" test test_log_4")?; process.exp_string("Decoded log value: 4, log rb: 1515152261580153489")?; process.exp_string("Raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12248,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000004","digest":"8005f02d43fa06e7d0585fb64c961d57e318b27a145c857bcd3a6bdb413ff7fc","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12204,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; process.exp_string(" test test_log_2")?; process.exp_string("Decoded log value: 2, log rb: 1515152261580153489")?; process.exp_string("Raw logs:")?; - process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12248,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; + process.exp_string(r#"[{"LogData":{"data":"0000000000000002","digest":"cd04a4754498e06db5a13c5f371f1f04ff6d2470f24aa9bd886540e5dce77f70","id":"0000000000000000000000000000000000000000000000000000000000000000","is":10368,"len":8,"pc":12204,"ptr":67107840,"ra":0,"rb":1515152261580153489}}]"#)?; process.process.exit()?; Ok(()) } diff --git a/sway-core/src/asm_generation/fuel/optimizations/constant_propagate.rs b/sway-core/src/asm_generation/fuel/optimizations/constant_propagate.rs index 556352a5863..3425b57aaea 100644 --- a/sway-core/src/asm_generation/fuel/optimizations/constant_propagate.rs +++ b/sway-core/src/asm_generation/fuel/optimizations/constant_propagate.rs @@ -1,7 +1,8 @@ -use std::collections::hash_map::Entry; - +use crate::asm_lang::VirtualImmediate18; use either::Either; use rustc_hash::FxHashMap; +use std::{collections::hash_map::Entry, vec}; +use sway_types::Span; use crate::asm_lang::{ ConstantRegister, ControlFlowOp, JumpType, Label, Op, VirtualOp, VirtualRegister, @@ -9,66 +10,181 @@ use crate::asm_lang::{ use super::super::abstract_instruction_set::AbstractInstructionSet; -#[derive(Clone, Debug, PartialEq, Eq)] -enum KnownRegValue { +/// A register value is known to contain the value of this expression. +#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord)] +enum Expr { Const(u64), Eq(VirtualRegister), + Add(Vec), + Mul(Vec), + Sub(Box, Box), } -impl KnownRegValue { - /// If the value can be represented as a register, return it. +impl Expr { + /// If the value can be represented as a constant, return it. fn register(&self) -> Option { match self { - KnownRegValue::Const(0) => Some(VirtualRegister::Constant(ConstantRegister::Zero)), - KnownRegValue::Const(1) => Some(VirtualRegister::Constant(ConstantRegister::One)), - KnownRegValue::Eq(v) => Some(v.clone()), + Expr::Const(0) => Some(VirtualRegister::Constant(ConstantRegister::Zero)), + Expr::Const(1) => Some(VirtualRegister::Constant(ConstantRegister::One)), + Expr::Eq(v) => Some(v.clone()), _ => None, } } /// If the value can be represented as a constant, return it. - fn value(&self) -> Option { + fn integer(&self) -> Option { match self { - KnownRegValue::Const(v) => Some(*v), - KnownRegValue::Eq(VirtualRegister::Constant(ConstantRegister::Zero)) => Some(0), - KnownRegValue::Eq(VirtualRegister::Constant(ConstantRegister::One)) => Some(1), - KnownRegValue::Eq(_) => None, + Expr::Const(v) => Some(*v), + Expr::Eq(VirtualRegister::Constant(ConstantRegister::Zero)) => Some(0), + Expr::Eq(VirtualRegister::Constant(ConstantRegister::One)) => Some(1), + _ => None, } } /// Check if the value depends on value of another register. fn depends_on(&self, reg: &VirtualRegister) -> bool { match self { - KnownRegValue::Const(_) => false, - KnownRegValue::Eq(v) => v == reg, + Expr::Const(_) => false, + Expr::Eq(v) => v == reg, + Expr::Add(vs) => vs.iter().any(|v| v.depends_on(reg)), + Expr::Mul(vs) => vs.iter().any(|v| v.depends_on(reg)), + Expr::Sub(l, r) => l.depends_on(reg) || r.depends_on(reg), + } + } + + /// Simplify the expression, if possible. + fn simplify(self, ctx: &KnownValues) -> Self { + match self { + Expr::Eq(VirtualRegister::Constant(ConstantRegister::Zero)) => Self::Const(0), + Expr::Eq(VirtualRegister::Constant(ConstantRegister::One)) => Self::Const(1), + Expr::Eq(ref reg) => match ctx.resolve(reg) { + Some(res) => res.simplify(ctx), + None => self, + }, + Expr::Add(vs) => { + let mut simplified = Vec::new(); + for v in vs { + let v = v.simplify(ctx); + if v.integer() == Some(0) { + continue; + } + if let Expr::Add(vs) = v { + simplified.extend(vs); + } else { + simplified.push(v); + } + } + simplified.sort(); + + let mut i = 0; + while i + 1 < simplified.len() { + let lhs = simplified[i].integer(); + let rhs = simplified[i + 1].integer(); + if let (Some(l), Some(r)) = (lhs, rhs) { + if let Some(x) = l.checked_add(r) { + simplified[i] = Expr::Const(x); + simplified.remove(i + 1); + continue; + } + } + + i += 1; + } + if simplified.is_empty() { + Expr::Const(0) + } else if simplified.len() == 1 { + simplified.pop().expect("Checked in if condition") + } else { + Expr::Add(simplified) + } + } + Expr::Mul(vs) => { + let mut simplified = Vec::new(); + for v in vs { + let v = v.simplify(ctx); + if v.integer() == Some(0) { + // Short-circuit + simplified = vec![Expr::Const(0)]; + break; + } + if v.integer() == Some(1) { + continue; + } + if let Expr::Mul(vs) = v { + simplified.extend(vs); + } else { + simplified.push(v); + } + } + simplified.sort(); + + let mut i = 0; + while i + 1 < simplified.len() { + let lhs = simplified[i].integer(); + let rhs = simplified[i + 1].integer(); + if let (Some(l), Some(r)) = (lhs, rhs) { + if let Some(x) = l.checked_mul(r) { + simplified[i] = Expr::Const(x); + simplified.remove(i + 1); + continue; + } + } + + i += 1; + } + if simplified.is_empty() { + Expr::Const(1) + } else if simplified.len() == 1 { + simplified.pop().expect("Checked in if condition") + } else { + Expr::Mul(simplified) + } + } + Expr::Sub(lhs, rhs) => { + let lhs = lhs.simplify(ctx); + let rhs = rhs.simplify(ctx); + if lhs == rhs { + return Expr::Const(0); + } + match (lhs.integer(), rhs.integer()) { + (_, Some(0)) => lhs, + (Some(l), Some(r)) => match l.checked_sub(r) { + Some(v) => Expr::Const(v), + None => Expr::Sub(Box::new(lhs), Box::new(rhs)), + }, + _ => Expr::Sub(Box::new(lhs), Box::new(rhs)), + } + } + _ => self, } } } #[derive(Clone, Debug, Default)] struct KnownValues { - values: FxHashMap, + /// Register values + registers: FxHashMap, } impl KnownValues { /// Resolve a register to a known value. - fn resolve(&self, v: &VirtualRegister) -> Option { + fn resolve(&self, v: &VirtualRegister) -> Option { match v { - VirtualRegister::Constant(ConstantRegister::Zero) => Some(KnownRegValue::Const(0)), - VirtualRegister::Constant(ConstantRegister::One) => Some(KnownRegValue::Const(1)), - other => self.values.get(other).cloned(), + VirtualRegister::Constant(ConstantRegister::Zero) => Some(Expr::Const(0)), + VirtualRegister::Constant(ConstantRegister::One) => Some(Expr::Const(1)), + other => self.registers.get(other).cloned(), } } /// Clear values that depend on a register having a specific value. fn clear_dependent_on(&mut self, reg: &VirtualRegister) { - self.values.retain(|_, v| !v.depends_on(reg)); + self.registers.retain(|_, v| !v.depends_on(reg)); } /// Insert a known value for a register. - fn assign(&mut self, dst: VirtualRegister, value: KnownRegValue) { + fn assign(&mut self, dst: VirtualRegister, value: Expr) { self.clear_dependent_on(&dst); - self.values.insert(dst, value); + self.registers.insert(dst, value); } } @@ -86,22 +202,22 @@ impl ResetKnown { fn apply(&self, op: &Op, known_values: &mut KnownValues) { match self { ResetKnown::Full => { - known_values.values.clear(); + known_values.registers.clear(); } ResetKnown::NonVirtual => { Self::Defs.apply(op, known_values); known_values - .values + .registers .retain(|k, _| matches!(k, VirtualRegister::Virtual(_))); } ResetKnown::Defs => { for d in op.def_registers() { known_values.clear_dependent_on(d); - known_values.values.remove(d); + known_values.registers.remove(d); } for d in op.def_const_registers() { known_values.clear_dependent_on(d); - known_values.values.remove(d); + known_values.registers.remove(d); } } } @@ -146,7 +262,7 @@ impl AbstractInstructionSet { to, type_: JumpType::NotZero(reg), }) => { - if let Some(con) = known_values.resolve(reg).and_then(|r| r.value()) { + if let Some(con) = known_values.resolve(reg).and_then(|r| r.integer()) { if con == 0 { let Entry::Occupied(mut count) = jump_target_labels.entry(*to) else { unreachable!("Jump target label not found in jump_target_labels"); @@ -169,9 +285,21 @@ impl AbstractInstructionSet { } // Some ops are known to produce certain results, interpret them here. - let interpreted_op = match &op.opcode { + let mut interpreted_op = match &op.opcode { + Either::Left(VirtualOp::MOVE(dst, src)) => { + if let Some(known) = known_values.resolve(src) { + if known_values.resolve(dst) == Some(known.clone()) { + op.opcode = Either::Left(VirtualOp::NOOP); + } else { + known_values.assign(dst.clone(), known); + } + } else { + known_values.assign(dst.clone(), Expr::Eq(src.clone())); + } + true + } Either::Left(VirtualOp::MOVI(dst, imm)) => { - let imm = KnownRegValue::Const(imm.value() as u64); + let imm = Expr::Const(imm.value() as u64); if known_values.resolve(dst) == Some(imm.clone()) { op.opcode = Either::Left(VirtualOp::NOOP); } else { @@ -179,33 +307,126 @@ impl AbstractInstructionSet { } true } - Either::Left(VirtualOp::MOVE(dst, src)) => { - if let Some(known) = known_values.resolve(src) { - if known_values.resolve(dst) == Some(known.clone()) { - op.opcode = Either::Left(VirtualOp::NOOP); - } else { - known_values.assign(dst.clone(), known); - } + Either::Left(VirtualOp::ADD(dst, lhs, rhs)) => { + let lhs = Expr::Eq(lhs.clone()); + let rhs = Expr::Eq(rhs.clone()); + let expr = Expr::Add(vec![lhs, rhs]).simplify(&known_values); + if known_values.resolve(dst).as_ref() == Some(&expr) { + op.opcode = Either::Left(VirtualOp::NOOP); + } else { + known_values.assign(dst.clone(), expr); + } + true + } + Either::Left(VirtualOp::ADDI(dst, lhs, rhs)) => { + let lhs = Expr::Eq(lhs.clone()); + let rhs = Expr::Const(rhs.value() as u64); + let expr = Expr::Add(vec![lhs, rhs]).simplify(&known_values); + if known_values.resolve(dst).as_ref() == Some(&expr) { + op.opcode = Either::Left(VirtualOp::NOOP); } else { - known_values.assign(dst.clone(), KnownRegValue::Eq(src.clone())); + known_values.assign(dst.clone(), expr); } true } + Either::Left(VirtualOp::SUB(dst, lhs, rhs)) => { + let lhs = Expr::Eq(lhs.clone()); + let rhs = Expr::Eq(rhs.clone()); + let expr = Expr::Sub(Box::new(lhs), Box::new(rhs)).simplify(&known_values); + if known_values.resolve(dst).as_ref() == Some(&expr) { + op.opcode = Either::Left(VirtualOp::NOOP); + } else { + known_values.assign(dst.clone(), expr); + } + true + } + Either::Left(VirtualOp::SUBI(dst, lhs, rhs)) => { + let lhs = Expr::Eq(lhs.clone()); + let rhs = Expr::Const(rhs.value() as u64); + let expr = Expr::Sub(Box::new(lhs), Box::new(rhs)).simplify(&known_values); + if known_values.resolve(dst).as_ref() == Some(&expr) { + op.opcode = Either::Left(VirtualOp::NOOP); + } else { + known_values.assign(dst.clone(), expr); + } + true + } + Either::Left(VirtualOp::MUL(dst, lhs, rhs)) => { + let lhs = Expr::Eq(lhs.clone()); + let rhs = Expr::Eq(rhs.clone()); + let expr = Expr::Mul(vec![lhs, rhs]).simplify(&known_values); + if known_values.resolve(dst).as_ref() == Some(&expr) { + op.opcode = Either::Left(VirtualOp::NOOP); + } else { + known_values.assign(dst.clone(), expr); + } + true + } + Either::Left(VirtualOp::MULI(dst, lhs, rhs)) => { + let lhs = Expr::Eq(lhs.clone()); + let rhs = Expr::Const(rhs.value() as u64); + let expr = Expr::Mul(vec![lhs, rhs]).simplify(&known_values); + if known_values.resolve(dst).as_ref() == Some(&expr) { + op.opcode = Either::Left(VirtualOp::NOOP); + } else { + known_values.assign(dst.clone(), expr); + } + true + } + Either::Left(VirtualOp::EQ(dst, lhs, rhs)) => { + if let (Some(l), Some(r)) = ( + known_values.resolve(lhs).and_then(|v| v.integer()), + known_values.resolve(rhs).and_then(|v| v.integer()), + ) { + known_values.assign(dst.clone(), Expr::Const((l == r) as u64)); + true + } else { + false + } + } _ => false, }; + // If the final value can be set directly, do so. + if let Either::Left(op) = &mut op.opcode { + if !op.has_side_effect() { + let defs = op.def_registers(); + if defs.len() == 1 { + let def = defs.first().expect("len == 1 checked above"); + if let Some(known) = known_values.resolve(def) { + if let Some(v) = known.integer() { + if let Ok(imm) = VirtualImmediate18::new(v, Span::dummy()) { + *op = VirtualOp::MOVI((*def).clone(), imm); + interpreted_op = true; + } + } + } + } + } + } + // If we don't know how to interpret the op, it's outputs are not known. if !interpreted_op { let reset = match &op.opcode { Either::Left(op) => match op { + // These always require a full reset VirtualOp::ECAL(_, _, _, _) => ResetKnown::Full, + // These ops are known to not have register-related side effects + VirtualOp::GT(_, _, _) + | VirtualOp::GTF(_, _, _) + | VirtualOp::MCP(_, _, _) + | VirtualOp::MCPI(_, _, _) + | VirtualOp::LB(_, _, _) + | VirtualOp::LW(_, _, _) + | VirtualOp::SB(_, _, _) + | VirtualOp::SW(_, _, _) => ResetKnown::Defs, // TODO: this constraint can be relaxed _ if op.has_side_effect() => ResetKnown::Full, _ => ResetKnown::Defs, }, Either::Right(op) => match op { - // If this is a jump target, then multiple execution paths can lead to it, - // and we can't assume to know register values. + // If this is a jump target, then multiple jumps can reach it, and we can't + // assume to know register values. ControlFlowOp::Label(label) => { if jump_target_labels.contains_key(label) { ResetKnown::Full diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap index 15e005eb774..b6443b646e1 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/attributes_deprecated/stdout.snap @@ -182,4 +182,4 @@ warning: Function is deprecated ____ Compiled contract "attributes_deprecated" with 19 warnings. - Finished release [optimized + fuel] target(s) [1.008 KB] in ??? + Finished release [optimized + fuel] target(s) [992 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap index b401078da2b..44efc51ffa4 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/configurable_dedup_decode/stdout.snap @@ -391,7 +391,7 @@ addi $r0 $$locbase i320 ; get offset to local sub $$reta $pc $is ; get current instruction offset from instructions start ($is) srli $$reta $$reta i2 ; get current instruction offset in 32-bit words addi $$reta $$reta i4 ; [call]: set new return address -jmpf $zero i118 ; [call]: call main_8 +jmpf $zero i111 ; [call]: call main_8 move $r1 $$retv ; [call]: copy the return value movi $r2 i1024 ; initialize constant into register aloc $r2 @@ -473,7 +473,7 @@ move $$arg0 $r0 ; [call]: pass argument 0 sub $$reta $pc $is ; get current instruction offset from instructions start ($is) srli $$reta $$reta i2 ; get current instruction offset in 32-bit words addi $$reta $$reta i4 ; [call]: set new return address -jmpf $zero i21 ; [call]: call abi_decode_3 +jmpf $zero i16 ; [call]: call abi_decode_3 sw $$locbase $$retv i2 ; store word addi $r0 $$locbase i16 ; get offset to local movi $r1 i8 ; initialize constant into register @@ -484,31 +484,24 @@ move $$reta $r3 ; restore return address poph i524288 ; restore registers 40..64 popl i15 ; restore registers 16..40 jmp $$reta ; return from call -pshl i3 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function from_parts_1 -move $r0 $$arg2 ; save argument 2 (__ret_value) -move $r1 $$reta ; save return address sw $$arg2 $$arg0 i0 ; store word -move $$retv $r0 ; set return value -move $$reta $r1 ; restore return address +move $$retv $$arg2 ; set return value poph i524288 ; restore registers 40..64 -popl i3 ; restore registers 16..40 jmp $$reta ; return from call -pshl i15 ; save registers 16..40 +pshl i7 ; save registers 16..40 pshh i524288 ; save registers 40..64 move $$locbase $sp ; save locals base register for function abi_decode_3 -move $r0 $$reta ; save return address +lw $r0 $$arg0 i0 ; load word +lw $r0 $r0 i0 ; lw val ptr i0 lw $r1 $$arg0 i0 ; load word -lw $r1 $r1 i0 ; lw val ptr i0 -lw $r2 $$arg0 i0 ; load word -movi $r3 i8 ; initialize constant into register -add $r2 $r2 $r3 -sw $$arg0 $r2 i0 ; store word -move $$retv $r1 ; set return value -move $$reta $r0 ; restore return address +movi $r2 i8 ; initialize constant into register +add $r1 $r1 $r2 +sw $$arg0 $r1 i0 ; store word +move $$retv $r0 ; set return value poph i524288 ; restore registers 40..64 -popl i15 ; restore registers 16..40 +popl i7 ; restore registers 16..40 jmp $$reta ; return from call pshl i3 ; save registers 16..40 pshh i524288 ; save registers 40..64 @@ -525,4 +518,4 @@ data__0 .bytes[8] 00 00 00 00 00 00 00 02 ........ data__1 .bytes[8] 00 00 00 00 00 00 00 01 ........ - Finished release [optimized + fuel] target(s) [648 B] in ??? + Finished release [optimized + fuel] target(s) [624 B] in ??? diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap index f7031bc6a86..03f0b407d39 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg/stdout.snap @@ -20,12 +20,12 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg Compiling library std (sway-lib-std) Compiling script dbg (test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg) - Finished debug [unoptimized + fuel] target(s) [36.28 KB] in ??? + Finished debug [unoptimized + fuel] target(s) [36.088 KB] in ??? Running 1 test, filtered 0 tests tested -- dbg - test call_main ... ok (???, 96529 gas) + test call_main ... ok (???, 92445 gas) [src/main.sw:13:13] () = () [src/main.sw:15:13] true = true [src/main.sw:16:13] false = false diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap index 59733f1c6fc..ae92e3c9d39 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/intrinsics/dbg_release/stdout.snap @@ -6,7 +6,7 @@ ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count ecal $r3 $r0 $r1 $r2 ; ecal id fd buf count -ecal $r0 $r2 $r3 $$retv ; ecal id fd buf count +ecal $r3 $r1 $r2 $$retv ; ecal id fd buf count ecal $r2 $r1 $zero $zero ; ecal id fd zero zero ecal $r4 $r1 $r2 $r3 ; ecal id fd buf count ecal $r3 $r1 $r2 $one ; ecal id fd buf count @@ -27,6 +27,6 @@ ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero ecal $r0 $r1 $zero $zero ; ecal id fd zero zero -ecal $r0 $r3 $r2 $$retv ; ecal id fd buf count +ecal $r2 $r3 $r1 $$retv ; ecal id fd buf count ecal $r3 $r4 $r1 $r2 ; ecal id fd buf count ecal $r1 $r2 $$locbase $one ; ecal id fd buf count diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap index 8194b8347ea..f0637bbf3b3 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract/stdout.snap @@ -8,42 +8,42 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling contract panicking_contract (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_contract) - Finished release [optimized + fuel] target(s) [8.168 KB] in ??? + Finished release [optimized + fuel] target(s) [8.096 KB] in ??? Running 11 tests, filtered 0 tests tested -- panicking_contract - test test_directly_panicking_method ... ok (???, 1735 gas) + test test_directly_panicking_method ... ok (???, 1724 gas) Decoded log value: C(true), log rb: 5503570629422409978 Revert code: ffffffff00000000 - test test_nested_panic_inlined ... ok (???, 2905 gas) + test test_nested_panic_inlined ... ok (???, 2883 gas) Decoded log value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 Revert code: ffffffff00000004 - test test_nested_panic_inlined_same_revert_code ... ok (???, 2905 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 2883 gas) Decoded log value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 Revert code: ffffffff00000004 - test test_nested_panic_not_inlined ... ok (???, 3098 gas) + test test_nested_panic_not_inlined ... ok (???, 3076 gas) Decoded log value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 Revert code: ffffffff00000005 - test test_nested_panic_not_inlined_same_revert_code ... ok (???, 3098 gas) + test test_nested_panic_not_inlined_same_revert_code ... ok (???, 3076 gas) Decoded log value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 Revert code: ffffffff00000005 - test test_generic_panic_with_unit ... ok (???, 2055 gas) + test test_generic_panic_with_unit ... ok (???, 2045 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000003 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 2055 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 2045 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000003 - test test_generic_panic_with_str ... ok (???, 2068 gas) + test test_generic_panic_with_str ... ok (???, 2056 gas) Decoded log value: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 Revert code: ffffffff00000001 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 1750 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 1738 gas) Decoded log value: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 Revert code: ffffffff00000001 - test test_generic_panic_with_error_type_enum ... ok (???, 1880 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 1869 gas) Decoded log value: A, log rb: 5503570629422409978 Revert code: ffffffff00000002 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 2043 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 2032 gas) Decoded log value: B(42), log rb: 5503570629422409978 Revert code: ffffffff00000002 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap index 86cfba9ff5c..5ab27a327bc 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib/stdout.snap @@ -7,63 +7,63 @@ output: Building test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) - Finished release [optimized + fuel] target(s) [6.056 KB] in ??? + Finished release [optimized + fuel] target(s) [6 KB] in ??? Running 18 tests, filtered 0 tests tested -- panicking_lib - test test_nested_panic_inlined ... ok (???, 822 gas) + test test_nested_panic_inlined ... ok (???, 810 gas) Decoded log value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 Revert code: ffffffff00000000 - test test_nested_panic_inlined_same_revert_code ... ok (???, 822 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 810 gas) Decoded log value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 2721958641300806892 Revert code: ffffffff00000000 - test test_nested_panic_not_inlined ... ok (???, 803 gas) + test test_nested_panic_not_inlined ... ok (???, 791 gas) Decoded log value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 Revert code: ffffffff00000001 - test test_nested_panic_not_inlined_same_revert_code ... ok (???, 803 gas) + test test_nested_panic_not_inlined_same_revert_code ... ok (???, 791 gas) Decoded log value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 2721958641300806892 Revert code: ffffffff00000001 - test test_generic_panic_with_unit ... ok (???, 189 gas) + test test_generic_panic_with_unit ... ok (???, 188 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000002 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 189 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 188 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000002 - test test_generic_panic_with_str ... ok (???, 307 gas) + test test_generic_panic_with_str ... ok (???, 304 gas) Decoded log value: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 Revert code: ffffffff00000003 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 307 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 304 gas) Decoded log value: AsciiString { data: "generic panic different string" }, log rb: 10098701174489624218 Revert code: ffffffff00000003 - test test_generic_panic_with_error_type_enum_variant ... ok (???, 327 gas) + test test_generic_panic_with_error_type_enum_variant ... ok (???, 326 gas) Decoded log value: A, log rb: 2721958641300806892 Revert code: ffffffff00000004 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 327 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 326 gas) Decoded log value: A, log rb: 2721958641300806892 Revert code: ffffffff00000004 - test test_panic_without_arg ... ok (???, 189 gas) + test test_panic_without_arg ... ok (???, 188 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000005 - test test_panic_with_unit ... ok (???, 189 gas) + test test_panic_with_unit ... ok (???, 188 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000006 - test test_panic_with_str ... ok (???, 307 gas) + test test_panic_with_str ... ok (???, 304 gas) Decoded log value: AsciiString { data: "panic with string" }, log rb: 10098701174489624218 Revert code: ffffffff00000007 - test test_panic_with_error_type_enum ... ok (???, 431 gas) + test test_panic_with_error_type_enum ... ok (???, 430 gas) Decoded log value: C(true), log rb: 2721958641300806892 Revert code: ffffffff00000008 - test test_panic_with_generic_error_type_enum ... ok (???, 348 gas) + test test_panic_with_generic_error_type_enum ... ok (???, 347 gas) Decoded log value: A(42), log rb: 12408470889216862137 Revert code: ffffffff00000009 - test test_panic_with_nested_generic_error_type ... ok (???, 622 gas) + test test_panic_with_nested_generic_error_type ... ok (???, 621 gas) Decoded log value: B(B(C(true))), log rb: 14988555917426256081 Revert code: ffffffff0000000a - test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 348 gas) + test test_panic_with_generic_error_type_enum_with_abi_encode ... ok (???, 347 gas) Decoded log value: A(42), log rb: 17388243649088655852 Revert code: ffffffff0000000b - test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 622 gas) + test test_panic_with_nested_generic_error_type_enum_with_abi_encode ... ok (???, 621 gas) Decoded log value: B(B(C(true))), log rb: 3755100321495500961 Revert code: ffffffff0000000c diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap index 218f85ccf73..6114de0cefd 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap +++ b/test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script/stdout.snap @@ -8,42 +8,42 @@ output: Compiling library std (test/src/e2e_vm_tests/reduced_std_libs/sway-lib-std-core) Compiling library panicking_lib (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_lib) Compiling script panicking_script (test/src/e2e_vm_tests/test_programs/should_pass/language/panic_expression/panicking_script) - Finished release [optimized + fuel] target(s) [3.904 KB] in ??? + Finished release [optimized + fuel] target(s) [3.848 KB] in ??? Running 11 tests, filtered 0 tests tested -- panicking_script - test test_panic_in_main ... ok (???, 388 gas) + test test_panic_in_main ... ok (???, 386 gas) Decoded log value: C(true), log rb: 5503570629422409978 Revert code: ffffffff00000000 - test test_nested_panic_inlined ... ok (???, 806 gas) + test test_nested_panic_inlined ... ok (???, 793 gas) Decoded log value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 Revert code: ffffffff00000001 - test test_nested_panic_inlined_same_revert_code ... ok (???, 806 gas) + test test_nested_panic_inlined_same_revert_code ... ok (???, 793 gas) Decoded log value: E([AsciiString { data: "this" }, AsciiString { data: "is not" }, AsciiString { data: "the best practice" }]), log rb: 5503570629422409978 Revert code: ffffffff00000001 - test test_nested_panic_not_inlined ... ok (???, 787 gas) + test test_nested_panic_not_inlined ... ok (???, 774 gas) Decoded log value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 Revert code: ffffffff00000002 - test test_nested_panic_not_inlined_same_revert_code ... ok (???, 787 gas) + test test_nested_panic_not_inlined_same_revert_code ... ok (???, 774 gas) Decoded log value: E([AsciiString { data: "to have" }, AsciiString { data: "strings" }, AsciiString { data: "in error enum variants" }]), log rb: 5503570629422409978 Revert code: ffffffff00000002 - test test_generic_panic_with_unit ... ok (???, 189 gas) + test test_generic_panic_with_unit ... ok (???, 188 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000003 - test test_generic_panic_with_unit_same_revert_code ... ok (???, 189 gas) + test test_generic_panic_with_unit_same_revert_code ... ok (???, 188 gas) Decoded log value: (), log rb: 3330666440490685604 Revert code: ffffffff00000003 - test test_generic_panic_with_str ... ok (???, 288 gas) + test test_generic_panic_with_str ... ok (???, 285 gas) Decoded log value: AsciiString { data: "generic panic with string" }, log rb: 10098701174489624218 Revert code: ffffffff00000004 - test test_generic_panic_with_different_str_same_revert_code ... ok (???, 288 gas) + test test_generic_panic_with_different_str_same_revert_code ... ok (???, 285 gas) Decoded log value: AsciiString { data: "generic panic with different string" }, log rb: 10098701174489624218 Revert code: ffffffff00000004 - test test_generic_panic_with_error_type_enum ... ok (???, 312 gas) + test test_generic_panic_with_error_type_enum ... ok (???, 310 gas) Decoded log value: A, log rb: 5503570629422409978 Revert code: ffffffff00000005 - test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 369 gas) + test test_generic_panic_with_error_type_enum_different_variant_same_revert_code ... ok (???, 367 gas) Decoded log value: B(42), log rb: 5503570629422409978 Revert code: ffffffff00000005 diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw index 9761aa6e422..e142868fa4e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/array_of_structs_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x14ed3cd06c2947248f69d54bfa681fe40d26267be84df7e19e253622b7921bbe; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xff1e465593a247c32f9b53d7cf651a17fce6160f748ac6d46a369d889a939adb; // AUTO-CONTRACT-ID ../../test_contracts/array_of_structs_contract --release +const CONTRACT_ID = 0xdf2c2e1bf33db96a3e080f29151134efef09aaaa888592812f6497c3c81a2c98; // AUTO-CONTRACT-ID ../../test_contracts/array_of_structs_contract --release fn get_address() -> Option { Some(CONTRACT_ID.into()) diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw index a3fc2c76357..71df950d52f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/asset_ops_test/src/main.sw @@ -9,12 +9,12 @@ use test_fuel_coin_abi::*; #[cfg(experimental_new_encoding = false)] const FUEL_COIN_CONTRACT_ID = 0xec2277ebe007ade87e3d797c3b1e070dcd542d5ef8f038b471f262ef9cebc87c; #[cfg(experimental_new_encoding = true)] -const FUEL_COIN_CONTRACT_ID = 0x106ac7fa5a711e09843af5c0a9b76602c0e89d7321ef6e92fde6f812a7550d72; // AUTO-CONTRACT-ID ../../test_contracts/test_fuel_coin_contract --release +const FUEL_COIN_CONTRACT_ID = 0xfd9cfeeb41f00f4028a45d8115389d07b62cd77e6aeb17f68cc1e25544b729cd; // AUTO-CONTRACT-ID ../../test_contracts/test_fuel_coin_contract --release #[cfg(experimental_new_encoding = false)] const BALANCE_CONTRACT_ID = 0xf6cd545152ac83225e8e7df2efb5c6fa6e37bc9b9e977b5ea8103d28668925df; #[cfg(experimental_new_encoding = true)] -const BALANCE_CONTRACT_ID = 0x05db562355bd5cb6ba5bb7198c693964c6dc91bc4cd99c1183fa191a0635a290; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release +const BALANCE_CONTRACT_ID = 0x655bd0d03b70d7329b07c06eb2d22824ea2869cda1f73763d975280183c5f27c; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release fn main() -> bool { let default_gas = 1_000_000_000_000; diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw index 11eac2b80f4..81ecc1c8f82 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/bal_opcode/src/main.sw @@ -5,7 +5,7 @@ use balance_test_abi::BalanceTest; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xf6cd545152ac83225e8e7df2efb5c6fa6e37bc9b9e977b5ea8103d28668925df; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x05db562355bd5cb6ba5bb7198c693964c6dc91bc4cd99c1183fa191a0635a290; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release +const CONTRACT_ID = 0x655bd0d03b70d7329b07c06eb2d22824ea2869cda1f73763d975280183c5f27c; // AUTO-CONTRACT-ID ../../test_contracts/balance_test_contract --release fn main() -> bool { let balance_test_contract = abi(BalanceTest, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw index 7b97b625a7d..95485e00592 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_abi_with_tuples/src/main.sw @@ -6,7 +6,7 @@ use abi_with_tuples::{MyContract, Location, Person}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xfdc14550c8aee742cd556d0ab7f378b7be0d3b1e6e086c097352e94590d4ed02; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x3de5658ed72a7485a686bcf83e69b29c034b7ae0445b59ba28eb513fab4dc760; // AUTO-CONTRACT-ID ../../test_contracts/abi_with_tuples_contract --release +const CONTRACT_ID = 0xb3acb9b0fc5da64bdf9db8703d23133d005b595d0a0a40329b795afeda3c1b39; // AUTO-CONTRACT-ID ../../test_contracts/abi_with_tuples_contract --release fn main() -> bool { let the_abi = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw index ed09f03e04e..bf3d8445246 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_basic_storage/src/main.sw @@ -4,7 +4,7 @@ use basic_storage_abi::{BasicStorage, Quad}; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x94db39f409a31b9f2ebcadeea44378e419208c20de90f5d8e1e33dc1523754cb; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x8be6299315daa11cdda1a4633e3e9f2c0b3626d90bf3e22427404b4523391d65; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release +const CONTRACT_ID = 0x8ebdd230dcc829c0bf05a966e71cc9be7cf97e4a66b4b23cf32a271f5b5ddc30; // AUTO-CONTRACT-ID ../../test_contracts/basic_storage --release fn main() -> u64 { let addr = abi(BasicStorage, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw index e90b33d6dfe..6fe86a6c9cb 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_contract_with_type_aliases/src/main.sw @@ -5,7 +5,7 @@ use contract_with_type_aliases_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x0cbeb6efe3104b460be769bdc4ea101ebf16ccc16f2d7b667ec3e1c7f5ce35b5; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x426fe90d83e647002f912b18948752a3c0827149e5a19f4f9acc5e40933b4b11; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release +const CONTRACT_ID = 0x651ed7ad8f8265a5c319924a673a143a82356517b8d15e473d84a2cc2ea7540c; // AUTO-CONTRACT-ID ../../test_contracts/contract_with_type_aliases --release fn main() { let caller = abi(MyContract, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw index e276586f13a..22a581e73fa 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_increment_contract/src/main.sw @@ -6,7 +6,7 @@ use dynamic_contract_call::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xd1b4047af7ef111c023ab71069e01dc2abfde487c0a0ce1268e4f447e6c6e4c2; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x0c52e3139b53f027ccfec854404e4547d86965c6718d3d87a0a0c5b2bb8ea5f9; // AUTO-CONTRACT-ID ../../test_contracts/increment_contract --release +const CONTRACT_ID = 0xb3c457b50196fc211420bcee44dccda4384f3c139c5db118a76a4f2bc92dd9d8; // AUTO-CONTRACT-ID ../../test_contracts/increment_contract --release fn main() -> bool { let the_abi = abi(Incrementor, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw index bbb255bb8f8..237ef584f1f 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/call_storage_enum/src/main.sw @@ -5,7 +5,7 @@ use storage_enum_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xc601d11767195485a6654d566c67774134668863d8c797a8c69e8778fb1f89e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x5c67778ef8e01497172df0276e3639525810297d36fe539014414cdbcd7f0b51; // AUTO-CONTRACT-ID ../../test_contracts/storage_enum_contract --release +const CONTRACT_ID = 0x8f80b394bcdcea0f674bbc2882fdc20afbd825ff042bbb15db4f9540e701e367; // AUTO-CONTRACT-ID ../../test_contracts/storage_enum_contract --release fn main() -> u64 { let caller = abi(StorageEnum, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw index dbcfe95de73..4075590bed0 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_auth_test/src/main.sw @@ -5,7 +5,7 @@ use auth_testing_abi::AuthTesting; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xc2eec20491b53aab7232cbd27c31d15417b4e9daf0b89c74cc242ef1295f681f; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xc0f3d199122a2c865a458b35f2d7c791f239aeb08994fb9ef018a687254ec8b6; // AUTO-CONTRACT-ID ../../test_contracts/auth_testing_contract --release +const CONTRACT_ID = 0x47b90b5814291fbbb40d36d5080096ff7f0355c595d83177f04827feaeac822e; // AUTO-CONTRACT-ID ../../test_contracts/auth_testing_contract --release // should be false in the case of a script fn main() -> bool { diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw index 826d6d2b277..c001c6e316e 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/caller_context_test/src/main.sw @@ -6,7 +6,7 @@ use context_testing_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x6054c11cda000f5990373a4d61929396165be4dfdd61d5b7bd26da60ab0d8577; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0xa63673aa65ad568c6343fb7329dfbadcedf956aaf2efbd069aeaec5944e08494; // AUTO-CONTRACT-ID ../../test_contracts/context_testing_contract --release +const CONTRACT_ID = 0xb8d248f978b16eca48665b6799a98b96aa04781092d74f4fb1a4dd8cdeb7cd2a; // AUTO-CONTRACT-ID ../../test_contracts/context_testing_contract --release fn main() -> bool { let gas: u64 = u64::max(); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw index 9b210886db4..c95447dc872 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/nested_struct_args_caller/src/main.sw @@ -5,7 +5,7 @@ use nested_struct_args_abi::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0xe63d33a1b3a6903808b379f6a41a72fa8a370e8b76626775e7d9d2f9c4c5da40; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x8c01965f8049c5a3c1fe091c1bf0277bb3b2ddb2a858c6eab671564fd03257ef; // AUTO-CONTRACT-ID ../../test_contracts/nested_struct_args_contract --release +const CONTRACT_ID = 0x6e7a76dfcb62c6295f691a07e57ff15c915b883b94e702de4aa90db99ff15cbc; // AUTO-CONTRACT-ID ../../test_contracts/nested_struct_args_contract --release fn main() -> bool { let caller = abi(NestedStructArgs, CONTRACT_ID); diff --git a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw index 88cf4105569..798c394c822 100644 --- a/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw +++ b/test/src/e2e_vm_tests/test_programs/should_pass/require_contract_deployment/storage_access_caller/src/main.sw @@ -6,7 +6,7 @@ use std::hash::*; #[cfg(experimental_new_encoding = false)] const CONTRACT_ID = 0x3bc28acd66d327b8c1b9624c1fabfc07e9ffa1b5d71c2832c3bfaaf8f4b805e9; #[cfg(experimental_new_encoding = true)] -const CONTRACT_ID = 0x4eb6d2a6d5f916bcace10ee79914adcd51226ad1f64062f48eb13c0ff953cc2e; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release +const CONTRACT_ID = 0xdac5ff9d7ee336a72c3bf983f735dd4dffd717a15262ebd35351f98f33933908; // AUTO-CONTRACT-ID ../../test_contracts/storage_access_contract --release fn main() -> bool { let caller = abi(StorageAccess, CONTRACT_ID); diff --git a/test/src/sdk-harness/test_projects/auth/mod.rs b/test/src/sdk-harness/test_projects/auth/mod.rs index a75c3837a50..6bf8d1500aa 100644 --- a/test/src/sdk-harness/test_projects/auth/mod.rs +++ b/test/src/sdk-harness/test_projects/auth/mod.rs @@ -614,7 +614,7 @@ async fn can_get_predicate_address() { // Setup predicate. let hex_predicate_address: &str = - "0xf70528e17820e36c0868d25aac804f3e0750f90f0840d9e1d68a7e4e3c9290a8"; + "0x3a5669e8c4b9a35ca0879c3b0840cb4d6b2bc12a24b3c5d53a6d7238d7a9baf5"; let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); let predicate_bech32_address = Bech32Address::from(predicate_address); @@ -629,7 +629,7 @@ async fn can_get_predicate_address() { // If this test fails, it can be that the predicate address got changed. // Uncomment the next line, get the predicate address, and update it above. - dbg!(&predicate); + // dbg!(&predicate); // Next, we lock some assets in this predicate using the first wallet: // First wallet transfers amount to predicate. @@ -695,7 +695,7 @@ async fn when_incorrect_predicate_address_passed() { // Setup predicate with incorrect address. let hex_predicate_address: &str = - "0xf70528e17820e36c0868d25aac804f3e0750f90f0840d9e1d68a7e4e3c9290a8"; + "0x3a5669e8c4b9a35ca0879c3b0840cb4d6b2bc12a24b3c5d53a6d7238d7a9baf5"; let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); let predicate_data = AuthPredicateEncoder::default() @@ -740,7 +740,7 @@ async fn when_incorrect_predicate_address_passed() { async fn can_get_predicate_address_in_message() { // Setup predicate address. let hex_predicate_address: &str = - "0xf70528e17820e36c0868d25aac804f3e0750f90f0840d9e1d68a7e4e3c9290a8"; + "0x3a5669e8c4b9a35ca0879c3b0840cb4d6b2bc12a24b3c5d53a6d7238d7a9baf5"; let predicate_address = Address::from_str(hex_predicate_address).expect("failed to create Address from string"); let predicate_bech32_address = Bech32Address::from(predicate_address); @@ -791,7 +791,7 @@ async fn can_get_predicate_address_in_message() { // If this test fails, it can be that the predicate address got changed. // Uncomment the next line, get the predicate address, and update it above. - // dbg!(&predicate); + dbg!(&predicate); // Check predicate balance. let balance = predicate