From 7dfdacf247b09c603f26dc50a71018aff3be0ce7 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Thu, 25 May 2023 16:47:55 +0200 Subject: [PATCH] Fix return and revert gas (#1058) --- evm/src/cpu/kernel/asm/core/terminate.asm | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/evm/src/cpu/kernel/asm/core/terminate.asm b/evm/src/cpu/kernel/asm/core/terminate.asm index a2a88835..46e44b1b 100644 --- a/evm/src/cpu/kernel/asm/core/terminate.asm +++ b/evm/src/cpu/kernel/asm/core/terminate.asm @@ -16,8 +16,13 @@ global sys_return: %stack (kexit_info, offset, size) -> (offset, size, kexit_info, offset, size) %add_or_fault DUP1 %ensure_reasonable_offset + // stack: offset+size, kexit_info, offset, size + DUP4 ISZERO %jumpi(return_zero_size) %update_mem_bytes - + %jump(return_after_gas) +return_zero_size: + POP +return_after_gas: // Load the parent's context. %mload_context_metadata(@CTX_METADATA_PARENT_CONTEXT) @@ -115,6 +120,13 @@ global sys_revert: %stack (kexit_info, offset, size) -> (offset, size, kexit_info, offset, size) %add_or_fault DUP1 %ensure_reasonable_offset + // stack: offset+size, kexit_info, offset, size + DUP4 ISZERO %jumpi(revert_zero_size) + %update_mem_bytes + %jump(revert_after_gas) +revert_zero_size: + POP +revert_after_gas: %update_mem_bytes // Load the parent's context.