Skip to content
Snippets Groups Projects
  1. Jun 05, 2024
    • Cheng Shao's avatar
      testsuite: remove 32-bit darwin logic · ccdbd689
      Cheng Shao authored and Marge Bot's avatar Marge Bot committed
      This commit removes 32-bit darwin logic from the testsuite given it's
      no longer supported (#24921). Also contains more cleanup of obsolete
      i386 windows logic.
      ccdbd689
  2. Jun 04, 2024
    • Alex Mason's avatar
      Add AArch64 CLZ, CTZ, RBIT primop implementations. · 71010381
      Alex Mason authored and Marge Bot's avatar Marge Bot committed
      Adds support for emitting the clz and rbit instructions, which are
      used by GHC.Prim.clz*#, GHC.Prim.ctz*# and GHC.Prim.bitReverse*#.
      71010381
    • Cheng Shao's avatar
      testsuite: adapt the testsuite for stdcall removal · d2a83302
      Cheng Shao authored and Marge Bot's avatar Marge Bot committed
      This patch adjusts test cases to handle the stdcall removal:
      
      - Some stdcall usages are replaced with ccall since stdcall doesn't
        make sense anymore.
      - We also preserve some stdcall usages, and check in the expected
        warning messages to ensure GHC always warn about stdcall usages
        (-Wunsupported-calling-conventions) as expected.
      - Error code testsuite coverage is slightly improved,
        -Wunsupported-calling-conventions is now tested.
      - Obsolete code paths related to i386 windows are also removed.
      d2a83302
    • David's avatar
      Implement Or Patterns (#22596) · 38757c30
      David authored and Marge Bot's avatar Marge Bot committed
      
      This commit introduces a new language extension, `-XOrPatterns`, as described in
      GHC Proposal 522.
      
      An or-pattern `pat1; ...; patk` succeeds iff one of the patterns `pat1`, ...,
      `patk` succeed, in this order.
      
      See also the summary `Note [Implmentation of OrPatterns]`.
      
      Co-Authored-By: default avatarSebastian Graf <sgraf1337@gmail.com>
      38757c30
  3. Jun 03, 2024
    • Hannes Siebenhandl's avatar
      Migrate `Finder` component to `OsPath`, fixed #24616 · c8ece0df
      Hannes Siebenhandl authored and Marge Bot's avatar Marge Bot committed
      For each module in a GHCi session, we keep alive one `ModLocation`.
      A `ModLocation` is fairly inefficiently packed, as `String`s are
      expensive in memory usage.
      
      While benchmarking the agda codebase, we concluded that we keep alive
      around 11MB of `FilePath`'s, solely retained by `ModLocation`.
      
      We provide a more densely packed encoding of `ModLocation`, by moving
      from `FilePath` to `OsPath`. Further, we migrate the full `Finder`
      component to `OsPath` to avoid unnecessary transformations.
      As the `Finder` component is well-encapsulated, this requires only a
      minimal amount of changes in other modules.
      
      We introduce pattern synonym for 'ModLocation' which maintains backwards
      compatibility and avoids breaking consumers of 'ModLocation'.
      c8ece0df
    • Alex Mason's avatar
      Improve performance of genericWordQuotRem2Op (#22966) · 4998a6ed
      Alex Mason authored and Marge Bot's avatar Marge Bot committed
      Implements the algorithm from compiler-rt's udiv128by64to64default. This
      rewrite results in a roughly 24x improvement in runtime on AArch64 (and
      likely any other arch that uses it).
      4998a6ed
  4. Jun 02, 2024
  5. Jun 01, 2024
  6. May 31, 2024
  7. May 30, 2024
  8. May 28, 2024
    • Teo Camarasu's avatar
      testsuite: mark tests broken by #24886 · 62dded28
      Teo Camarasu authored
      Now that `template-haskell` is no longer wired-in.
      These tests are triggering #24886, and so need to be marked broken.
      62dded28
    • Teo Camarasu's avatar
      template-haskell: Move wired-ins to ghc-internal · 228dcae6
      Teo Camarasu authored and Teo Camarasu's avatar Teo Camarasu committed
      Thus we make `template-haskell` reinstallable and keep it as the public
      API for Template Haskell.
      All of the wired-in identifiers are moved to `ghc-internal`.
      This necessitates also moving much of `ghc-boot-th` into `ghc-internal`.
      These modules are then re-exported from `ghc-boot-th` and
      `template-haskell`.
      To avoid a dependency on `template-haskell` from `lib:ghc`, we instead
      depend on the TH ASTs via `ghc-boot-th`.
      
      As `template-haskell` no longer has special status, we can drop the
      logic adding an implicit dependency on `template-haskell` when using TH.
      We can also drop the `template-haskell-next` package, which was
      previously used when bootstrapping.
      
      When bootstrapping, we need to vendor the TH AST modules from
      `ghc-internal` into `ghc-boot-th`. This is controlled by the `bootstrap`
      cabal flag as before. See Note [Bootstrapping Template Haskell].
      
      We split out a GHC.Internal.TH.Lift module resolving #24752.
      This module is only built when not bootstrapping.
      
      Resolves #24703
      
      -------------------------
      Metric Increase:
          ghc_boot_th_dir
          ghc_boot_th_so
      -------------------------
      228dcae6
  9. May 24, 2024
  10. May 23, 2024
  11. May 22, 2024
  12. May 20, 2024
  13. May 19, 2024
    • Serge S. Gulin's avatar
      Unicode: General Category size test (related #24789) · 7d3d9bbf
      Serge S. Gulin authored
      Added trivial size performance test which involves unicode general category usage via `read`.
      The `read` itself uses general category to detect spaces.
      
      The purpose for this test is to measure outcome of applying improvements at General Category representation in code discussed at #24789.
      7d3d9bbf
  14. May 17, 2024
    • Hécate Moonlight's avatar
      Add haddock to the whitespace lint ignore list · 527bfbfb
      Hécate Moonlight authored and Ben Gamari's avatar Ben Gamari committed
      527bfbfb
    • Hécate Moonlight's avatar
      Add exceptions to the dangling notes list · aba1d304
      Hécate Moonlight authored and Ben Gamari's avatar Ben Gamari committed
      aba1d304
    • Andreas Klebinger's avatar
      TagAnalysis: Treat all bottom ids as tagged during analysis. · 0962b50d
      Andreas Klebinger authored and Marge Bot's avatar Marge Bot committed
      Ticket #24806 showed that we also need to treat dead end thunks as
      tagged during the analysis.
      0962b50d
    • jeffrey young's avatar
      testsuite: make find_so regex less general · 04179044
      jeffrey young authored and Marge Bot's avatar Marge Bot committed
      Closes #24759
      
      Background. In MR !12372 we began tracking shared object files and
      directories sizes for dependencies. However, this broke  release builds
      because release builds alter the filenames swapping "in-place" for a
      hash. This was not considered in the MR and thus broke release
      pipelines. Furthermore, the rts_so test was found to be wildly varying
      and was therefore disabled in !12561.
      
      This commit fixes both of these issues:
      
      - fix the rts_so test by making the regex less general, now the rts_so
      test and all other foo.so tests must match
      "libHS<some-lib>-<version>-<hash|'in-place>-<ghc>". This prevents the
      rts_so test from accidentally matching different rts variants such as
      rts_threaded, which was the cause of the wild swings after !12372.
      
      - add logic to match either a hash or the string in-place. This should
      make the find_so function build agnostic.
      04179044
    • Teo Camarasu's avatar
      rts: Allocate non-moving segments with megablocks · b38dcf39
      Teo Camarasu authored and Marge Bot's avatar Marge Bot committed
      Non-moving segments are 8 blocks long and need to be aligned.
      Previously we serviced allocations by grabbing 15 blocks, finding
      an aligned 8 block group in it and returning the rest.
      This proved to lead to high levels of fragmentation as a de-allocating a segment
      caused an 8 block gap to form, and this could not be reused for allocation.
      
      This patch introduces a segment allocator based around using entire
      megablocks to service segment allocations in bulk.
      
      When there are no free segments, we grab an entire megablock and fill it
      with aligned segments. As the megablock is free, we can easily guarantee
      alignment. Any unused segments are placed on a free list.
      
      It only makes sense to free segments in bulk when all of the segments in
      a megablock are freeable. After sweeping, we grab the free list, sort it,
      and find all groups of segments where they cover the megablock and free
      them.
      This introduces a period of time when free segments are not available to
      the mutator, but the risk that this would lead to excessive allocation
      is low. Right after sweep, we should have an abundance of partially full
      segments, and this pruning step is relatively quick.
      
      In implementing this we drop the logic that kept NONMOVING_MAX_FREE
      segments on the free list.
      
      We also introduce an eventlog event to log the amount of pruned/retained
      free segments.
      
      See Note [Segment allocation strategy]
      
      Resolves #24150
      
      -------------------------
      Metric Decrease:
          T13253
          T19695
      -------------------------
      b38dcf39
  15. May 16, 2024
  16. May 15, 2024
Loading