mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
cleanup of PR #14833 (VM profiler)
This commit is contained in:
@@ -2,26 +2,29 @@
|
||||
import
|
||||
options, vmdef, times, lineinfos, strutils, tables,
|
||||
msgs
|
||||
|
||||
|
||||
proc enter*(prof: var Profiler, c: PCtx, tos: PStackFrame) {.inline.} =
|
||||
if optProfileVM in c.config.globalOptions:
|
||||
prof.tEnter = cpuTime()
|
||||
prof.tos = tos
|
||||
|
||||
proc leaveImpl(prof: var Profiler, c: PCtx) {.noinline.} =
|
||||
let tLeave = cpuTime()
|
||||
var tos = prof.tos
|
||||
var data = c.config.vmProfileData.data
|
||||
while tos != nil:
|
||||
if tos.prc != nil:
|
||||
let li = tos.prc.info
|
||||
if li notin data:
|
||||
data[li] = ProfileInfo()
|
||||
data[li].time += tLeave - prof.tEnter
|
||||
if tos == prof.tos:
|
||||
inc data[li].count
|
||||
tos = tos.next
|
||||
|
||||
proc leave*(prof: var Profiler, c: PCtx) {.inline.} =
|
||||
if optProfileVM in c.config.globalOptions:
|
||||
let tLeave = cpuTime()
|
||||
var tos = prof.tos
|
||||
var data = c.config.vmProfileData.data
|
||||
while tos != nil:
|
||||
if tos.prc != nil:
|
||||
let li = tos.prc.info
|
||||
if li notin data:
|
||||
data[li] = ProfileInfo()
|
||||
data[li].time += tLeave - prof.tEnter
|
||||
if tos == prof.tos:
|
||||
inc data[li].count
|
||||
tos = tos.next
|
||||
leaveImpl(prof, c)
|
||||
|
||||
proc dump*(conf: ConfigRef, pd: ProfileData): string =
|
||||
var data = pd.data
|
||||
|
||||
Reference in New Issue
Block a user