summaryrefslogtreecommitdiff
path: root/rts/TraverseHeap.h
Commit message (Collapse)AuthorAgeFilesLines
* rts: TraverseHeap: Make comment style consistentDaniel Gröber2019-09-221-39/+43
|
* rts: RetainerProfile.c: Re-enable and fix warningsDaniel Gröber2019-09-221-1/+1
| | | | | | Turns out some genius disabled warnings for RetainerProfile.c in the build system. That would have been good to know about five silent type mismatch crashes ago.. :)
* rts: retainer: Make visit callback easier to implementDaniel Gröber2019-09-221-6/+9
| | | | | | | | | Currently it is necessary for user code to expend at least one extra bit in the closure header just to know whether visit() should return true or false, to indicate if children should be traversed. The generic traversal code already has this information in the visited bit so simply pass it to the visit callback.
* rts: retainer: Remove traverse-stack chunk supportDaniel Gröber2019-09-221-8/+0
| | | | | | | | | | | | | | | | | | There's simply no need anymore for this whole business. Instead of individually traversing roots in retainRoot() we just push them all onto the stack and traverse everything in one go. This feature was not really used anyways. There is an `ASSERT(isEmptyWorkStack(ts))` at the top of retainRoot() which means there really can't ever have been any chunks at the toplevel. The only place where this was probably used is in traversePushStack but only way back when we were still using explicit recursion on the C callstack. Since the code was changed to use an explicit traversal-stack these stack-chunks can never escape one call to traversePushStack anymore. See commit 5f1d949ab9 ("Remove explicit recursion in retainer profiling")
* rts: retainer: Abstract maxStackSize for generic traversalDaniel Gröber2019-09-221-0/+1
|
* rts: retainer: Move heap traversal declarations to new headerDaniel Gröber2019-09-221-0/+120