aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2015-03-17 18:19:23 +0800
committerobscuren <geffobscura@gmail.com>2015-03-17 18:19:23 +0800
commit515d9432fcef8c574627049d437d6898b56c2829 (patch)
tree40322c532a38b8f563d452bd75dab69729e55d92 /vm
parent8ce6a3647821706cf5e9bb1a9dc13f23c84f6585 (diff)
downloaddexon-515d9432fcef8c574627049d437d6898b56c2829.tar.gz
dexon-515d9432fcef8c574627049d437d6898b56c2829.tar.zst
dexon-515d9432fcef8c574627049d437d6898b56c2829.zip
converted vm
Diffstat (limited to 'vm')
-rw-r--r--vm/context.go4
-rw-r--r--vm/environment.go6
-rw-r--r--vm/vm.go10
3 files changed, 11 insertions, 9 deletions
diff --git a/vm/context.go b/vm/context.go
index 93a0102d4..c846aad89 100644
--- a/vm/context.go
+++ b/vm/context.go
@@ -18,7 +18,7 @@ type Context struct {
self ContextRef
Code []byte
- CodeAddr common.Address
+ CodeAddr *common.Address
value, Gas, UsedGas, Price *big.Int
@@ -108,7 +108,7 @@ func (self *Context) SetCode(code []byte) {
self.Code = code
}
-func (self *Context) SetCallCode(addr common.Address, code []byte) {
+func (self *Context) SetCallCode(addr *common.Address, code []byte) {
self.Code = code
self.CodeAddr = addr
}
diff --git a/vm/environment.go b/vm/environment.go
index 9de2fd80a..6976d6749 100644
--- a/vm/environment.go
+++ b/vm/environment.go
@@ -16,8 +16,8 @@ type Environment interface {
Origin() common.Address
BlockNumber() *big.Int
- GetHash(n uint64) []byte
- Coinbase() []byte
+ GetHash(n uint64) common.Hash
+ Coinbase() common.Address
Time() int64
Difficulty() *big.Int
GasLimit() *big.Int
@@ -38,7 +38,7 @@ type Account interface {
SubBalance(amount *big.Int)
AddBalance(amount *big.Int)
Balance() *big.Int
- Address() []byte
+ Address() common.Address
}
// generic transfer method
diff --git a/vm/vm.go b/vm/vm.go
index 796a55ad3..706a3e108 100644
--- a/vm/vm.go
+++ b/vm/vm.go
@@ -58,8 +58,10 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
}()
}
- if p := Precompiled[context.CodeAddr.Str()]; p != nil {
- return self.RunPrecompiled(p, callData, context)
+ if context.CodeAddr != nil {
+ if p := Precompiled[context.CodeAddr.Str()]; p != nil {
+ return self.RunPrecompiled(p, callData, context)
+ }
}
var (
@@ -500,7 +502,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
n := new(big.Int).Sub(self.env.BlockNumber(), common.Big257)
if num.Cmp(n) > 0 && num.Cmp(self.env.BlockNumber()) < 0 {
- stack.push(common.BigD(self.env.GetHash(num.Uint64())))
+ stack.push(self.env.GetHash(num.Uint64()).Big())
} else {
stack.push(common.Big0)
}
@@ -509,7 +511,7 @@ func (self *Vm) Run(context *Context, callData []byte) (ret []byte, err error) {
case COINBASE:
coinbase := self.env.Coinbase()
- stack.push(common.BigD(coinbase))
+ stack.push(coinbase.Big())
self.Printf(" => 0x%x", coinbase)
case TIMESTAMP: