1. 09 Oct, 2020 8 commits
    • Andreas Klebinger's avatar
      Use proper RTS flags when collecting residency in perf tests. · 45a1d493
      Andreas Klebinger authored
      Replace options like collect_stats(['peak_megabytes_allocated'],4) with
      collect_runtime_residency(4) and so forth. Reason being that the later
      also supplies some default RTS arguments which make sure residency does
      not fluctuate too much.
      
      The new flags mean we get new (hopefully more accurate) baselines so
      accept the stat changes.
      
      -------------------------
      Metric Decrease:
           T4029
           T4334
           T7850
      Metric Increase:
           T13218
           T7436
      -------------------------
      45a1d493
    • Hécate Moonlight's avatar
      Add linting of `base` to the CI · f7e2fff9
      Hécate Moonlight authored
      f7e2fff9
    • Krzysztof Gogolewski's avatar
      e48cab2a
    • MaxGabriel's avatar
      Document -Wderiving-typeable · d360f343
      MaxGabriel authored
      Tracking: #18641
      d360f343
    • Sylvain Henry's avatar
      Expose RTS-only ways (#18651) · accdb24a
      Sylvain Henry authored
      Some RTS ways are exposed via settings (ghcThreaded, ghcDebugged) but
      not all. It's simpler if the RTS exposes them all itself.
      accdb24a
    • Tamar Christina's avatar
      rts: fix race condition in StgCRun · fd984d68
      Tamar Christina authored
      On windows the stack has to be allocated 4k at a time, otherwise we get
      a segfault. This is done by using a helper ___chkstk_ms that is provided
      by libgcc. The Haskell side already knows how to handle this but we need
      to do the same from STG. Previously we would drop the stack in StgRun
      but would only make it valid whenever the scheduler loop ran.
      
      This approach was fundamentally broken in that it falls apart when you
      take a signal from the OS. We see it less often because you initially
      get allocated a 1MB stack block which you have to blow past first.
      
      Concretely this means we must always keep the stack valid.
      
      Fixes #18601.
      fd984d68
    • Simon Jakobi's avatar
      Update containers to v0.6.4.1 · a566c83d
      Simon Jakobi authored
      Updates containers submodule.
      a566c83d
    • Sylvain Henry's avatar
      Use UnitId in the backend instead of Unit · 386c2d7f
      Sylvain Henry authored
      In Cmm we can only have real units identified with an UnitId.  Other
      units (on-the-fly instantiated units and holes) are only used in
      type-checking backpack sessions that don't produce Cmm.
      386c2d7f
  2. 07 Oct, 2020 9 commits
  3. 05 Oct, 2020 3 commits
    • Ben Gamari's avatar
      rts: Fix integer width in TICK_BUMP_BY · 18a3ddf7
      Ben Gamari authored
      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
      802b5e6f
    • 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
      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
  4. 03 Oct, 2020 2 commits
  5. 02 Oct, 2020 6 commits
  6. 01 Oct, 2020 12 commits