This MR adds the Extended Memory Reuse (EMR) related optimisations that effectively reduce the number of memory allocations by reusing memory from previously allocated hunks that are no longer referenced. This is achieved by extending the life-times of arrays within blocks. Additionally we are able to lift allocations out of the body of inner-most loops.
Further additions:
- extended runtime profiler to collect memory-related metrics (runtime counts) - this is distinct from the PHM diagnostics output
- minor fixes to some of the traversals in
memory/
- minor fixes to the tests framework
Some things still need doing
-
add tests -
cleanup code -
documentation