core, eth: unship EIP 2315
This commit is contained in:
		@@ -94,7 +94,6 @@ func testTwoOperandOp(t *testing.T, tests []TwoOperandTestcase, opFn executionFu
 | 
			
		||||
	var (
 | 
			
		||||
		env            = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack          = newstack()
 | 
			
		||||
		rstack         = newReturnStack()
 | 
			
		||||
		pc             = uint64(0)
 | 
			
		||||
		evmInterpreter = env.interpreter.(*EVMInterpreter)
 | 
			
		||||
	)
 | 
			
		||||
@@ -105,7 +104,7 @@ func testTwoOperandOp(t *testing.T, tests []TwoOperandTestcase, opFn executionFu
 | 
			
		||||
		expected := new(uint256.Int).SetBytes(common.Hex2Bytes(test.Expected))
 | 
			
		||||
		stack.push(x)
 | 
			
		||||
		stack.push(y)
 | 
			
		||||
		opFn(&pc, evmInterpreter, &callCtx{nil, stack, rstack, nil})
 | 
			
		||||
		opFn(&pc, evmInterpreter, &callCtx{nil, stack, nil})
 | 
			
		||||
		if len(stack.data) != 1 {
 | 
			
		||||
			t.Errorf("Expected one item on stack after %v, got %d: ", name, len(stack.data))
 | 
			
		||||
		}
 | 
			
		||||
@@ -220,7 +219,7 @@ func TestAddMod(t *testing.T) {
 | 
			
		||||
		stack.push(z)
 | 
			
		||||
		stack.push(y)
 | 
			
		||||
		stack.push(x)
 | 
			
		||||
		opAddmod(&pc, evmInterpreter, &callCtx{nil, stack, nil, nil})
 | 
			
		||||
		opAddmod(&pc, evmInterpreter, &callCtx{nil, stack, nil})
 | 
			
		||||
		actual := stack.pop()
 | 
			
		||||
		if actual.Cmp(expected) != 0 {
 | 
			
		||||
			t.Errorf("Testcase %d, expected  %x, got %x", i, expected, actual)
 | 
			
		||||
@@ -231,10 +230,10 @@ func TestAddMod(t *testing.T) {
 | 
			
		||||
// getResult is a convenience function to generate the expected values
 | 
			
		||||
func getResult(args []*twoOperandParams, opFn executionFunc) []TwoOperandTestcase {
 | 
			
		||||
	var (
 | 
			
		||||
		env           = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack, rstack = newstack(), newReturnStack()
 | 
			
		||||
		pc            = uint64(0)
 | 
			
		||||
		interpreter   = env.interpreter.(*EVMInterpreter)
 | 
			
		||||
		env         = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack       = newstack()
 | 
			
		||||
		pc          = uint64(0)
 | 
			
		||||
		interpreter = env.interpreter.(*EVMInterpreter)
 | 
			
		||||
	)
 | 
			
		||||
	result := make([]TwoOperandTestcase, len(args))
 | 
			
		||||
	for i, param := range args {
 | 
			
		||||
@@ -242,7 +241,7 @@ func getResult(args []*twoOperandParams, opFn executionFunc) []TwoOperandTestcas
 | 
			
		||||
		y := new(uint256.Int).SetBytes(common.Hex2Bytes(param.y))
 | 
			
		||||
		stack.push(x)
 | 
			
		||||
		stack.push(y)
 | 
			
		||||
		opFn(&pc, interpreter, &callCtx{nil, stack, rstack, nil})
 | 
			
		||||
		opFn(&pc, interpreter, &callCtx{nil, stack, nil})
 | 
			
		||||
		actual := stack.pop()
 | 
			
		||||
		result[i] = TwoOperandTestcase{param.x, param.y, fmt.Sprintf("%064x", actual)}
 | 
			
		||||
	}
 | 
			
		||||
@@ -282,7 +281,7 @@ func TestJsonTestcases(t *testing.T) {
 | 
			
		||||
func opBenchmark(bench *testing.B, op executionFunc, args ...string) {
 | 
			
		||||
	var (
 | 
			
		||||
		env            = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack, rstack  = newstack(), newReturnStack()
 | 
			
		||||
		stack          = newstack()
 | 
			
		||||
		evmInterpreter = NewEVMInterpreter(env, env.vmConfig)
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
@@ -300,7 +299,7 @@ func opBenchmark(bench *testing.B, op executionFunc, args ...string) {
 | 
			
		||||
			a.SetBytes(arg)
 | 
			
		||||
			stack.push(a)
 | 
			
		||||
		}
 | 
			
		||||
		op(&pc, evmInterpreter, &callCtx{nil, stack, rstack, nil})
 | 
			
		||||
		op(&pc, evmInterpreter, &callCtx{nil, stack, nil})
 | 
			
		||||
		stack.pop()
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -516,7 +515,7 @@ func BenchmarkOpIsZero(b *testing.B) {
 | 
			
		||||
func TestOpMstore(t *testing.T) {
 | 
			
		||||
	var (
 | 
			
		||||
		env            = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack, rstack  = newstack(), newReturnStack()
 | 
			
		||||
		stack          = newstack()
 | 
			
		||||
		mem            = NewMemory()
 | 
			
		||||
		evmInterpreter = NewEVMInterpreter(env, env.vmConfig)
 | 
			
		||||
	)
 | 
			
		||||
@@ -526,12 +525,12 @@ func TestOpMstore(t *testing.T) {
 | 
			
		||||
	pc := uint64(0)
 | 
			
		||||
	v := "abcdef00000000000000abba000000000deaf000000c0de00100000000133700"
 | 
			
		||||
	stack.pushN(*new(uint256.Int).SetBytes(common.Hex2Bytes(v)), *new(uint256.Int))
 | 
			
		||||
	opMstore(&pc, evmInterpreter, &callCtx{mem, stack, rstack, nil})
 | 
			
		||||
	opMstore(&pc, evmInterpreter, &callCtx{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))
 | 
			
		||||
	opMstore(&pc, evmInterpreter, &callCtx{mem, stack, rstack, nil})
 | 
			
		||||
	opMstore(&pc, evmInterpreter, &callCtx{mem, stack, nil})
 | 
			
		||||
	if common.Bytes2Hex(mem.GetCopy(0, 32)) != "0000000000000000000000000000000000000000000000000000000000000001" {
 | 
			
		||||
		t.Fatalf("Mstore failed to overwrite previous value")
 | 
			
		||||
	}
 | 
			
		||||
@@ -540,7 +539,7 @@ func TestOpMstore(t *testing.T) {
 | 
			
		||||
func BenchmarkOpMstore(bench *testing.B) {
 | 
			
		||||
	var (
 | 
			
		||||
		env            = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack, rstack  = newstack(), newReturnStack()
 | 
			
		||||
		stack          = newstack()
 | 
			
		||||
		mem            = NewMemory()
 | 
			
		||||
		evmInterpreter = NewEVMInterpreter(env, env.vmConfig)
 | 
			
		||||
	)
 | 
			
		||||
@@ -554,14 +553,14 @@ func BenchmarkOpMstore(bench *testing.B) {
 | 
			
		||||
	bench.ResetTimer()
 | 
			
		||||
	for i := 0; i < bench.N; i++ {
 | 
			
		||||
		stack.pushN(*value, *memStart)
 | 
			
		||||
		opMstore(&pc, evmInterpreter, &callCtx{mem, stack, rstack, nil})
 | 
			
		||||
		opMstore(&pc, evmInterpreter, &callCtx{mem, stack, nil})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func BenchmarkOpSHA3(bench *testing.B) {
 | 
			
		||||
	var (
 | 
			
		||||
		env            = NewEVM(BlockContext{}, TxContext{}, nil, params.TestChainConfig, Config{})
 | 
			
		||||
		stack, rstack  = newstack(), newReturnStack()
 | 
			
		||||
		stack          = newstack()
 | 
			
		||||
		mem            = NewMemory()
 | 
			
		||||
		evmInterpreter = NewEVMInterpreter(env, env.vmConfig)
 | 
			
		||||
	)
 | 
			
		||||
@@ -573,7 +572,7 @@ func BenchmarkOpSHA3(bench *testing.B) {
 | 
			
		||||
	bench.ResetTimer()
 | 
			
		||||
	for i := 0; i < bench.N; i++ {
 | 
			
		||||
		stack.pushN(*uint256.NewInt().SetUint64(32), *start)
 | 
			
		||||
		opSha3(&pc, evmInterpreter, &callCtx{mem, stack, rstack, nil})
 | 
			
		||||
		opSha3(&pc, evmInterpreter, &callCtx{mem, stack, nil})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user