diff options
author | Felix Lange <fjl@twurst.com> | 2015-03-10 06:25:46 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2015-03-10 06:25:46 +0800 |
commit | 9bf513e99305af733110cf23a0b47c8e73359010 (patch) | |
tree | f9d36e1ae1f2f7c3eb803c7499a4e85a5cdcd5bd /vm/vm.go | |
parent | cd51860bf024d949a09b3863c88a278a386227a7 (diff) | |
parent | 676a0de58d3d7c508b0eeeff192d2095a46f7382 (diff) | |
download | go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.tar go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.tar.gz go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.tar.bz2 go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.tar.lz go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.tar.xz go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.tar.zst go-tangerine-9bf513e99305af733110cf23a0b47c8e73359010.zip |
Merge ethereum/poc-9 into accounts-integration
Conflicts:
cmd/utils/cmd.go
cmd/utils/flags.go
core/manager.go
eth/backend.go
rpc/http/server.go
xeth/xeth.go
Diffstat (limited to 'vm/vm.go')
-rw-r--r-- | vm/vm.go | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -30,8 +30,8 @@ type Vm struct { func New(env Environment) *Vm { lt := LogTyPretty - // lt = LogTyDiff - return &Vm{debug: true, env: env, logTy: lt, Recoverable: true} + + return &Vm{debug: Debug, env: env, logTy: lt, Recoverable: true} } func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.Int, callData []byte) (ret []byte, err error) { @@ -405,7 +405,12 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I case BALANCE: addr := stack.Pop().Bytes() - balance := statedb.GetBalance(addr) + var balance *big.Int + if statedb.GetStateObject(addr) != nil { + balance = statedb.GetBalance(addr) + } else { + balance = base + } stack.Push(balance) @@ -731,6 +736,7 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I self.Printf(" => (%x) %v", receiver.Address()[:4], balance) receiver.AddBalance(balance) + statedb.Delete(context.Address()) fallthrough @@ -900,6 +906,10 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo g = GasStorageMod } gas.Set(g) + case SUICIDE: + if !statedb.IsDeleted(context.Address()) { + statedb.Refund(self.env.Origin(), RefundSuicide) + } case MLOAD: newMemSize = calcMemSize(stack.Peek(), u256(32)) case MSTORE8: |