From f92d2eaa3516b4c11e4d499ef2ec0d6047862f80 Mon Sep 17 00:00:00 2001 From: Araq Date: Thu, 9 Jul 2020 19:21:20 +0200 Subject: [PATCH] cleanup of PR #14833 (VM profiler) --- compiler/vmprofiler.nim | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/compiler/vmprofiler.nim b/compiler/vmprofiler.nim index 57a0430b4b..f586c8ffe3 100644 --- a/compiler/vmprofiler.nim +++ b/compiler/vmprofiler.nim @@ -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