mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-18 19:00:46 +00:00
core/vm: use amsterdam jump table in lookup
This commit is contained in:
parent
856e4d55d8
commit
5c6e3a7d1d
2 changed files with 35 additions and 0 deletions
|
|
@ -28,6 +28,8 @@ func LookupInstructionSet(rules params.Rules) (JumpTable, error) {
|
|||
switch {
|
||||
case rules.IsVerkle:
|
||||
return newCancunInstructionSet(), errors.New("verkle-fork not defined yet")
|
||||
case rules.IsAmsterdam:
|
||||
return newAmsterdamInstructionSet(), nil
|
||||
case rules.IsOsaka:
|
||||
return newOsakaInstructionSet(), nil
|
||||
case rules.IsPrague:
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ package vm
|
|||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/params"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
|
@ -33,3 +34,35 @@ func TestJumpTableCopy(t *testing.T) {
|
|||
require.Equal(t, uint64(100), deepCopy[SLOAD].constantGas)
|
||||
require.Equal(t, uint64(0), tbl[SLOAD].constantGas)
|
||||
}
|
||||
|
||||
func TestLookupInstructionSetAmsterdam(t *testing.T) {
|
||||
jt, err := LookupInstructionSet(params.Rules{
|
||||
IsMerge: true,
|
||||
IsShanghai: true,
|
||||
IsCancun: true,
|
||||
IsPrague: true,
|
||||
IsOsaka: true,
|
||||
IsAmsterdam: true,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
|
||||
require.True(t, jt[SLOTNUM].HasCost())
|
||||
require.True(t, jt[DUPN].HasCost())
|
||||
require.True(t, jt[SWAPN].HasCost())
|
||||
require.True(t, jt[EXCHANGE].HasCost())
|
||||
}
|
||||
|
||||
func TestAmsterdamOpcodeActivation(t *testing.T) {
|
||||
amsterdam := newAmsterdamInstructionSet()
|
||||
osaka := newOsakaInstructionSet()
|
||||
|
||||
require.True(t, amsterdam[SLOTNUM].HasCost())
|
||||
require.True(t, amsterdam[DUPN].HasCost())
|
||||
require.True(t, amsterdam[SWAPN].HasCost())
|
||||
require.True(t, amsterdam[EXCHANGE].HasCost())
|
||||
|
||||
require.False(t, osaka[SLOTNUM].HasCost())
|
||||
require.False(t, osaka[DUPN].HasCost())
|
||||
require.False(t, osaka[SWAPN].HasCost())
|
||||
require.False(t, osaka[EXCHANGE].HasCost())
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue