|
|
|
@ -525,12 +525,14 @@ func TestOpMstore(t *testing.T) { |
|
|
|
|
mem.Resize(64) |
|
|
|
|
pc := uint64(0) |
|
|
|
|
v := "abcdef00000000000000abba000000000deaf000000c0de00100000000133700" |
|
|
|
|
stack.pushN(*new(uint256.Int).SetBytes(common.Hex2Bytes(v)), *new(uint256.Int)) |
|
|
|
|
stack.push(new(uint256.Int).SetBytes(common.Hex2Bytes(v))) |
|
|
|
|
stack.push(new(uint256.Int)) |
|
|
|
|
opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) |
|
|
|
|
if got := common.Bytes2Hex(mem.GetCopy(0, 32)); got != v { |
|
|
|
|
t.Fatalf("Mstore fail, got %v, expected %v", got, v) |
|
|
|
|
} |
|
|
|
|
stack.pushN(*new(uint256.Int).SetUint64(0x1), *new(uint256.Int)) |
|
|
|
|
stack.push(new(uint256.Int).SetUint64(0x1)) |
|
|
|
|
stack.push(new(uint256.Int)) |
|
|
|
|
opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) |
|
|
|
|
if common.Bytes2Hex(mem.GetCopy(0, 32)) != "0000000000000000000000000000000000000000000000000000000000000001" { |
|
|
|
|
t.Fatalf("Mstore failed to overwrite previous value") |
|
|
|
@ -553,7 +555,8 @@ func BenchmarkOpMstore(bench *testing.B) { |
|
|
|
|
|
|
|
|
|
bench.ResetTimer() |
|
|
|
|
for i := 0; i < bench.N; i++ { |
|
|
|
|
stack.pushN(*value, *memStart) |
|
|
|
|
stack.push(value) |
|
|
|
|
stack.push(memStart) |
|
|
|
|
opMstore(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -572,7 +575,8 @@ func BenchmarkOpKeccak256(bench *testing.B) { |
|
|
|
|
|
|
|
|
|
bench.ResetTimer() |
|
|
|
|
for i := 0; i < bench.N; i++ { |
|
|
|
|
stack.pushN(*uint256.NewInt(32), *start) |
|
|
|
|
stack.push(uint256.NewInt(32)) |
|
|
|
|
stack.push(start) |
|
|
|
|
opKeccak256(&pc, evmInterpreter, &ScopeContext{mem, stack, nil}) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|