Skip to content
  1. Oct 20, 2020
  2. Oct 09, 2020
    • Sylvain Henry's avatar
      Fix ghci · 32c0e894
      Sylvain Henry authored
      32c0e894
    • Sylvain Henry's avatar
      Use keepAlive# in withForeignPtr · 57982912
      Sylvain Henry authored
      57982912
    • Sylvain Henry's avatar
      Tag case-expressions with keep-alive set · 8d5c0934
      Sylvain Henry authored
      Every Core/Stg case-expression now carries a set of variable names to
      keep alive during the evaluation of the scrutinee.
      
      During StgToCmm for case-expression, we now generate an additional
      `touch#` pseudo-instruction call for every variable in the keep-alive
      set after the evaluation of the scrutinee.
      
      This approach should allow us to fix issues with the current `touch#`
      primop (exposed to user Haskell code) which is not correctly taken into
      account by the simplifier leading to segfaults (#17746, #18040, #18061).
      8d5c0934
  3. Oct 07, 2020
  4. Oct 05, 2020
    • Ben Gamari's avatar
      rts: Fix integer width in TICK_BUMP_BY · 18a3ddf7
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously `TICK_BUMP_BY` was defined as
      
      ```c
       #define TICK_BUMP_BY(ctr,n) CLong[ctr] = CLong[ctr] + n
      ```
      
      Yet the tickers themselves were defined as `StgInt`s. This happened to
      work out correctly on Linux, where `CLong` is 64-bits. However, it
      failed on Windows, where `CLong` is 32-bits, resulting in #18782.
      
      Fixes #18783.
      18a3ddf7
    • Krzysztof Gogolewski's avatar
      Fix linear types in TH splices (#18465) · 802b5e6f
      Krzysztof Gogolewski authored and Marge Bot's avatar Marge Bot committed
      802b5e6f
    • Sebastian Graf's avatar
      Inline `integerDecodeDouble#` and constant-fold `decodeDouble_Int64#` instead · bc5de347
      Sebastian Graf authored and Marge Bot's avatar Marge Bot committed
      Currently, `integerDecodeDouble#` is known-key so that it can be
      recognised in constant folding. But that is very brittle and doesn't
      survive worker/wrapper, which we even do for
      `NOINLINE` things since #13143.
      Also it is a trade-off: The implementation of `integerDecodeDouble#`
      allocates an `Integer` box that never cancels aways if we don't inline
      it.
      
      Hence we recognise the `decodeDouble_Int64#` primop instead in constant
      folding, so that we can inline `integerDecodeDouble#`. As a result,
      `integerDecodeDouble#` no longer needs to be known-key.
      
      While doing so, I realised that we don't constant-fold
      `decodeFloat_Int#` either, so I also added a RULE for it.
      
      `integerDecodeDouble` is dead, so I deleted it.
      
      Part of #18092. This improves the 32-bit `realToFrac`/`toRational`:
      
      Metric Decrease:
          T10359
      bc5de347
  5. Oct 03, 2020
  6. Oct 02, 2020
  7. Oct 01, 2020
  8. Sep 30, 2020