From 37bff8b06a4e0358c3ee65ec1e67895b7b128710 Mon Sep 17 00:00:00 2001 From: tommyrharper Date: Fri, 3 Mar 2023 10:42:57 +0000 Subject: [PATCH 1/2] perf: minor optimization of byte opcode function --- core/src/eval/bitwise.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/eval/bitwise.rs b/core/src/eval/bitwise.rs index 49883fd1c..20d3e2950 100644 --- a/core/src/eval/bitwise.rs +++ b/core/src/eval/bitwise.rs @@ -43,14 +43,16 @@ pub fn not(op1: U256) -> U256 { pub fn byte(op1: U256, op2: U256) -> U256 { let mut ret = U256::zero(); - for i in 0..256 { - if i < 8 && op1 < 32.into() { - let o: usize = op1.as_usize(); - let t = 255 - (7 - i + 8 * o); - let bit_mask = U256::one() << t; - let value = (op2 & bit_mask) >> t; - ret = ret.overflowing_add(value << i).0; - } + if op1 >= 32.into() { + return ret; + } + + for i in 0..8 { + let o: usize = op1.as_usize(); + let t = 255 - (7 - i + 8 * o); + let bit_mask = U256::one() << t; + let value = (op2 & bit_mask) >> t; + ret = ret.overflowing_add(value << i).0; } ret From 68ecfd3bd563db9eaae1f40814ca8eb3bffb5888 Mon Sep 17 00:00:00 2001 From: tommyrharper Date: Fri, 3 Mar 2023 10:46:03 +0000 Subject: [PATCH 2/2] refactor: remove byte early return statement --- core/src/eval/bitwise.rs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/core/src/eval/bitwise.rs b/core/src/eval/bitwise.rs index 20d3e2950..e6de2b6fd 100644 --- a/core/src/eval/bitwise.rs +++ b/core/src/eval/bitwise.rs @@ -43,16 +43,14 @@ pub fn not(op1: U256) -> U256 { pub fn byte(op1: U256, op2: U256) -> U256 { let mut ret = U256::zero(); - if op1 >= 32.into() { - return ret; - } - - for i in 0..8 { - let o: usize = op1.as_usize(); - let t = 255 - (7 - i + 8 * o); - let bit_mask = U256::one() << t; - let value = (op2 & bit_mask) >> t; - ret = ret.overflowing_add(value << i).0; + if op1 < 32.into() { + for i in 0..8 { + let o: usize = op1.as_usize(); + let t = 255 - (7 - i + 8 * o); + let bit_mask = U256::one() << t; + let value = (op2 & bit_mask) >> t; + ret = ret.overflowing_add(value << i).0; + } } ret