foundry_evm_core/opcodes.rs
1//! Opcode utils
2
3use revm::interpreter::OpCode;
4
5/// Returns true if the opcode modifies memory.
6/// <https://bluealloy.github.io/revm/crates/interpreter/memory.html#opcodes>
7/// <https://github.com/crytic/evm-opcodes>
8#[inline]
9pub const fn modifies_memory(opcode: OpCode) -> bool {
10 matches!(
11 opcode,
12 OpCode::EXTCODECOPY |
13 OpCode::MLOAD |
14 OpCode::MSTORE |
15 OpCode::MSTORE8 |
16 OpCode::MCOPY |
17 OpCode::CODECOPY |
18 OpCode::CALLDATACOPY |
19 OpCode::RETURNDATACOPY |
20 OpCode::CALL |
21 OpCode::CALLCODE |
22 OpCode::DELEGATECALL |
23 OpCode::STATICCALL
24 )
25}