This MR adds the EMR related optimisations that effectively reduce the number of memory allocations by increase the pool of possible memory reuse candidates (previously allocated hunks that are no longer referenced) and extending the life-times of arrays. Additionally we are able to lift allocations out of the body of the inner-most loop.
Further additions:
- extended runtime profiler to collect memory-related metrics
- add option to disable the including of GNU
#line
CPP macros - these make debugging the C-code difficult - extended pre/post function injection within the phase manager - with this we can inject functions to alter the AST before/after an actual phase, this is particularly use when using
-b <phase>
(break) to view the AST.
Some things still need doing
-
add tests -
cleanup code -
documentation