Fixed stack issue
This commit is contained in:
parent
3fc24013ef
commit
c51db4c940
|
@ -4,15 +4,16 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"container/list"
|
"container/list"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"math/big"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
"github.com/ethereum/eth-go/ethcrypto"
|
"github.com/ethereum/eth-go/ethcrypto"
|
||||||
"github.com/ethereum/eth-go/ethlog"
|
"github.com/ethereum/eth-go/ethlog"
|
||||||
"github.com/ethereum/eth-go/ethreact"
|
"github.com/ethereum/eth-go/ethreact"
|
||||||
"github.com/ethereum/eth-go/ethstate"
|
"github.com/ethereum/eth-go/ethstate"
|
||||||
"github.com/ethereum/eth-go/ethutil"
|
"github.com/ethereum/eth-go/ethutil"
|
||||||
"github.com/ethereum/eth-go/ethwire"
|
"github.com/ethereum/eth-go/ethwire"
|
||||||
"math/big"
|
|
||||||
"sync"
|
|
||||||
"time"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var statelogger = ethlog.NewLogger("STATE")
|
var statelogger = ethlog.NewLogger("STATE")
|
||||||
|
|
|
@ -18,7 +18,6 @@ func (self *Config) Get(name string) *Object {
|
||||||
case "DnsReg":
|
case "DnsReg":
|
||||||
objectAddr := configCtrl.GetStorage(ethutil.BigD([]byte{0}))
|
objectAddr := configCtrl.GetStorage(ethutil.BigD([]byte{0}))
|
||||||
domainAddr := (&Object{self.pipe.World().safeGet(objectAddr.Bytes())}).StorageString("DnsReg").Bytes()
|
domainAddr := (&Object{self.pipe.World().safeGet(objectAddr.Bytes())}).StorageString("DnsReg").Bytes()
|
||||||
|
|
||||||
return &Object{self.pipe.World().safeGet(domainAddr)}
|
return &Object{self.pipe.World().safeGet(domainAddr)}
|
||||||
default:
|
default:
|
||||||
addr = ethutil.RightPadBytes([]byte(name), 32)
|
addr = ethutil.RightPadBytes([]byte(name), 32)
|
||||||
|
|
|
@ -59,7 +59,7 @@ func (st *Stack) Peek() *big.Int {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (st *Stack) Peekn() (*big.Int, *big.Int) {
|
func (st *Stack) Peekn() (*big.Int, *big.Int) {
|
||||||
ints := st.data[:2]
|
ints := st.data[len(st.data)-2:]
|
||||||
|
|
||||||
return ints[0], ints[1]
|
return ints[0], ints[1]
|
||||||
}
|
}
|
||||||
|
|
26
ethvm/vm.go
26
ethvm/vm.go
|
@ -129,14 +129,14 @@ func (self *Vm) RunClosure(closure *Closure) (ret []byte, err error) {
|
||||||
fmt.Printf("%x %x\n", new(big.Int).SetBytes([]byte(key)).Bytes(), value.Bytes())
|
fmt.Printf("%x %x\n", new(big.Int).SetBytes([]byte(key)).Bytes(), value.Bytes())
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
b := pc.Bytes()
|
|
||||||
if len(b) == 0 {
|
|
||||||
b = []byte{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Printf("%x %x %x %x\n", closure.Address(), b, []byte{byte(op)}, closure.Gas.Bytes())
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
b := pc.Bytes()
|
||||||
|
if len(b) == 0 {
|
||||||
|
b = []byte{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("%x %x %x %x\n", closure.Address(), b, []byte{byte(op)}, closure.Gas.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
gas := new(big.Int)
|
gas := new(big.Int)
|
||||||
|
@ -856,12 +856,12 @@ func (self *Vm) Endl() *Vm {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ensure256(x *big.Int) {
|
func ensure256(x *big.Int) {
|
||||||
maxInt, _ := new(big.Int).SetString("115792089237316195423570985008687907853269984665640564039457584007913129639935", 0)
|
//max, _ := big.NewInt(0).SetString("115792089237316195423570985008687907853269984665640564039457584007913129639936", 0)
|
||||||
if x.Cmp(maxInt) >= 0 {
|
//if x.Cmp(max) >= 0 {
|
||||||
x.SetInt64(0)
|
d := big.NewInt(1)
|
||||||
|
d.Lsh(d, 256).Sub(d, big.NewInt(1))
|
||||||
return
|
x.And(x, d)
|
||||||
}
|
//}
|
||||||
|
|
||||||
// Could have done this with an OR, but big ints are costly.
|
// Could have done this with an OR, but big ints are costly.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue