Skip to content
Snippets Groups Projects
  1. Jul 22, 2023
    • sheaf's avatar
      RTS: declare setKeepCAFs symbol · 42b05e9b
      sheaf authored and Marge Bot's avatar Marge Bot committed
      Commit 08ba8720 failed to declare the dependency of keepCAFsForGHCi on
      the symbol setKeepCAFs in the RTS, which led to undefined symbol errors
      on Windows, as exhibited by the testcase frontend001.
      
      Thanks to Moritz Angermann and Ryan Scott for the diagnosis and fix.
      
      Fixes #22961
      42b05e9b
  2. Jul 18, 2023
  3. Jul 12, 2023
  4. Jul 11, 2023
    • Ben Gamari's avatar
      compiler: Record original thunk info tables on stack · eb623149
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Here we introduce a new code generation option, `-forig-thunk-info`,
      which ensures that an `stg_orig_thunk_info` frame is pushed before every
      update frame. This can be invaluable when debugging thunk cycles and
      similar.
      
      See Note [Original thunk info table frames] for details.
      
      Closes #23255.
      eb623149
  5. Jul 05, 2023
    • Jaro Reinders's avatar
      Refactor Unique to be represented by Word64 · 9edcb1fb
      Jaro Reinders authored and Marge Bot's avatar Marge Bot committed
      In #22010 we established that Int was not always sufficient to store all
      the uniques we generate during compilation on 32-bit platforms. This
      commit addresses that problem by using Word64 instead of Int for
      uniques.
      
      The core of the change is in GHC.Core.Types.Unique and
      GHC.Core.Types.Unique.Supply. However, the representation of uniques is
      used in many other places, so those needed changes too. Additionally, the RTS
      has been extended with an atomic_inc64 operation.
      
      One major change from this commit is the introduction of the Word64Set and
      Word64Map data types. These are adapted versions of IntSet and IntMap
      from the containers package. These are planned to be upstreamed in the
      future.
      
      As a natural consequence of these changes, the compiler will be a bit
      slower and take more space on 32-bit platforms. Our CI tests indicate
      around a 5% residency increase.
      
      Metric Increase:
          CoOpt_Read
          CoOpt_Singletons
          LargeRecord
          ManyAlternatives
          ManyConstructors
          MultiComponentModules
          MultiComponentModulesRecomp
          MultiLayerModulesTH_OneShot
          RecordUpdPerf
          T10421
          T10547
          T12150
          T12227
          T12234
          T12425
          T12707
          T13035
          T13056
          T13253
          T13253-spj
          T13379
          T13386
          T13719
          T14683
          T14697
          T14766
          T15164
          T15703
          T16577
          T16875
          T17516
          T18140
          T18223
          T18282
          T18304
          T18698a
          T18698b
          T18923
          T1969
          T19695
          T20049
          T21839c
          T3064
          T3294
          T4801
          T5030
          T5321FD
          T5321Fun
          T5631
          T5642
          T5837
          T6048
          T783
          T8095
          T9020
          T9198
          T9233
          T9630
          T9675
          T9872a
          T9872b
          T9872b_defer
          T9872c
          T9872d
          T9961
          TcPlugin_RewritePerf
          UniqLoop
          WWRec
          hard_hole_fits
      9edcb1fb
    • Ben Gamari's avatar
      rts: Don't rely on initializers for sigaction_t · 46c9bcd6
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      As noted in #23577, CentOS's ancient toolchain throws spurious
      missing-field-initializer warnings.
      46c9bcd6
  6. Jul 03, 2023
    • Bryan R's avatar
      Add missing void prototypes to rts functions · 82ac6bf1
      Bryan R authored and Marge Bot's avatar Marge Bot committed
      See #23561.
      82ac6bf1
    • Ben Gamari's avatar
      ghc-heap: Support for BLOCKING_QUEUE closures · 4aac0540
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      4aac0540
    • Ben Gamari's avatar
      rts: Ensure that pinned allocations respect block size · fd8c5769
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Previously, it was possible for pinned, aligned allocation requests to
      allocate beyond the end of the pinned accumulator block. Specifically,
      we failed to account for the padding needed to achieve the requested
      alignment in the "large object" check. With large alignment requests,
      this can result in the allocator using the capability's pinned object
      accumulator block to service a request which is larger than
      `PINNED_EMPTY_SIZE`.
      
      To fix this we reorganize `allocatePinned` to consistently account for
      the alignment padding in all large object checks. This is a bit subtle
      as we must handle the case of a small allocation request filling the
      accumulator block, as well as large requests.
      
      Fixes #23400.
      fd8c5769
  7. Jun 29, 2023
  8. Jun 26, 2023
    • Torsten Schmits's avatar
      Propagate breakpoint information when inlining across modules · c59fbb0b
      Torsten Schmits authored
      Tracking ticket: #23394
      
      MR: !10448
      
      * Add constructor `IfaceBreakpoint` to `IfaceTickish`
      * Store breakpoint data in interface files
      * Store `BreakArray` for the breakpoint's module, not the current module, in BCOs
      * Store module name in BCOs instead of `Unique`, since the `Unique` from an `Iface` doesn't match the modules in GHCi's
        state
      * Allocate module name in `ModBreaks`, like `BreakArray`
      * Lookup breakpoint by module name in GHCi
      * Skip creating breakpoint instructions when no `ModBreaks` are available, rather than injecting `ModBreaks` in the
        linker when breakpoints are enabled, and panicking when `ModBreaks` is missing
      c59fbb0b
    • Sylvain Henry's avatar
      JS: support levity-polymorphic datatypes (#22360,#22291) · 8d6574bc
      Sylvain Henry authored and Marge Bot's avatar Marge Bot committed
      - thread knowledge about levity into PrimRep instead of panicking
      - JS: remove assumption that unlifted heap objects are rts objects (TVar#, etc.)
      
      Doing this also fixes #22291 (test added).
      
      There is a small performance hit (~1% more allocations).
      
      Metric Increase:
          T18698a
          T18698b
      8d6574bc
  9. Jun 24, 2023
    • Luite Stegeman's avatar
      Support large stack frames/offsets in GHCi bytecode interpreter · 564164ef
      Luite Stegeman authored
      Bytecode instructions like PUSH_L (push a local variable) contain
      an operand that refers to the stack slot. Before this patch, the
      operand type was SmallOp (Word16), limiting the maximum stack
      offset to 65535 words. This could cause compiler panics in some
      cases (See #22888).
      
      This patch changes the operand type for stack offsets from
      SmallOp to Op, removing the stack offset limit.
      
      Fixes #22888
      564164ef
  10. Jun 23, 2023
    • Ben Gamari's avatar
      rts: Work around missing prototypes errors · 5b6612bc
      Ben Gamari authored and Marge Bot's avatar Marge Bot committed
      Darwin's toolchain inexpliciably claims that `write_barrier` and friends
      have declarations without prototypes, despite the fact that (a) they are
      definitions, and (b) the prototypes appear only a few lines above. Work
      around this by making the definitions proper prototypes.
      5b6612bc
  11. Jun 20, 2023
  12. Jun 19, 2023
    • Finley McIlwaine's avatar
      IPE data compression · cb9e1ce4
      Finley McIlwaine authored
      IPE data resulting from the `-finfo-table-map` flag may now be
      compressed by configuring the GHC build with the
      `--enable-ipe-data-compression` flag. This results in about a 20%
      reduction in the size of IPE-enabled build results.
      
      The compression library, zstd, may optionally be statically linked by
      configuring with the `--enabled-static-libzstd` flag (on non-darwin
      platforms)
      
      libzstd version 1.4.0 or greater is required.
      cb9e1ce4
Loading