diff options
author | obscuren <geffobscura@gmail.com> | 2014-07-01 17:26:45 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-07-01 17:26:45 +0800 |
commit | 92693e44599c44e606813d2c3259cc9f6f81a644 (patch) | |
tree | b108d081c3434256b5a8f11f671d3e8b0e07d08d /ethchain/vm.go | |
parent | 39263b674c1a8a13a1c29349a48b3cdc4c5948db (diff) | |
download | go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.tar go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.tar.gz go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.tar.bz2 go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.tar.lz go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.tar.xz go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.tar.zst go-tangerine-92693e44599c44e606813d2c3259cc9f6f81a644.zip |
The dragon has been slain. Consensus reached!
Diffstat (limited to 'ethchain/vm.go')
-rw-r--r-- | ethchain/vm.go | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/ethchain/vm.go b/ethchain/vm.go index 82591e274..3851d0d70 100644 --- a/ethchain/vm.go +++ b/ethchain/vm.go @@ -346,6 +346,29 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro } else { stack.Push(ethutil.BigFalse) } + + case SLT: + require(2) + x, y := stack.Popn() + vm.Printf(" %v < %v", y, x) + // x < y + if y.Cmp(x) < 0 { + stack.Push(ethutil.BigTrue) + } else { + stack.Push(ethutil.BigFalse) + } + case SGT: + require(2) + x, y := stack.Popn() + vm.Printf(" %v > %v", y, x) + + // x > y + if y.Cmp(x) > 0 { + stack.Push(ethutil.BigTrue) + } else { + stack.Push(ethutil.BigFalse) + } + case EQ: require(2) x, y := stack.Popn() @@ -660,7 +683,8 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro // Create a new callable closure closure := NewClosure(closure, stateObject, stateObject.script, vm.state, gas, closure.Price) // Executer the closure and get the return value (if any) - ret, _, err := closure.Call(vm, args, hook) + //ret, _, err := closure.Call(vm, args, hook) + ret, err, _ := Call(vm, closure, args) if err != nil { stack.Push(ethutil.BigFalse) @@ -699,7 +723,8 @@ func (vm *Vm) RunClosure(closure *Closure, hook DebugHook) (ret []byte, err erro return closure.Return(nil), nil default: - vmlogger.Debugf("Invalid opcode %x\n", op) + vmlogger.Debugf("(pc) %-3v Invalid opcode %x\n", pc, op) + fmt.Println(Code(closure.Script)) return closure.Return(nil), fmt.Errorf("Invalid opcode %x", op) } |