1. 19 Sep, 2020 16 commits
  2. 18 Sep, 2020 8 commits
    • Ben Gamari's avatar
      rts: Refactor unloading of foreign export StablePtrs · 40dc9106
      Ben Gamari authored
      Previously we would allocate a linked list cell for each foreign export.
      Now we can avoid this by taking advantage of the fact that they are
      already broken into groups.
      40dc9106
    • Ben Gamari's avatar
      rts: Refactor foreign export tracking · c4921349
      Ben Gamari authored
      This avoids calling `libc` in the initializers which are responsible for
      registering foreign exports. We believe this should avoid the corruption
      observed in #18548.
      
      See Note [Tracking foreign exports] in rts/ForeignExports.c for an
      overview of the new scheme.
      c4921349
    • Ben Gamari's avatar
      rts/nonmoving: Add missing STM write barrier · 0799b3de
      Ben Gamari authored
      When updating a TRec for a TVar already part of a transaction we
      previously neglected to add the old value to the update remembered set.
      I suspect this was the cause of #18587.
      0799b3de
    • Sylvain Henry's avatar
      b689f3db
    • Sylvain Henry's avatar
      Remove pprPrec from Outputable (unused) · 7f2785f2
      Sylvain Henry authored
      7f2785f2
    • Sylvain Henry's avatar
      Add note about OutputableP · 37aa224a
      Sylvain Henry authored
      37aa224a
    • Sylvain Henry's avatar
      Generalize OutputableP · e45c8544
      Sylvain Henry authored
      Add a type parameter for the environment required by OutputableP. It
      avoids tying Platform with OutputableP.
      e45c8544
    • Sylvain Henry's avatar
      Introduce OutputableP · ca48076a
      Sylvain Henry authored
      Some types need a Platform value to be pretty-printed: CLabel, Cmm
      types, instructions, etc.
      
      Before this patch they had an Outputable instance and the Platform value
      was obtained via sdocWithDynFlags. It meant that the *renderer* of the
      SDoc was responsible of passing the appropriate Platform value (e.g. via
      the DynFlags given to showSDoc).  It put the burden of passing the
      Platform value on the renderer while the generator of the SDoc knows the
      Platform it is generating the SDoc for and there is no point passing a
      different Platform at rendering time.
      
      With this patch, we introduce a new OutputableP class:
      
         class OutputableP a where
            pdoc :: Platform -> a -> SDoc
      
      With this class we still have some polymorphism as we have with `ppr`
      (i.e. we can use `pdoc` on a variety of types instead of having a
      dedicated `pprXXX` function for each XXX type).
      
      One step closer removing `sdocWithDynFlags` (#10143) and supporting
      several platforms (#14335).
      ca48076a
  3. 17 Sep, 2020 12 commits
  4. 16 Sep, 2020 4 commits