OSDN Git Service

Feat(BVM): delete op abs and negate (#1900)
authorxuexiansong <s.xue.xian.c@gmail.com>
Mon, 19 Apr 2021 06:50:05 +0000 (14:50 +0800)
committerGitHub <noreply@github.com>
Mon, 19 Apr 2021 06:50:05 +0000 (14:50 +0800)
protocol/vm/numeric.go
protocol/vm/numeric_test.go
protocol/vm/ops.go
protocol/vm/stack_test.go
protocol/vm/vm_test.go

index edc895f..5289327 100644 (file)
@@ -1,8 +1,6 @@
 package vm
 
 import (
-       "math"
-
        "github.com/holiman/uint256"
 
        "github.com/bytom/bytom/math/checked"
@@ -91,40 +89,6 @@ func op2Div(vm *virtualMachine) error {
        return vm.pushBigInt(n.Rsh(n, 1), true)
 }
 
-func opNegate(vm *virtualMachine) error {
-       err := vm.applyCost(2)
-       if err != nil {
-               return err
-       }
-       n, err := vm.popInt64(true)
-       if err != nil {
-               return err
-       }
-       res, ok := checked.NegateInt64(n)
-       if !ok {
-               return ErrRange
-       }
-       return vm.pushInt64(res, true)
-}
-
-func opAbs(vm *virtualMachine) error {
-       err := vm.applyCost(2)
-       if err != nil {
-               return err
-       }
-       n, err := vm.popInt64(true)
-       if err != nil {
-               return err
-       }
-       if n == math.MinInt64 {
-               return ErrRange
-       }
-       if n < 0 {
-               n = -n
-       }
-       return vm.pushInt64(n, true)
-}
-
 func opNot(vm *virtualMachine) error {
        err := vm.applyCost(2)
        if err != nil {
index 65c5e21..25e5738 100644 (file)
@@ -91,38 +91,6 @@ func TestNumericOps(t *testing.T) {
                        dataStack: [][]byte{{1}},
                },
        }, {
-               op: OP_NEGATE,
-               startVM: &virtualMachine{
-                       runLimit:  50000,
-                       dataStack: [][]byte{{2}},
-               },
-               wantVM: &virtualMachine{
-                       runLimit:     49998,
-                       deferredCost: 7,
-                       dataStack:    [][]byte{Int64Bytes(-2)},
-               },
-       }, {
-               op: OP_ABS,
-               startVM: &virtualMachine{
-                       runLimit:  50000,
-                       dataStack: [][]byte{{2}},
-               },
-               wantVM: &virtualMachine{
-                       runLimit:  49998,
-                       dataStack: [][]byte{{2}},
-               },
-       }, {
-               op: OP_ABS,
-               startVM: &virtualMachine{
-                       runLimit:  50000,
-                       dataStack: [][]byte{Int64Bytes(-2)},
-               },
-               wantVM: &virtualMachine{
-                       runLimit:     49998,
-                       deferredCost: -7,
-                       dataStack:    [][]byte{{2}},
-               },
-       }, {
                op: OP_NOT,
                startVM: &virtualMachine{
                        runLimit:  50000,
@@ -398,7 +366,7 @@ func TestNumericOps(t *testing.T) {
        }}
 
        numops := []Op{
-               OP_1ADD, OP_1SUB, OP_2MUL, OP_2DIV, OP_NEGATE, OP_ABS, OP_NOT, OP_0NOTEQUAL,
+               OP_1ADD, OP_1SUB, OP_2MUL, OP_2DIV, OP_NOT, OP_0NOTEQUAL,
                OP_ADD, OP_SUB, OP_MUL, OP_DIV, OP_MOD, OP_LSHIFT, OP_RSHIFT, OP_BOOLAND,
                OP_BOOLOR, OP_NUMEQUAL, OP_NUMEQUALVERIFY, OP_NUMNOTEQUAL, OP_LESSTHAN,
                OP_LESSTHANOREQUAL, OP_GREATERTHAN, OP_GREATERTHANOREQUAL, OP_MIN, OP_MAX, OP_WITHIN,
index 19cb800..d59e016 100644 (file)
@@ -171,8 +171,6 @@ const (
        OP_1SUB               Op = 0x8c
        OP_2MUL               Op = 0x8d
        OP_2DIV               Op = 0x8e
-       OP_NEGATE             Op = 0x8f
-       OP_ABS                Op = 0x90
        OP_NOT                Op = 0x91
        OP_0NOTEQUAL          Op = 0x92
        OP_ADD                Op = 0x93
@@ -277,8 +275,6 @@ var (
                OP_1SUB:               {OP_1SUB, "1SUB", op1Sub},
                OP_2MUL:               {OP_2MUL, "2MUL", op2Mul},
                OP_2DIV:               {OP_2DIV, "2DIV", op2Div},
-               OP_NEGATE:             {OP_NEGATE, "NEGATE", opNegate},
-               OP_ABS:                {OP_ABS, "ABS", opAbs},
                OP_NOT:                {OP_NOT, "NOT", opNot},
                OP_0NOTEQUAL:          {OP_0NOTEQUAL, "0NOTEQUAL", op0NotEqual},
                OP_ADD:                {OP_ADD, "ADD", opAdd},
index 4fa708d..e1bb4b8 100644 (file)
@@ -339,8 +339,6 @@ func TestStackUnderflow(t *testing.T) {
                {1, op1Sub},
                {1, op2Mul},
                {1, op2Div},
-               {1, opNegate},
-               {1, opAbs},
                {1, opNot},
                {1, op0NotEqual},
                {2, opAdd},
index de66589..6714c58 100644 (file)
@@ -67,10 +67,6 @@ func doOKNotOK(t *testing.T, expectOK bool) {
                {"2DIV -1 NUMEQUAL", [][]byte{Int64Bytes(-1)}, true},
                {"2DIV -1 NUMEQUAL", [][]byte{Int64Bytes(-2)}, true},
 
-               {"ABS 1 NUMEQUAL", [][]byte{Int64Bytes(1)}, false},
-               {"ABS 1 NUMEQUAL", [][]byte{Int64Bytes(-1)}, false},
-               {"ABS 0 NUMEQUAL", [][]byte{Int64Bytes(0)}, false},
-
                {"0NOTEQUAL", [][]byte{Int64Bytes(1)}, false},
                {"0NOTEQUAL NOT", [][]byte{Int64Bytes(0)}, false},