Merge pull request #4214 from filecoin-project/gas-tracing-public
make vm.EnableGasTracing public.
This commit is contained in:
commit
6eb49b717f
@ -28,6 +28,9 @@ import (
|
|||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// EnableGasTracing, if true, outputs gas tracing in execution traces.
|
||||||
|
var EnableGasTracing = false
|
||||||
|
|
||||||
type Runtime struct {
|
type Runtime struct {
|
||||||
types.Message
|
types.Message
|
||||||
rt0.Syscalls
|
rt0.Syscalls
|
||||||
@ -459,7 +462,7 @@ func (rt *Runtime) stateCommit(oldh, newh cid.Cid) aerrors.ActorError {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (rt *Runtime) finilizeGasTracing() {
|
func (rt *Runtime) finilizeGasTracing() {
|
||||||
if enableTracing {
|
if EnableGasTracing {
|
||||||
if rt.lastGasCharge != nil {
|
if rt.lastGasCharge != nil {
|
||||||
rt.lastGasCharge.TimeTaken = time.Since(rt.lastGasChargeTime)
|
rt.lastGasCharge.TimeTaken = time.Since(rt.lastGasChargeTime)
|
||||||
}
|
}
|
||||||
@ -491,11 +494,9 @@ func (rt *Runtime) chargeGasFunc(skip int) func(GasCharge) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var enableTracing = false
|
|
||||||
|
|
||||||
func (rt *Runtime) chargeGasInternal(gas GasCharge, skip int) aerrors.ActorError {
|
func (rt *Runtime) chargeGasInternal(gas GasCharge, skip int) aerrors.ActorError {
|
||||||
toUse := gas.Total()
|
toUse := gas.Total()
|
||||||
if enableTracing {
|
if EnableGasTracing {
|
||||||
var callers [10]uintptr
|
var callers [10]uintptr
|
||||||
|
|
||||||
cout := 0 //gruntime.Callers(2+skip, callers[:])
|
cout := 0 //gruntime.Callers(2+skip, callers[:])
|
||||||
|
@ -45,3 +45,23 @@ func TestRuntimePutErrors(t *testing.T) {
|
|||||||
rt.StorePut(&NotAVeryGoodMarshaler{})
|
rt.StorePut(&NotAVeryGoodMarshaler{})
|
||||||
t.Error("expected panic")
|
t.Error("expected panic")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BenchmarkRuntime_CreateRuntimeChargeGas_TracingDisabled(b *testing.B) {
|
||||||
|
var (
|
||||||
|
cst = cbor.NewCborStore(nil)
|
||||||
|
gch = newGasCharge("foo", 1000, 1000)
|
||||||
|
)
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
|
||||||
|
EnableGasTracing = false
|
||||||
|
noop := func() bool { return EnableGasTracing }
|
||||||
|
for n := 0; n < b.N; n++ {
|
||||||
|
// flip the value and access it to make sure
|
||||||
|
// the compiler doesn't optimize away
|
||||||
|
EnableGasTracing = true
|
||||||
|
_ = noop()
|
||||||
|
EnableGasTracing = false
|
||||||
|
_ = (&Runtime{cst: cst}).chargeGasInternal(gch, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -227,7 +227,7 @@ func (vm *VM) send(ctx context.Context, msg *types.Message, parent *Runtime,
|
|||||||
}
|
}
|
||||||
|
|
||||||
rt := vm.makeRuntime(ctx, msg, origin, on, gasUsed, nac)
|
rt := vm.makeRuntime(ctx, msg, origin, on, gasUsed, nac)
|
||||||
if enableTracing {
|
if EnableGasTracing {
|
||||||
rt.lastGasChargeTime = start
|
rt.lastGasChargeTime = start
|
||||||
if parent != nil {
|
if parent != nil {
|
||||||
rt.lastGasChargeTime = parent.lastGasChargeTime
|
rt.lastGasChargeTime = parent.lastGasChargeTime
|
||||||
|
Loading…
Reference in New Issue
Block a user