core/vm: Cleanups & SUB output fix. Closes #1096
This commit is contained in:
parent
f7415c0bbc
commit
b419e2631a
|
@ -128,7 +128,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
mem.Resize(newMemSize.Uint64())
|
mem.Resize(newMemSize.Uint64())
|
||||||
|
|
||||||
switch op {
|
switch op {
|
||||||
// 0x20 range
|
|
||||||
case ADD:
|
case ADD:
|
||||||
x, y := stack.pop(), stack.pop()
|
x, y := stack.pop(), stack.pop()
|
||||||
self.Printf(" %v + %v", y, x)
|
self.Printf(" %v + %v", y, x)
|
||||||
|
@ -142,7 +141,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
stack.push(base)
|
stack.push(base)
|
||||||
case SUB:
|
case SUB:
|
||||||
x, y := stack.pop(), stack.pop()
|
x, y := stack.pop(), stack.pop()
|
||||||
self.Printf(" %v - %v", y, x)
|
self.Printf(" %v - %v", x, y)
|
||||||
|
|
||||||
base.Sub(x, y)
|
base.Sub(x, y)
|
||||||
|
|
||||||
|
@ -268,9 +267,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
}
|
}
|
||||||
case NOT:
|
case NOT:
|
||||||
stack.push(U256(new(big.Int).Not(stack.pop())))
|
stack.push(U256(new(big.Int).Not(stack.pop())))
|
||||||
//base.Sub(Pow256, stack.pop()).Sub(base, common.Big1)
|
|
||||||
//base = U256(base)
|
|
||||||
//stack.push(base)
|
|
||||||
case LT:
|
case LT:
|
||||||
x, y := stack.pop(), stack.pop()
|
x, y := stack.pop(), stack.pop()
|
||||||
self.Printf(" %v < %v", x, y)
|
self.Printf(" %v < %v", x, y)
|
||||||
|
@ -329,7 +325,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
stack.push(common.BigTrue)
|
stack.push(common.BigTrue)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x10 range
|
|
||||||
case AND:
|
case AND:
|
||||||
x, y := stack.pop(), stack.pop()
|
x, y := stack.pop(), stack.pop()
|
||||||
self.Printf(" %v & %v", y, x)
|
self.Printf(" %v & %v", y, x)
|
||||||
|
@ -390,7 +385,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
|
|
||||||
stack.push(base)
|
stack.push(base)
|
||||||
|
|
||||||
// 0x20 range
|
|
||||||
case SHA3:
|
case SHA3:
|
||||||
offset, size := stack.pop(), stack.pop()
|
offset, size := stack.pop(), stack.pop()
|
||||||
data := crypto.Sha3(mem.Get(offset.Int64(), size.Int64()))
|
data := crypto.Sha3(mem.Get(offset.Int64(), size.Int64()))
|
||||||
|
@ -398,7 +392,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
stack.push(common.BigD(data))
|
stack.push(common.BigD(data))
|
||||||
|
|
||||||
self.Printf(" => (%v) %x", size, data)
|
self.Printf(" => (%v) %x", size, data)
|
||||||
// 0x30 range
|
|
||||||
case ADDRESS:
|
case ADDRESS:
|
||||||
stack.push(common.Bytes2Big(context.Address().Bytes()))
|
stack.push(common.Bytes2Big(context.Address().Bytes()))
|
||||||
|
|
||||||
|
@ -486,7 +479,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
|
|
||||||
self.Printf(" => %x", context.Price)
|
self.Printf(" => %x", context.Price)
|
||||||
|
|
||||||
// 0x40 range
|
|
||||||
case BLOCKHASH:
|
case BLOCKHASH:
|
||||||
num := stack.pop()
|
num := stack.pop()
|
||||||
|
|
||||||
|
@ -527,7 +519,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
|
|
||||||
stack.push(self.env.GasLimit())
|
stack.push(self.env.GasLimit())
|
||||||
|
|
||||||
// 0x50 range
|
|
||||||
case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32:
|
case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32:
|
||||||
a := big.NewInt(int64(op - PUSH1 + 1))
|
a := big.NewInt(int64(op - PUSH1 + 1))
|
||||||
byts := getData(code, new(big.Int).Add(pc, big.NewInt(1)), a)
|
byts := getData(code, new(big.Int).Add(pc, big.NewInt(1)), a)
|
||||||
|
@ -553,12 +544,11 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
topics := make([]common.Hash, n)
|
topics := make([]common.Hash, n)
|
||||||
mStart, mSize := stack.pop(), stack.pop()
|
mStart, mSize := stack.pop(), stack.pop()
|
||||||
for i := 0; i < n; i++ {
|
for i := 0; i < n; i++ {
|
||||||
topics[i] = common.BigToHash(stack.pop()) //common.LeftPadBytes(stack.pop().Bytes(), 32)
|
topics[i] = common.BigToHash(stack.pop())
|
||||||
}
|
}
|
||||||
|
|
||||||
data := mem.Get(mStart.Int64(), mSize.Int64())
|
data := mem.Get(mStart.Int64(), mSize.Int64())
|
||||||
log := state.NewLog(context.Address(), topics, data, self.env.BlockNumber().Uint64())
|
log := state.NewLog(context.Address(), topics, data, self.env.BlockNumber().Uint64())
|
||||||
//log := &Log{context.Address(), topics, data, self.env.BlockNumber().Uint64()}
|
|
||||||
self.env.AddLog(log)
|
self.env.AddLog(log)
|
||||||
|
|
||||||
self.Printf(" => %v", log)
|
self.Printf(" => %v", log)
|
||||||
|
@ -568,7 +558,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
stack.push(val)
|
stack.push(val)
|
||||||
|
|
||||||
self.Printf(" => 0x%x", val.Bytes())
|
self.Printf(" => 0x%x", val.Bytes())
|
||||||
case MSTORE: // Store the value at stack top-1 in to memory at location stack top
|
case MSTORE:
|
||||||
// pop value of the stack
|
// pop value of the stack
|
||||||
mStart, val := stack.pop(), stack.pop()
|
mStart, val := stack.pop(), stack.pop()
|
||||||
mem.Set(mStart.Uint64(), 32, common.BigToBytes(val, 256))
|
mem.Set(mStart.Uint64(), 32, common.BigToBytes(val, 256))
|
||||||
|
@ -614,7 +604,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
|
|
||||||
case JUMPDEST:
|
case JUMPDEST:
|
||||||
case PC:
|
case PC:
|
||||||
//stack.push(big.NewInt(int64(pc)))
|
|
||||||
stack.push(pc)
|
stack.push(pc)
|
||||||
case MSIZE:
|
case MSIZE:
|
||||||
stack.push(big.NewInt(int64(mem.Len())))
|
stack.push(big.NewInt(int64(mem.Len())))
|
||||||
|
@ -622,7 +611,6 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
|
||||||
stack.push(context.Gas)
|
stack.push(context.Gas)
|
||||||
|
|
||||||
self.Printf(" => %x", context.Gas)
|
self.Printf(" => %x", context.Gas)
|
||||||
// 0x60 range
|
|
||||||
case CREATE:
|
case CREATE:
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
Loading…
Reference in New Issue