Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2229,7 +2229,7 @@ workflows:
notify: true
mentions: "@proofs-team"
no_output_timeout: 90m
test_timeout: 240m
test_timeout: 480m
resource_class: ethereum-optimism/latitude-fps-1
context:
- slack
Expand Down
2 changes: 1 addition & 1 deletion cannon/cmd/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -395,7 +395,7 @@ func Run(ctx *cli.Context) error {
}
}

state, err := versions.LoadStateFromFile(ctx.Path(RunInputFlag.Name))
state, err := versions.LoadStateFromFileWithLargeICache(ctx.Path(RunInputFlag.Name))
if err != nil {
return fmt.Errorf("failed to load state: %w", err)
}
Expand Down
18 changes: 7 additions & 11 deletions cannon/mipsevm/memory/memory.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,16 @@ type PageIndex interface {
New(pages map[Word]*CachedPage) PageIndex
}

func NewMemory(sizes ...arch.Word) *Memory {
codeSize := arch.Word(1 << 31) // Default: 2 GiB code
heapSize := arch.Word(1 << 31) // Default: 2 GiB heap

if len(sizes) > 0 && sizes[0] != 0 {
codeSize = sizes[0]
}
if len(sizes) > 1 && sizes[1] != 0 {
heapSize = sizes[1]
}

func NewMemoryWithLargeRegions() *Memory {
const codeSize = 1 << 31
const heapSize = 1 << 31
return NewBinaryTreeMemory(codeSize, heapSize)
}

func NewMemory() *Memory {
return NewBinaryTreeMemory(4096, 4096)
}

// start end size gap
func (m *Memory) GetAllocatedRanges() [][4]Word {
var ranges [][4]Word
Expand Down
8 changes: 7 additions & 1 deletion cannon/mipsevm/multithreaded/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ type State struct {

// LastHint is optional metadata, and not part of the VM state itself.
LastHint hexutil.Bytes

UseLargeICache bool
}

var _ mipsevm.FPVMState = (*State)(nil)
Expand Down Expand Up @@ -333,7 +335,11 @@ func (s *State) Serialize(out io.Writer) error {

func (s *State) Deserialize(in io.Reader) error {
bin := serialize.NewBinaryReader(in)
s.Memory = memory.NewMemory()
if s.UseLargeICache {
s.Memory = memory.NewMemoryWithLargeRegions()
} else {
s.Memory = memory.NewMemory()
}
if err := s.Memory.Deserialize(in); err != nil {
return err
}
Expand Down
7 changes: 0 additions & 7 deletions cannon/mipsevm/multithreaded/testutil/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"github.com/ethereum-optimism/optimism/cannon/mipsevm"
"github.com/ethereum-optimism/optimism/cannon/mipsevm/arch"
"github.com/ethereum-optimism/optimism/cannon/mipsevm/exec"
"github.com/ethereum-optimism/optimism/cannon/mipsevm/memory"
"github.com/ethereum-optimism/optimism/cannon/mipsevm/multithreaded"
"github.com/ethereum-optimism/optimism/cannon/mipsevm/testutil"
)
Expand Down Expand Up @@ -202,9 +201,3 @@ func RandomState(seed int) *multithreaded.State {
mut.Randomize(int64(seed))
return state
}

func WithRegionSize(codeSize arch.Word, heapSize arch.Word) StateOption {
return func(state *StateMutator) {
state.state.Memory = memory.NewMemory(codeSize, heapSize)
}
}
10 changes: 5 additions & 5 deletions cannon/mipsevm/tests/difftester_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func TestDiffTester_Run_SimpleTest(t *testing.T) {
// Run tests
tRunner := newMockTestRunner(t)
NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
run(tRunner, testCases)

Expand Down Expand Up @@ -109,7 +109,7 @@ func TestDiffTester_Run_WithSteps(t *testing.T) {
// Run tests
tRunner := newMockTestRunner(t)
NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
run(tRunner, cases, WithSteps(oc.steps))

Expand Down Expand Up @@ -187,7 +187,7 @@ func TestDiffTester_Run_WithMemModifications(t *testing.T) {

tRunner := newMockTestRunner(t)
NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(pc), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(pc)).
SetExpectations(setExpectations).
run(tRunner, testCases, opts...)

Expand Down Expand Up @@ -244,7 +244,7 @@ func TestDiffTester_Run_WithPanic(t *testing.T) {
// Run tests
tRunner := newMockTestRunner(t)
NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
run(tRunner, testCases)

Expand Down Expand Up @@ -300,7 +300,7 @@ func TestDiffTester_Run_WithVm(t *testing.T) {
// Run tests
tRunner := newMockTestRunner(t)
NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
run(tRunner, testCases, WithVm(vm))

Expand Down
4 changes: 2 additions & 2 deletions cannon/mipsevm/tests/evm_common64_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ func TestEVM_SingleStep_Shift64(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(pc), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(pc)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -567,7 +567,7 @@ func TestEVM_SingleStep_DCloDClz64(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
31 changes: 14 additions & 17 deletions cannon/mipsevm/tests/evm_common_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,6 @@ import (
"github.com/ethereum-optimism/optimism/cannon/mipsevm/versions"
)

const testCodeRegionSize = 4096
const testHeapSize = 4096

type insnCache interface {
UpdateInstructionCache(pc arch.Word)
}
Expand Down Expand Up @@ -75,7 +72,7 @@ func TestEVM_SingleStep_Jump(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -178,7 +175,7 @@ func TestEVM_SingleStep_Lui(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -222,7 +219,7 @@ func TestEVM_SingleStep_CloClz(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -271,7 +268,7 @@ func TestEVM_SingleStep_MovzMovn(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(pc), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(pc)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -309,7 +306,7 @@ func TestEVM_SingleStep_MfhiMflo(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -384,7 +381,7 @@ func TestEVM_SingleStep_MthiMtlo(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -429,7 +426,7 @@ func TestEVM_SingleStep_BeqBne(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(pc), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(pc)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -492,7 +489,7 @@ func TestEVM_SingleStep_SlSr(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(pc), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(pc)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -543,7 +540,7 @@ func TestEVM_SingleStep_JrJalr(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -572,7 +569,7 @@ func TestEVM_SingleStep_Sync(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -630,7 +627,7 @@ func TestEVM_MMap(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -721,7 +718,7 @@ func TestEVM_SysGetRandom(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithStep(step), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithStep(step)).
SetExpectations(setExpectations).
Run(t, cases, SkipAutomaticMemoryReservationTests())
//Was getting failure from the “automatic memory reservation” modifier that the DiffTester adds.
Expand Down Expand Up @@ -915,7 +912,7 @@ func TestEVM_SysWriteHint(t *testing.T) {

po := func() mipsevm.PreimageOracle { return &testutil.HintTrackingOracle{} }
NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
PostCheck(postCheck).
Run(t, cases, WithPreimageOracle(po))
Expand Down Expand Up @@ -970,7 +967,7 @@ func TestEVM_Fault(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down
16 changes: 8 additions & 8 deletions cannon/mipsevm/tests/evm_multithreaded64_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func TestEVM_MT64_LL(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(0x40), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(0x40)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -200,7 +200,7 @@ func TestEVM_MT64_SC(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases, SkipAutomaticMemoryReservationTests())
}
Expand Down Expand Up @@ -279,7 +279,7 @@ func TestEVM_MT64_LLD(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(0x40), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(0x40)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -385,7 +385,7 @@ func TestEVM_MT64_SCD(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases, SkipAutomaticMemoryReservationTests())
}
Expand Down Expand Up @@ -477,7 +477,7 @@ func TestEVM_MT_SysRead_Preimage64(t *testing.T) {

po := func() mipsevm.PreimageOracle { return testutil.StaticOracle(t, preimageValue) }
NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases, WithPreimageOracle(po))
}
Expand Down Expand Up @@ -518,7 +518,7 @@ func TestEVM_MT_SysReadWrite_WithEventFd(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -581,7 +581,7 @@ func TestEVM_MT_StoreOpsClearMemReservation64(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithPCAndNextPC(pc), mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState, mtutil.WithPCAndNextPC(pc)).
SetExpectations(setExpectations).
Run(t, cases)
}
Expand Down Expand Up @@ -702,7 +702,7 @@ func TestEVM_UndefinedSyscall(t *testing.T) {
}

NewDiffTester(testNamer).
InitState(initState, mtutil.WithRegionSize(testCodeRegionSize, testHeapSize)).
InitState(initState).
SetExpectations(setExpectations).
Run(t, cases)
}
Loading