
#8647: Reduce allocations in `integer-gmp` --------------------------------------------+------------------------------ Reporter: hvr | Owner: Type: task | Status: patch Priority: normal | Milestone: 7.8.1 Component: libraries (other) | Version: 7.6.3 Resolution: | Keywords: integer- Operating System: Unknown/Multiple | gmp Type of failure: Runtime performance bug | Architecture: x86_64 Test Case: | (amd64) Blocking: | Difficulty: Unknown | Blocked By: | Related Tickets: #8638 --------------------------------------------+------------------------------ Comment (by hvr): Replying to [comment:7 hvr]:
Otoh, passing a 0-pointer for the 3-tuple variant has the same danger.
So now I'm left wondering if I can somehow statically allocate a dummy `ByteArray#` I can return in Cmm when there's no need to allocate a proper `ByteArray#` in order to avoid confusing the GC.
I've workarounded this by returning a pointer to one of the statically allocated INTLIKE `Int`s, (which as far as I understand it should correspond to `unsafeCoerce#`ing an `Int` into a `ByteArray#`) which should be somewhat more polite to the garbage collector than coercing a non-pointer `0## :: Word#` into a `ByteArray#`. The latest patch for review with more details in its commit message can be found at [20d7bfdd29917f5a8b8937fba9b724f7e71cd8dd/integer-gmp]. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8647#comment:11 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler