good morning!!!!

Skip to content
Snippets Groups Projects
Commit b6cb5272 authored by Jeffrey Wilcke's avatar Jeffrey Wilcke
Browse files

Descriptive function names for closure getters

parent 6d99c03d
Branches
Tags
No related merge requests found
......@@ -152,13 +152,6 @@ func (self *DebuggerWindow) Debug(valueStr, gasStr, gasPriceStr, scriptStr, data
block := self.lib.eth.ChainManager().CurrentBlock
env := utils.NewEnv(statedb, block, account.Address(), value)
/*
callerClosure := vm.NewClosure(&state.Message{}, account, contract, script, gas, gasPrice)
evm := vm.NewDebugVm(env)
evm.Dbg = self.Db
self.vm = evm
self.Db.done = false
*/
self.Logf("callsize %d", len(script))
go func() {
......
package vm
// TODO Re write VM to use values instead of big integers?
import (
"math/big"
......@@ -17,7 +15,6 @@ type ClosureRef interface {
SetStorage(*big.Int, *ethutil.Value)
}
// Basic inline closure object which implement the 'closure' interface
type Closure struct {
caller ClosureRef
object ClosureRef
......@@ -44,18 +41,8 @@ func NewClosure(msg *state.Message, caller ClosureRef, object ClosureRef, code [
return c
}
// Retuns the x element in data slice
func (c *Closure) GetStorage(x *big.Int) *ethutil.Value {
m := c.object.GetStorage(x)
if m == nil {
return ethutil.EmptyValue()
}
return m
}
func (c *Closure) Get(x *big.Int) *ethutil.Value {
return c.Gets(x, big.NewInt(1))
func (c *Closure) GetValue(x *big.Int) *ethutil.Value {
return c.GetRangeValue(x, big.NewInt(1))
}
func (c *Closure) GetOp(x int) OpCode {
......@@ -78,7 +65,7 @@ func (c *Closure) GetBytes(x, y int) []byte {
return c.Code[x : x+y]
}
func (c *Closure) Gets(x, y *big.Int) *ethutil.Value {
func (c *Closure) GetRangeValue(x, y *big.Int) *ethutil.Value {
if x.Int64() >= int64(len(c.Code)) || y.Int64() >= int64(len(c.Code)) {
return ethutil.NewValue(0)
}
......@@ -88,27 +75,21 @@ func (c *Closure) Gets(x, y *big.Int) *ethutil.Value {
return ethutil.NewValue(partial)
}
func (self *Closure) SetCode(code []byte) {
self.Code = code
}
/*
* State storage functions
*/
func (c *Closure) SetStorage(x *big.Int, val *ethutil.Value) {
c.object.SetStorage(x, val)
}
func (c *Closure) Address() []byte {
return c.object.Address()
func (c *Closure) GetStorage(x *big.Int) *ethutil.Value {
m := c.object.GetStorage(x)
if m == nil {
return ethutil.EmptyValue()
}
/*
func (c *Closure) Call(vm VirtualMachine, args []byte) ([]byte, *big.Int, error) {
c.Args = args
ret, err := vm.RunClosure(c)
return ret, c.UsedGas, err
return m
}
*/
func (c *Closure) Return(ret []byte) []byte {
// Return the remaining gas to the caller
......@@ -117,6 +98,9 @@ func (c *Closure) Return(ret []byte) []byte {
return ret
}
/*
* Gas functions
*/
func (c *Closure) UseGas(gas *big.Int) bool {
if c.Gas.Cmp(gas) < 0 {
return false
......@@ -136,6 +120,17 @@ func (c *Closure) ReturnGas(gas, price *big.Int) {
c.UsedGas.Sub(c.UsedGas, gas)
}
/*
* Set / Get
*/
func (c *Closure) Caller() ClosureRef {
return c.caller
}
func (c *Closure) Address() []byte {
return c.object.Address()
}
func (self *Closure) SetCode(code []byte) {
self.Code = code
}
......@@ -737,7 +737,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
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) - int64(PUSH1) + 1)
pc.Add(pc, ethutil.Big1)
data := closure.Gets(pc, a)
data := closure.GetRangeValue(pc, a)
val := ethutil.BigD(data.Bytes())
// Push value to stack
stack.Push(val)
......@@ -754,7 +754,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
self.Printf(" => [%d] 0x%x", n, stack.Peek().Bytes())
if OpCode(closure.Get(new(big.Int).Add(pc, ethutil.Big1)).Uint()) == POP && OpCode(closure.Get(new(big.Int).Add(pc, big.NewInt(2))).Uint()) == POP {
if OpCode(closure.GetValue(new(big.Int).Add(pc, ethutil.Big1)).Uint()) == POP && OpCode(closure.GetValue(new(big.Int).Add(pc, big.NewInt(2))).Uint()) == POP {
fmt.Println(toValue(v))
}
case SWAP1, SWAP2, SWAP3, SWAP4, SWAP5, SWAP6, SWAP7, SWAP8, SWAP9, SWAP10, SWAP11, SWAP12, SWAP13, SWAP14, SWAP15, SWAP16:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment