summary refs log tree commit diff stats
path: root/doc/intern.txt
Commit message (Expand)AuthorAgeFilesLines
* Nimrod renamed to NimAraq2014-08-281-36/+36
* Merge branch 'pr_documents_koch' of git://github.com/gradha/Nimrod into gradh...Clay Sweetser2014-05-311-0/+2
|\
| * Adds documentation about koch.Grzegorz Adam Hankiewicz2014-04-191-0/+2
* | Links naming api with coding guidelines.Grzegorz Adam Hankiewicz2014-04-211-2/+4
* | Removes many fake `idx` entries.Grzegorz Adam Hankiewicz2014-04-211-1/+1
|/
* Correct the spelling of the word 'implicitly'Satish BD2013-12-231-1/+1
* Changed backslash to forward slashVarriount2013-10-231-1/+1
* Added instructions on using koch to compile nimrod with GDB support.Clay Sweetser2013-10-211-1/+6
* Removes executable bit for text files.Grzegorz Adam Hankiewicz2013-03-161-0/+0
* DLLs should work again; fixes #169Araq2012-07-241-2/+0
* further steps to closure supportAraq2012-02-061-1/+29
* closure implementation: first stepsAraq2012-02-041-30/+71
* compilation cache: mostly working; generics not yetAraq2011-10-251-0/+14
* documentation for the compilation cacheAraq2011-10-231-1/+84
* fix a few typos in doc/intern.txtKeita Haga2011-07-251-2/+2
* bugfix: proper return types for templatesAraq2011-06-151-3/+3
* big repo cleanupAraq2011-04-121-11/+6
* inlining of the write barrier for dllsAndreas Rumpf2010-08-081-10/+0
* explicit types for generic routinesAndreas Rumpf2010-05-281-65/+65
* fixed pango/pangoutils new wrappersAndreas Rumpf2010-02-261-0/+0
* continued work on html/xmlparserrumpf_a@web.de2010-02-141-0/+0
* version 0.8.5: bugfixes; compiler now maintained in NimrodAndreas Rumpf2009-12-071-69/+12
* bug concerning constant evaluation fixedAndreas Rumpf2009-11-261-4/+3
* bugfixes: macros; splitFile; strutils.split; iterator.methodrumpf_a@web.de2009-10-271-1/+1
* added apis.txtrumpf_a@web.de2009-09-251-0/+12
* implemented multi methodsAndreas Rumpf2009-09-231-12/+2
* added tools and web dirsAndreas Rumpf2009-09-151-18/+111
* version 0.7.8Andreas Rumpf2009-05-081-9/+22
* version 0.7.4Andreas Rumpf2009-01-071-116/+71
* version 0.7.0Andreas Rumpf2008-11-161-158/+31
* first releaseRumpf2008-06-231-83/+1
* Initial importAndreas Rumpf2008-06-221-0/+575
lass="nb">array[0..MaxTraceLen-1, cstring] ProfilerHook* = proc (st: StackTrace) {.nimcall.} proc `[]`*(st: StackTrace, i: int): cstring = st.lines[i] proc captureStackTrace(f: PFrame, st: var StackTrace) = const firstCalls = 5 var it = f i = 0 total = 0 while it != nil and i <= high(st.lines)-(firstCalls-1): # the (-1) is for the "..." entry st.lines[i] = it.procname st.files[i] = it.filename inc(i) inc(total) it = it.prev var b = it while it != nil: inc(total) it = it.prev for j in 1..total-i-(firstCalls-1): if b != nil: b = b.prev if total != i: st.lines[i] = "..." st.files[i] = "..." inc(i) while b != nil and i <= high(st.lines): st.lines[i] = b.procname st.files[i] = b.filename inc(i) b = b.prev var profilingRequestedHook*: proc (): bool {.nimcall, locks: 0, gcsafe.} ## set this variable to provide a procedure that implements a profiler in ## user space. See the `nimprof` module for a reference implementation. when defined(memProfiler): type MemProfilerHook* = proc (st: StackTrace, requestedSize: int) {.nimcall, locks: 0, gcsafe.} var profilerHook*: MemProfilerHook ## set this variable to provide a procedure that implements a profiler in ## user space. See the `nimprof` module for a reference implementation. proc callProfilerHook(hook: MemProfilerHook, requestedSize: int) = var st: StackTrace captureStackTrace(framePtr, st) hook(st, requestedSize) proc nimProfile(requestedSize: int) = if not isNil(profilingRequestedHook) and profilingRequestedHook(): callProfilerHook(profilerHook, requestedSize) else: var profilerHook*: ProfilerHook ## set this variable to provide a procedure that implements a profiler in ## user space. See the `nimprof` module for a reference implementation. proc callProfilerHook(hook: ProfilerHook) {.noinline.} = # 'noinline' so that 'nimProfile' does not perform the stack allocation # in the common case. when not defined(nimdoc): var st: StackTrace captureStackTrace(framePtr, st) hook(st) proc nimProfile() = ## This is invoked by the compiler in every loop and on every proc entry! if not isNil(profilingRequestedHook) and profilingRequestedHook(): callProfilerHook(profilerHook) {.pop.}