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}