diff options
Diffstat (limited to 'vm/vm_debug.go')
-rw-r--r-- | vm/vm_debug.go | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/vm/vm_debug.go b/vm/vm_debug.go index 4daa3ab5b..ea94987d1 100644 --- a/vm/vm_debug.go +++ b/vm/vm_debug.go @@ -172,12 +172,13 @@ func (self *DebugVm) RunClosure(closure *Closure) (ret []byte, err error) { case EXP: require(2) - expGas := ethutil.FirstBitSet(stack.data[stack.Len()-2]) - expGas.Div(expGas, u256(8)) - expGas.Sub(u256(32), expGas) - expGas.Add(expGas, u256(1)) - - gas.Set(expGas) + exp := new(big.Int).Set(stack.data[stack.Len()-2]) + nbytes := 0 + for exp.Cmp(ethutil.Big0) > 0 { + nbytes += 1 + exp.Rsh(exp, 8) + } + gas.Set(big.NewInt(int64(nbytes + 1))) // Gas only case STOP: gas.Set(ethutil.Big0) |