aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-02 03:49:56 +0800
committerobscuren <geffobscura@gmail.com>2014-12-02 03:49:56 +0800
commita22056db5988bfa2b1354e0092eabb734c30701c (patch)
tree3f85f85c7bf80422262c5c521e883aeb358dadc0
parentbeb7d35c4033063e4111a51ebf88fabb43bc22b8 (diff)
downloaddexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.gz
dexon-a22056db5988bfa2b1354e0092eabb734c30701c.tar.zst
dexon-a22056db5988bfa2b1354e0092eabb734c30701c.zip
Make an attempt to pay for the gas prior to expanding the mem.
-rw-r--r--tests/vm/gh_test.go5
-rw-r--r--vm/closure.go2
-rw-r--r--vm/vm_debug.go3
3 files changed, 7 insertions, 3 deletions
diff --git a/tests/vm/gh_test.go b/tests/vm/gh_test.go
index 7d98983e7..bd107249b 100644
--- a/tests/vm/gh_test.go
+++ b/tests/vm/gh_test.go
@@ -2,6 +2,7 @@ package vm
import (
"bytes"
+ "fmt"
"testing"
"github.com/ethereum/go-ethereum/ethutil"
@@ -44,6 +45,7 @@ func RunVmTest(p string, t *testing.T) {
helper.CreateFileTests(t, p, &tests)
for name, test := range tests {
+ fmt.Println(name)
state := state.New(helper.NewTrie())
for addr, account := range test.Pre {
obj := StateObjectFromAccount(addr, account)
@@ -113,7 +115,7 @@ func TestEnvironmentalInfo(t *testing.T) {
}
func TestFlowOperation(t *testing.T) {
- helper.Logger.SetLogLevel(5)
+ //helper.Logger.SetLogLevel(5)
const fn = "../files/vmtests/vmIOandFlowOperationsTest.json"
RunVmTest(fn, t)
}
@@ -124,6 +126,7 @@ func TestPushDupSwap(t *testing.T) {
}
func TestVMSha3(t *testing.T) {
+ helper.Logger.SetLogLevel(5)
const fn = "../files/vmtests/vmSha3Test.json"
RunVmTest(fn, t)
}
diff --git a/vm/closure.go b/vm/closure.go
index ef9bbca93..5bd8c1bb8 100644
--- a/vm/closure.go
+++ b/vm/closure.go
@@ -64,7 +64,7 @@ func (c *Closure) GetOp(x int) OpCode {
}
func (c *Closure) GetByte(x int) byte {
- if x < len(c.Code) {
+ if x > -1 && x < len(c.Code) {
return c.Code[x]
}
diff --git a/vm/vm_debug.go b/vm/vm_debug.go
index b9c1d4bc6..4daa3ab5b 100644
--- a/vm/vm_debug.go
+++ b/vm/vm_debug.go
@@ -277,7 +277,6 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) {
addStepGasUsage(memGasUsage)
- mem.Resize(newMemSize.Uint64())
}
}
@@ -295,6 +294,8 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) {
return closure.Return(nil), OOG(gas, tmp)
}
+ mem.Resize(newMemSize.Uint64())
+
switch op {
// 0x20 range
case ADD: