1. 05 Oct, 2020 1 commit
    • Sebastian Graf's avatar
      Inline `integerDecodeDouble#` and constant-fold `decodeDouble_Int64#` instead · bc5de347
      Sebastian Graf authored
      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
      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:
  2. 03 Oct, 2020 2 commits
  3. 02 Oct, 2020 6 commits
  4. 01 Oct, 2020 15 commits
  5. 30 Sep, 2020 8 commits
  6. 29 Sep, 2020 8 commits