From 3d446851681bdf1b10463cabe98e3751ffe75ff6 Mon Sep 17 00:00:00 2001 From: xermicus Date: Fri, 26 Apr 2024 10:51:41 +0200 Subject: [PATCH] measure flipper code size Signed-off-by: xermicus --- crates/integration/codesize.json | 7 ++++--- crates/integration/src/cases.rs | 14 ++++++++++++++ crates/integration/src/tests.rs | 7 +++---- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/crates/integration/codesize.json b/crates/integration/codesize.json index 2c017e8..3628488 100644 --- a/crates/integration/codesize.json +++ b/crates/integration/codesize.json @@ -1,5 +1,6 @@ { - "Baseline": 3551, - "Computation": 5912, - "Fibonacci": 4909 + "Flipper": 4204, + "Fibonacci": 5616, + "Computation": 6971, + "Baseline": 3743 } \ No newline at end of file diff --git a/crates/integration/src/cases.rs b/crates/integration/src/cases.rs index 9ec9363..ca04cea 100644 --- a/crates/integration/src/cases.rs +++ b/crates/integration/src/cases.rs @@ -10,6 +10,8 @@ pub struct Contract { sol!(contract Baseline { function baseline() public payable; }); +sol!(contract Flipper { function flip() public; }); + sol!(contract Computation { function odd_product(int32 n) public pure returns (int64); function triangle_number(int64 n) public pure returns (int64 sum); @@ -116,6 +118,17 @@ impl Contract { calldata: SHA1::sha1Call::new((pre,)).abi_encode(), } } + + pub fn flipper() -> Self { + let code = include_str!("../contracts/flipper.sol"); + let name = "Flipper"; + + Self { + evm_runtime: crate::compile_evm_bin_runtime(name, code), + pvm_runtime: crate::compile_blob(name, code), + calldata: Flipper::flipCall::new(()).abi_encode(), + } + } } #[cfg(test)] @@ -140,6 +153,7 @@ mod tests { let sizes = HashMap::from([ ("Baseline", Contract::baseline().pvm_runtime.len()), + ("Flipper", Contract::flipper().pvm_runtime.len()), ("Computation", Contract::odd_product(0).pvm_runtime.len()), ("Fibonacci", Contract::fib_iterative(0).pvm_runtime.len()), ]); diff --git a/crates/integration/src/tests.rs b/crates/integration/src/tests.rs index 7dfcad5..d9f1b0b 100644 --- a/crates/integration/src/tests.rs +++ b/crates/integration/src/tests.rs @@ -26,11 +26,10 @@ fn fibonacci() { #[test] fn flipper() { - let code = crate::compile_blob("Flipper", include_str!("../contracts/flipper.sol")); - let state = State::new(0xcde4efa9u32.to_be_bytes().to_vec()); - let (mut instance, export) = mock_runtime::prepare(&code, None); + let contract = Contract::flipper(); + let (mut instance, export) = mock_runtime::prepare(&contract.pvm_runtime, None); - let state = crate::mock_runtime::call(state, &mut instance, export); + let state = crate::mock_runtime::call(State::new(contract.calldata), &mut instance, export); assert_eq!(state.output.flags, 0); assert_eq!(state.storage[&U256::ZERO], U256::try_from(1).unwrap());