diff --git a/evm/src/cpu/kernel/asm/core/create.asm b/evm/src/cpu/kernel/asm/core/create.asm index 9ecc2600..25dd83da 100644 --- a/evm/src/cpu/kernel/asm/core/create.asm +++ b/evm/src/cpu/kernel/asm/core/create.asm @@ -150,7 +150,7 @@ after_constructor: // stack: code_size, leftover_gas, success, address, kexit_info %mul_const(@GAS_CODEDEPOSIT) // stack: code_size_cost, leftover_gas, success, address, kexit_info - DUP2 DUP2 GT %jumpi(fault_exception) + DUP2 DUP2 GT %jumpi(create_oog) SWAP1 SUB // stack: leftover_gas, success, address, kexit_info %pop_checkpoint @@ -213,6 +213,12 @@ create_code_too_large: %stack (code_size, leftover_gas, success, address, kexit_info) -> (kexit_info, 0) EXIT_KERNEL +create_oog: + %revert_checkpoint + %mstore_context_metadata(@CTX_METADATA_RETURNDATA_SIZE, 0) + %stack (code_size_cost, leftover_gas, success, address, kexit_info) -> (kexit_info, 0) + EXIT_KERNEL + %macro set_codehash %stack (addr, codehash) -> (addr, codehash, %%after) %jump(set_codehash)