core/vm: EIP-2315, JUMPSUB for the EVM (#20619)
* core/vm: implement EIP 2315, subroutines for the EVM * core/vm: eip 2315 - lintfix + check jump dest validity + check ret stack size constraints logger: markdown-friendly traces, validate jumpdest, more testcase, correct opcodes * core/vm: update subroutines acc to eip: disallow walk-into * core/vm/eips: gas cost changes for subroutines * core/vm: update opcodes for EIP-2315 * core/vm: define RETURNSUB as a 'jumping' operation + review concerns Co-authored-by: Martin Holst Swende <martin@swende.se>
This commit is contained in:
@ -23,6 +23,9 @@ import (
|
||||
|
||||
// List evm execution errors
|
||||
var (
|
||||
// ErrInvalidSubroutineEntry means that a BEGINSUB was reached via iteration,
|
||||
// as opposed to from a JUMPSUB instruction
|
||||
ErrInvalidSubroutineEntry = errors.New("invalid subroutine entry")
|
||||
ErrOutOfGas = errors.New("out of gas")
|
||||
ErrCodeStoreOutOfGas = errors.New("contract creation code storage out of gas")
|
||||
ErrDepth = errors.New("max call depth exceeded")
|
||||
@ -34,6 +37,8 @@ var (
|
||||
ErrWriteProtection = errors.New("write protection")
|
||||
ErrReturnDataOutOfBounds = errors.New("return data out of bounds")
|
||||
ErrGasUintOverflow = errors.New("gas uint64 overflow")
|
||||
ErrInvalidRetsub = errors.New("invalid retsub")
|
||||
ErrReturnStackExceeded = errors.New("return stack limit reached")
|
||||
)
|
||||
|
||||
// ErrStackUnderflow wraps an evm error when the items on the stack less
|
||||
|
Reference in New Issue
Block a user