|
|
@ -184,6 +184,7 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if err = self.UseGas(big.NewInt(dgas)); err != nil { |
|
|
|
if err = self.UseGas(big.NewInt(dgas)); err != nil { |
|
|
|
|
|
|
|
println("2") |
|
|
|
return nil, InvalidTxError(err) |
|
|
|
return nil, InvalidTxError(err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -200,46 +201,14 @@ func (self *StateTransition) TransitionState() (ret []byte, err error) { |
|
|
|
ref.SetCode(ret) |
|
|
|
ref.SetCode(ret) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
if vmenv, ok := vmenv.(*VMEnv); ok && tryJit { |
|
|
|
|
|
|
|
statelogger.Infof("CREATE: re-running using JIT (PH=%x)\n", stateCopy.Root()[:4]) |
|
|
|
|
|
|
|
// re-run using the JIT (validation for the JIT)
|
|
|
|
|
|
|
|
goodState := vmenv.State().Copy() |
|
|
|
|
|
|
|
vmenv.state = stateCopy |
|
|
|
|
|
|
|
vmenv.SetVmType(vm.JitVmTy) |
|
|
|
|
|
|
|
vmenv.Create(sender, contract.Address(), self.msg.Data(), self.gas, self.gasPrice, self.value) |
|
|
|
|
|
|
|
statelogger.Infof("DONE PH=%x STD_H=%x JIT_H=%x\n", stateCopy.Root()[:4], goodState.Root()[:4], vmenv.State().Root()[:4]) |
|
|
|
|
|
|
|
self.state.Set(goodState) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
} else { |
|
|
|
} else { |
|
|
|
ret, err = vmenv.Call(self.From(), self.To().Address(), self.msg.Data(), self.gas, self.gasPrice, self.value) |
|
|
|
ret, err = vmenv.Call(self.From(), self.To().Address(), self.msg.Data(), self.gas, self.gasPrice, self.value) |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
if vmenv, ok := vmenv.(*VMEnv); ok && tryJit { |
|
|
|
|
|
|
|
statelogger.Infof("CALL: re-running using JIT (PH=%x)\n", stateCopy.Root()[:4]) |
|
|
|
|
|
|
|
// re-run using the JIT (validation for the JIT)
|
|
|
|
|
|
|
|
goodState := vmenv.State().Copy() |
|
|
|
|
|
|
|
vmenv.state = stateCopy |
|
|
|
|
|
|
|
vmenv.SetVmType(vm.JitVmTy) |
|
|
|
|
|
|
|
vmenv.Call(self.From(), self.To().Address(), self.msg.Data(), self.gas, self.gasPrice, self.value) |
|
|
|
|
|
|
|
statelogger.Infof("DONE PH=%x STD_H=%x JIT_H=%x\n", stateCopy.Root()[:4], goodState.Root()[:4], vmenv.State().Root()[:4]) |
|
|
|
|
|
|
|
self.state.Set(goodState) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if err != nil && IsValueTransferErr(err) { |
|
|
|
if err != nil && IsValueTransferErr(err) { |
|
|
|
return nil, InvalidTxError(err) |
|
|
|
return nil, InvalidTxError(err) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
self.UseGas(self.gas) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|