IPE: More size optimisation and expose unit ID
Here we refactor the info table provenance infrastructure to:
- further improve sharing of strings (reducing binary size)
- eliminate the need to deserialise info table entries when populating the info table map (reducing memory footprint and initialization time)
- expose unit ids
- cleanup various odds and ends
This required a fair amount of refactoring as we now deserialise IPE metadata lazily and therefore must provide a buffer to deserialise into. This required some code shuffling to avoid user-visible base
changes.
While I was in the area I also eliminated a rather significant inefficiency in GHC.Stack.CloneStack.decode
(the allocation of a Ptr
per info table).
CLC proposal: https://github.com/haskell/core-libraries-committee/issues/214