enable VM tracing in user code via {.define(nimVmTrace).} (#18244)

* enable VM tracing in user code via  `{.define(nimVmTrace).}`

* add vmutils.vmTrace

* add vmTrace
This commit is contained in:
Timothee Cour 2021-06-24 02:55:31 -07:00 • committed by GitHub
commit 565e07a993
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 53 additions and 2 deletions

View file

@ -548,9 +548,12 @@ proc rawExecute(c: PCtx, start: int, tos: PStackFrame): TFullReg =
"pc", $pc, "opcode", alignLeft($c.code[pc].opcode, 15),
"ra", regDescr("ra", ra), "rb", regDescr("rb", instr.regB),
"rc", regDescr("rc", instr.regC)]
if c.config.isVmTrace:
# unlike nimVMDebug, this doesn't require re-compiling nim and is controlled by user code
let info = c.debug[pc]
# other useful variables: c.loopIterations
echo "$# [$#] $#" % [c.config$info, $instr.opcode, c.config.sourceLine(info)]
c.profiler.enter(c, tos)
case instr.opcode
of opcEof: return regs[ra]
of opcRet: