|
|
|
@ -600,16 +600,20 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) { |
|
|
|
|
case POP: |
|
|
|
|
require(1) |
|
|
|
|
stack.Pop() |
|
|
|
|
case DUP: |
|
|
|
|
require(1) |
|
|
|
|
stack.Push(stack.Peek()) |
|
|
|
|
case DUP1, DUP2, DUP3, DUP4, DUP5, DUP6, DUP7, DUP8, DUP9, DUP10, DUP11, DUP12, DUP13, DUP14, DUP15, DUP16: |
|
|
|
|
n := int(op - DUP1 + 1) |
|
|
|
|
stack.Dupn(n) |
|
|
|
|
|
|
|
|
|
self.Printf(" => [%d] 0x%x", n, stack.Peek().Bytes()) |
|
|
|
|
case SWAP1, SWAP2, SWAP3, SWAP4, SWAP5, SWAP6, SWAP7, SWAP8, SWAP9, SWAP10, SWAP11, SWAP12, SWAP13, SWAP14, SWAP15, SWAP16: |
|
|
|
|
n := int(op - SWAP1 + 1) |
|
|
|
|
x, y := stack.Swapn(n) |
|
|
|
|
|
|
|
|
|
self.Printf(" => 0x%x", stack.Peek().Bytes()) |
|
|
|
|
self.Printf(" => [%d] %x [0] %x", n, x.Bytes(), y.Bytes()) |
|
|
|
|
case DUP: |
|
|
|
|
// NOP
|
|
|
|
|
case SWAP: |
|
|
|
|
require(2) |
|
|
|
|
x, y := stack.Popn() |
|
|
|
|
stack.Push(y) |
|
|
|
|
stack.Push(x) |
|
|
|
|
// NOP
|
|
|
|
|
case MLOAD: |
|
|
|
|
require(1) |
|
|
|
|
offset := stack.Pop() |
|
|
|
|