diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-29 03:30:16 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-29 03:30:38 +0800 |
commit | 368ebe63a95c870a90dba8635d3a5c3863c43330 (patch) | |
tree | a70dc5f0554c91f9f4ec027ae913d1390881ec18 /core/vm/context.go | |
parent | 3b7e4173ce00fb82ee2f186350dd2aca528ea60d (diff) | |
download | dexon-368ebe63a95c870a90dba8635d3a5c3863c43330.tar.gz dexon-368ebe63a95c870a90dba8635d3a5c3863c43330.tar.zst dexon-368ebe63a95c870a90dba8635d3a5c3863c43330.zip |
Cleanup VM.
* CALLDATA use getData
* removed old context get range value
* removed casting big => int for some cases
* pc now big int #457
Diffstat (limited to 'core/vm/context.go')
-rw-r--r-- | core/vm/context.go | 20 |
1 files changed, 4 insertions, 16 deletions
diff --git a/core/vm/context.go b/core/vm/context.go index e4b94b600..29bb9f74e 100644 --- a/core/vm/context.go +++ b/core/vm/context.go @@ -1,7 +1,6 @@ package vm import ( - "math" "math/big" "github.com/ethereum/go-ethereum/common" @@ -41,29 +40,18 @@ func NewContext(caller ContextRef, object ContextRef, value, gas, price *big.Int return c } -func (c *Context) GetOp(n uint64) OpCode { +func (c *Context) GetOp(n *big.Int) OpCode { return OpCode(c.GetByte(n)) } -func (c *Context) GetByte(n uint64) byte { - if n < uint64(len(c.Code)) { - return c.Code[n] +func (c *Context) GetByte(n *big.Int) byte { + if n.Cmp(big.NewInt(int64(len(c.Code)))) < 0 { + return c.Code[n.Int64()] } return 0 } -func (c *Context) GetBytes(x, y int) []byte { - return c.GetRangeValue(uint64(x), uint64(y)) -} - -func (c *Context) GetRangeValue(x, size uint64) []byte { - x = uint64(math.Min(float64(x), float64(len(c.Code)))) - y := uint64(math.Min(float64(x+size), float64(len(c.Code)))) - - return common.RightPadBytes(c.Code[x:y], int(size)) -} - func (c *Context) Return(ret []byte) []byte { // Return the remaining gas to the caller c.caller.ReturnGas(c.Gas, c.Price) |