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 {
|
switch {
|
||||||
case rules.IsVerkle:
|
case rules.IsVerkle:
|
||||||
return newCancunInstructionSet(), errors.New("verkle-fork not defined yet")
|
return newCancunInstructionSet(), errors.New("verkle-fork not defined yet")
|
||||||
|
case rules.IsAmsterdam:
|
||||||
|
return newAmsterdamInstructionSet(), nil
|
||||||
case rules.IsOsaka:
|
case rules.IsOsaka:
|
||||||
return newOsakaInstructionSet(), nil
|
return newOsakaInstructionSet(), nil
|
||||||
case rules.IsPrague:
|
case rules.IsPrague:
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ package vm
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/params"
|
||||||
"github.com/stretchr/testify/require"
|
"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(100), deepCopy[SLOAD].constantGas)
|
||||||
require.Equal(t, uint64(0), tbl[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