diff --git a/etherlink/CHANGES_KERNEL.md b/etherlink/CHANGES_KERNEL.md index bdd0a0434fb5caca578650de9ebdcbdab942739c..721cef60a14b7db84f227dda00a7d6211d387855 100644 --- a/etherlink/CHANGES_KERNEL.md +++ b/etherlink/CHANGES_KERNEL.md @@ -34,6 +34,8 @@ Beta and Testnet, and allows users to deposit and withdraw FA 2.1 tokens. benefits from the same implementation to read/write primitives. (!14735) - Adds a storage for account's code. Code are referenced by their code hash. (!14369) +- Enable LTO (Link Time Optimization) during compilation to reduce tick consumption + and improve execution speed. (!14933) ### Bug fixes diff --git a/etherlink/kernel_evm/Cargo.toml b/etherlink/kernel_evm/Cargo.toml index a19731ec50d6c78dc963508a889ccb89c801053e..844b2b0e1975c96cab9bf79c747456cba45e3667 100644 --- a/etherlink/kernel_evm/Cargo.toml +++ b/etherlink/kernel_evm/Cargo.toml @@ -92,3 +92,8 @@ alloy-sol-types = { version = "0.7.6", default-features = false, features = [ "json", ] } alloy-primitives = { version = "0.7.6", default-features = false } + +[profile.release] +# Will apply heavy LTO which attempts to perform optimizations across all crates +# within the dependency graph. +lto = true diff --git a/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs b/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs index cab05b2685355629b0a679662db0ae3772bfff49..112097a75c908f469a365ed0c0d670652c8fc516 100644 --- a/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs +++ b/etherlink/kernel_evm/evm_execution/src/fa_bridge/mod.rs @@ -116,6 +116,7 @@ macro_rules! create_outcome_error { /// other contract. Therefore we assume there is no open /// account storage transaction, and we can open one. #[allow(clippy::too_many_arguments)] +#[cfg_attr(feature = "benchmark", inline(never))] pub fn execute_fa_deposit<'a, Host: Runtime>( host: &'a mut Host, block: &'a BlockConstants, diff --git a/etherlink/kernel_evm/kernel/src/bridge.rs b/etherlink/kernel_evm/kernel/src/bridge.rs index 5f1bf96da0f3e0ec73f67c6ec48ead24dd2acee1..0e89614407d92a0bc1c688316bc698544edcf2a6 100644 --- a/etherlink/kernel_evm/kernel/src/bridge.rs +++ b/etherlink/kernel_evm/kernel/src/bridge.rs @@ -59,6 +59,7 @@ pub struct Deposit { impl Deposit { /// Parses a deposit from a ticket transfer (internal inbox message). /// The "entrypoint" type is pair of ticket (FA2.1) and bytes (receiver address). + #[cfg_attr(feature = "benchmark", inline(never))] pub fn try_parse( ticket: FA2_1Ticket, receiver: MichelsonBytes, diff --git a/etherlink/kernel_evm/kernel/src/inbox.rs b/etherlink/kernel_evm/kernel/src/inbox.rs index ab2fb1be982f911829451a8c8aad68e38220948a..e1a6369b971ab5af0dc6eb01f3cec01a0a7ce90e 100644 --- a/etherlink/kernel_evm/kernel/src/inbox.rs +++ b/etherlink/kernel_evm/kernel/src/inbox.rs @@ -278,6 +278,7 @@ impl InputHandler for ProxyInput { Ok(()) } + #[cfg_attr(feature = "benchmark", inline(never))] fn handle_fa_deposit( host: &mut Host, fa_deposit: FaDeposit, @@ -379,6 +380,7 @@ impl InputHandler for SequencerInput { delayed_inbox.save_transaction(host, tx, previous_timestamp, level) } + #[cfg_attr(feature = "benchmark", inline(never))] fn handle_fa_deposit( host: &mut Host, fa_deposit: FaDeposit, @@ -456,6 +458,7 @@ fn handle_deposit( }) } +#[cfg_attr(feature = "benchmark", inline(never))] fn handle_fa_deposit( host: &mut Host, fa_deposit: FaDeposit,