forked from cerc-io/plugeth
changed to unsigned integers
This commit is contained in:
parent
4f1ef89cb2
commit
186948da22
@ -20,9 +20,21 @@ type Account struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Log struct {
|
type Log struct {
|
||||||
Address string
|
AddressF string `json:"address"`
|
||||||
Data string
|
DataF string `json:"data"`
|
||||||
Topics []string
|
TopicsF []string `json:"topics"`
|
||||||
|
BloomF string `json:"bloom"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (self Log) Address() []byte { return ethutil.Hex2Bytes(self.AddressF) }
|
||||||
|
func (self Log) Data() []byte { return ethutil.Hex2Bytes(self.DataF) }
|
||||||
|
func (self Log) RlpData() interface{} { return nil }
|
||||||
|
func (self Log) Topics() [][]byte {
|
||||||
|
t := make([][]byte, len(self.TopicsF))
|
||||||
|
for i, topic := range self.TopicsF {
|
||||||
|
t[i] = ethutil.Hex2Bytes(topic)
|
||||||
|
}
|
||||||
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
func StateObjectFromAccount(addr string, account Account) *state.StateObject {
|
func StateObjectFromAccount(addr string, account Account) *state.StateObject {
|
||||||
@ -53,7 +65,7 @@ type VmTest struct {
|
|||||||
Env Env
|
Env Env
|
||||||
Exec map[string]string
|
Exec map[string]string
|
||||||
Transaction map[string]string
|
Transaction map[string]string
|
||||||
Logs map[string]Log
|
Logs []Log
|
||||||
Gas string
|
Gas string
|
||||||
Out string
|
Out string
|
||||||
Post map[string]Account
|
Post map[string]Account
|
||||||
@ -128,10 +140,10 @@ func RunVmTest(p string, t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if len(test.Logs) > 0 {
|
if len(test.Logs) > 0 {
|
||||||
genBloom := ethutil.LeftPadBytes(types.LogsBloom(logs).Bytes(), 64)
|
|
||||||
// Logs within the test itself aren't correct, missing empty fields (32 0s)
|
// Logs within the test itself aren't correct, missing empty fields (32 0s)
|
||||||
for bloom /*logs*/, _ := range test.Logs {
|
for i, log := range test.Logs {
|
||||||
if !bytes.Equal(genBloom, ethutil.Hex2Bytes(bloom)) {
|
genBloom := ethutil.LeftPadBytes(types.LogsBloom(state.Logs{logs[i]}).Bytes(), 64)
|
||||||
|
if !bytes.Equal(genBloom, ethutil.Hex2Bytes(log.BloomF)) {
|
||||||
t.Errorf("bloom mismatch")
|
t.Errorf("bloom mismatch")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -111,10 +111,10 @@ func NewMemory() *Memory {
|
|||||||
return &Memory{nil}
|
return &Memory{nil}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Memory) Set(offset, size int64, value []byte) {
|
func (m *Memory) Set(offset, size uint64, value []byte) {
|
||||||
if len(value) > 0 {
|
if len(value) > 0 {
|
||||||
totSize := offset + size
|
totSize := offset + size
|
||||||
lenSize := int64(len(m.store) - 1)
|
lenSize := uint64(len(m.store) - 1)
|
||||||
if totSize > lenSize {
|
if totSize > lenSize {
|
||||||
// Calculate the diff between the sizes
|
// Calculate the diff between the sizes
|
||||||
diff := totSize - lenSize
|
diff := totSize - lenSize
|
||||||
|
@ -98,7 +98,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
|
|||||||
} else {
|
} else {
|
||||||
nop := OpCode(closure.GetOp(p))
|
nop := OpCode(closure.GetOp(p))
|
||||||
if !(nop == JUMPDEST || destinations[from] != nil) {
|
if !(nop == JUMPDEST || destinations[from] != nil) {
|
||||||
panic(fmt.Sprintf("JUMP missed JUMPDEST (%v) %v", nop, p))
|
panic(fmt.Sprintf("invalid jump destination (%v) %v", nop, p))
|
||||||
} else if nop == JUMP || nop == JUMPI {
|
} else if nop == JUMP || nop == JUMPI {
|
||||||
panic(fmt.Sprintf("not allowed to JUMP(I) in to JUMP"))
|
panic(fmt.Sprintf("not allowed to JUMP(I) in to JUMP"))
|
||||||
}
|
}
|
||||||
@ -611,10 +611,10 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
|
|||||||
self.Printf(" => %d", l)
|
self.Printf(" => %d", l)
|
||||||
case CALLDATACOPY:
|
case CALLDATACOPY:
|
||||||
var (
|
var (
|
||||||
size = int64(len(callData))
|
size = uint64(len(callData))
|
||||||
mOff = stack.Pop().Int64()
|
mOff = stack.Pop().Uint64()
|
||||||
cOff = stack.Pop().Int64()
|
cOff = stack.Pop().Uint64()
|
||||||
l = stack.Pop().Int64()
|
l = stack.Pop().Uint64()
|
||||||
)
|
)
|
||||||
|
|
||||||
if cOff > size {
|
if cOff > size {
|
||||||
@ -654,10 +654,10 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
size = int64(len(code))
|
size = uint64(len(code))
|
||||||
mOff = stack.Pop().Int64()
|
mOff = stack.Pop().Uint64()
|
||||||
cOff = stack.Pop().Int64()
|
cOff = stack.Pop().Uint64()
|
||||||
l = stack.Pop().Int64()
|
l = stack.Pop().Uint64()
|
||||||
)
|
)
|
||||||
|
|
||||||
if cOff > size {
|
if cOff > size {
|
||||||
@ -760,7 +760,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
|
|||||||
case MSTORE: // Store the value at stack top-1 in to memory at location stack top
|
case MSTORE: // Store the value at stack top-1 in to memory at location stack top
|
||||||
// Pop value of the stack
|
// Pop value of the stack
|
||||||
val, mStart := stack.Popn()
|
val, mStart := stack.Popn()
|
||||||
mem.Set(mStart.Int64(), 32, ethutil.BigToBytes(val, 256))
|
mem.Set(mStart.Uint64(), 32, ethutil.BigToBytes(val, 256))
|
||||||
|
|
||||||
self.Printf(" => 0x%x", val)
|
self.Printf(" => 0x%x", val)
|
||||||
case MSTORE8:
|
case MSTORE8:
|
||||||
@ -883,7 +883,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
|
|||||||
stack.Push(ethutil.BigTrue)
|
stack.Push(ethutil.BigTrue)
|
||||||
msg.Output = ret
|
msg.Output = ret
|
||||||
|
|
||||||
mem.Set(retOffset.Int64(), retSize.Int64(), ret)
|
mem.Set(retOffset.Uint64(), retSize.Uint64(), ret)
|
||||||
}
|
}
|
||||||
self.Printf("resume %x", closure.Address())
|
self.Printf("resume %x", closure.Address())
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user