This commit is contained in:
Araq 2018-12-16 20:11:04 +01:00
commit d91d1865b8
2 changed files with 7 additions and 6 deletions

View file

@ -50,7 +50,7 @@ proc loadConfigsAndRunMainCommand*(self: NimProg, cache: IdentCache; conf: Confi
when false: when false:
# These defines/options should not be enabled while processing nimscript # These defines/options should not be enabled while processing nimscript
# bug #4446, #9420, #8991 # bug #9420
undefSymbol(conf.symbols, "profiler") undefSymbol(conf.symbols, "profiler")
undefSymbol(conf.symbols, "memProfiler") undefSymbol(conf.symbols, "memProfiler")
undefSymbol(conf.symbols, "nodejs") undefSymbol(conf.symbols, "nodejs")

View file

@ -57,13 +57,13 @@ proc captureStackTrace(f: PFrame, st: var StackTrace) =
b = b.prev b = b.prev
var var
profilingRequestedHook*: proc (): bool {.nimcall, benign.} profilingRequestedHook*: proc (): bool {.nimcall, locks: 0, gcsafe.}
## set this variable to provide a procedure that implements a profiler in ## set this variable to provide a procedure that implements a profiler in
## user space. See the `nimprof` module for a reference implementation. ## user space. See the `nimprof` module for a reference implementation.
when defined(memProfiler): when defined(memProfiler):
type type
MemProfilerHook* = proc (st: StackTrace, requestedSize: int) {.nimcall, benign.} MemProfilerHook* = proc (st: StackTrace, requestedSize: int) {.nimcall, locks: 0, gcsafe.}
var var
profilerHook*: MemProfilerHook profilerHook*: MemProfilerHook
@ -87,9 +87,10 @@ else:
proc callProfilerHook(hook: ProfilerHook) {.noinline.} = proc callProfilerHook(hook: ProfilerHook) {.noinline.} =
# 'noinline' so that 'nimProfile' does not perform the stack allocation # 'noinline' so that 'nimProfile' does not perform the stack allocation
# in the common case. # in the common case.
var st: StackTrace when not defined(nimdoc):
captureStackTrace(framePtr, st) var st: StackTrace
hook(st) captureStackTrace(framePtr, st)
hook(st)
proc nimProfile() = proc nimProfile() =
## This is invoked by the compiler in every loop and on every proc entry! ## This is invoked by the compiler in every loop and on every proc entry!