go-ethereum/core/vm
Guillaume Ballet 4dc7d46155
core/vm: implement stack arena (#33960)
Here, we change the EVM stack implementation to use an 'arena', i.e.
a shared allocation pool for sub-call stacks. The stack is now more
GC-friendly, since it is a slice of uint256 values instead of a slice of pointers.

Code that pushes an item to the stack has been changed to get() the top
item, then overwrite it.

The PR is a rewrite/rebase of #30362.

---------

Co-authored-by: Martin Holst Swende <martin@swende.se>
Co-authored-by: Marius van der Wijden <m.vanderwijden@live.de>
2026-04-28 11:10:44 +02:00
..
program
runtime core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
testdata
analysis_legacy.go
analysis_legacy_test.go
common.go
contract.go
contracts.go core: track the state access footprint (#34776) 2026-04-22 13:42:49 +08:00
contracts_fuzz_test.go core: track the state access footprint (#34776) 2026-04-22 13:42:49 +08:00
contracts_test.go core: track the state access footprint (#34776) 2026-04-22 13:42:49 +08:00
doc.go
eip7610.go
eip7610_test.go
eips.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
errors.go
evm.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
gas.go
gas_table.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
gas_table_test.go
gascosts.go
instructions.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
instructions_test.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
interface.go core: track the state access footprint (#34776) 2026-04-22 13:42:49 +08:00
interpreter.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
interpreter_test.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
jump_table.go
jump_table_export.go
jump_table_test.go
jumpdests.go
memory.go
memory_table.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
memory_test.go
opcodes.go
operations_acl.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
operations_verkle.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
stack.go core/vm: implement stack arena (#33960) 2026-04-28 11:10:44 +02:00
stack_table.go