[Git][ghc/ghc][wip/T22264-9.2] 24 commits: Bump version to GHC 9.2.6 and add changelog entries

Ben Gamari (@bgamari) gitlab at gitlab.haskell.org
Wed Feb 8 04:45:30 UTC 2023



Ben Gamari pushed to branch wip/T22264-9.2 at Glasgow Haskell Compiler / GHC


Commits:
d966ed64 by Zubin Duggal at 2023-02-07T22:42:03+05:30
Bump version to GHC 9.2.6 and add changelog entries

- - - - -
67ec973c by Zubin Duggal at 2023-02-08T05:42:32+05:30
Allow metric changes for 9.2.6 as baseline is from a release pipeline

Metric Decrease:
    haddock.base
    haddock.Cabal
    haddock.compiler
Metric Increase:
    ManyAlternatives
    ManyConstructors
    T10421
    T10858
    T12227
    T12425
    T12707
    T13035
    T13253
    T13719
    T15164
    T16577
    T18304
    T18698a
    T18698b
    T3294
    T5321FD
    T5642
    T9203
    T9233
    T9630
    T9872a
    T9872b
    T9872c
    T9872d
    T14697
    T12545

- - - - -
0da9df62 by Zubin Duggal at 2023-02-07T23:45:21-05:00
Allow stat increases for GHC 9.2

Metric Increase:
    T13701
    T14697

- - - - -
bfade231 by Ben Gamari at 2023-02-07T23:45:21-05:00
rts: Introduce getNumCapabilities

And ensure accesses to n_capabilities are atomic (although with relaxed
ordering). This is necessary as RTS API callers may concurrently call
into the RTS without holding a capability.

(cherry picked from commit 70999283156f527c5aea6dee57a3d14989a9903a)

- - - - -
b11d7924 by Ben Gamari at 2023-02-07T23:45:21-05:00
nonmoving: Don't show occupancy if we didn't collect live words

(cherry picked from commit fcd9794163f6ae7af8783676ee79e0b8e78167ba)

- - - - -
1f829eff by Ben Gamari at 2023-02-07T23:45:21-05:00
nonmoving: Refactor update remembered set initialization

This avoids a lock inversion between the storage manager mutex and
the stable pointer table mutex by not dropping the SM_MUTEX in
nonmovingCollect. This requires quite a bit of rejiggering but it
does seem like a better strategy.

(cherry picked from commit 543cae0084a72ca767a443d857f9e65a5a79f71d)

- - - - -
4377ab1e by Ben Gamari at 2023-02-07T23:45:21-05:00
nonmoving: Fix style

(cherry picked from commit b642ef1dc4cbe19c3479b2c014e7d1f7959f8e4a)

- - - - -
fcb1aff8 by Ben Gamari at 2023-02-07T23:45:22-05:00
Evac: Squash data race in eval_selector_chain

(cherry picked from commit dd784b3b01f076fa7f5715150c53ad4c183ae79d)

- - - - -
74abe63c by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Don't push empty arrays to update remembered set

Previously the write barrier of resizeSmallArray# incorrectly handled
resizing of zero-sized arrays, pushing an invalid pointer to the update
remembered set.

Likely fixes the cause of #22264.

(cherry picked from commit f8988a9c53ae73ff5b9c6008f467a7171e99c61f)

- - - - -
5722a815 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Fix handling of weak pointers

This fixes an interaction between aging and weak pointer handling which
prevented the finalization of some weak pointers. In particular, weak
pointers could have their keys incorrectly marked by the preparatory
collector, preventing their finalization by the subsequent concurrent
collection.

While in the area, we also significantly improve the assertions
regarding weak pointers.

Fixes #22327.

(cherry picked from commit a999f7b5b4b7316c088d7233a452fb33dc17646f)

- - - - -
8f978a3f by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Fix tracking of FILLED_SWEEPING segments

Previously we only updated the state of the segment at the head of each
allocator's filled list.

(cherry picked from commit 48b89dba91640fa977d038ea5283019c73f1b18e)

- - - - -
3dcd0035 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Handle new closures in nonmovingIsNowAlive

(cherry picked from commit 36ca160d0f199a688cf5fbc91d4bb92d2d4ea14e)

- - - - -
6b260418 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Don't clobber update rem sets of old capabilities

Previously `storageAddCapabilities` (called by `setNumCapabilities`) would
clobber the update remembered sets of existing capabilities when
increasing the capability count. Fix this by only initializing the
update remembered sets of the newly-created capabilities.

(cherry picked from commit 8b64aff0fa978c762dfae8df235dd2b2a340656a)

- - - - -
13e71f43 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Add missing write barriers in selector optimisation

This fixes the selector optimisation, adding a few write barriers which
are necessary for soundness.

(cherry picked from commit dde67d6e32ecff0e400f98213d42ae790babac09)

- - - - -
cf56eaa2 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Don't push if nonmoving collector isn't enabled

(cherry picked from commit 8adc1750c02e596b4014d2837b4eb3d76bd130f2)

- - - - -
4cd10804 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Sync-phase mark budgeting

Here we significantly improve the bound on sync phase pause times by
imposing a limit on the amount of work that we can perform during the
sync. If we find that we have exceeded our marking budget then we allow
the mutators to resume, return to concurrent marking, and try
synchronizing again later.

(cherry picked from commit c620669651c52fd228af61040747dd7236c4ba2b)

- - - - -
9068881e by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Allow pinned gen0 objects to be WEAK keys

(cherry picked from commit 3887132fcd20f0a1edfc9f7006bdbed2634e2a8d)

- - - - -
8ef9e3f4 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Be more paranoid in segment tracking

Previously we left various segment link pointers dangling. None of this
wrong per se, but it did make it harder than necessary to debug.

(cherry picked from commit cc75031b4d93d4565e0428cb5910d9b9a645485b)

- - - - -
6e7f342c by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Add missing no-op in busy-wait loop

(cherry picked from commit 9f931a8801c84b8ae473f91349e144eebc73b415)

- - - - -
ee75ac62 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Move current segment array into Capability

(cherry picked from commit 9d245c1baec91ee79d715062b127e487456d9c9e)

- - - - -
ccf72da0 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Don't call prepareUnloadCheck

When the nonmoving GC is in use we do not call `checkUnload` (since we
don't unload code) and therefore should not call `prepareUnloadCheck`,
lest we run into assertions.

(cherry picked from commit 6bdce35cdd59112a8cb4a4a3b061e854ada3ff63)

- - - - -
08847150 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Fix unregisterised build

(cherry picked from commit 6df2709e7215ea80d7267800e0318aee2a7c277f)

- - - - -
42e3aeb8 by Ben Gamari at 2023-02-07T23:45:22-05:00
nonmoving: Avoid n_caps race

(cherry picked from commit c00d6de815d4e125c1c4d8ff06549042f502f759)

- - - - -
5fe2c6b2 by Ben Gamari at 2023-02-07T23:45:22-05:00
relnotes: Mention various non-moving GC fixes

- - - - -


30 changed files:

- configure.ac
- docs/users_guide/9.2.1-notes.rst
- + docs/users_guide/9.2.6-notes.rst
- docs/users_guide/release-notes.rst
- includes/rts/Threads.h
- rts/Capability.c
- rts/Capability.h
- rts/Messages.h
- rts/PrimOps.cmm
- rts/Printer.c
- rts/ProfHeap.c
- rts/ProfilerReport.c
- rts/ProfilerReportJson.c
- rts/Profiling.c
- rts/Proftimer.c
- rts/RetainerProfile.c
- rts/RtsAPI.c
- rts/RtsStartup.c
- rts/SMPClosureOps.h
- rts/STM.c
- rts/Schedule.c
- rts/Stats.c
- rts/Task.c
- rts/Threads.c
- rts/TraverseHeap.c
- rts/eventlog/EventLog.c
- rts/hooks/LongGCSync.c
- rts/posix/Signals.c
- rts/sm/Compact.c
- rts/sm/Evac.c


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/65690ab8dbfb83740db2c7f9d2f9a01f4d7e82e5...5fe2c6b2cd1a88a1c0edf9dfe3377805e46cf2d8

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/65690ab8dbfb83740db2c7f9d2f9a01f4d7e82e5...5fe2c6b2cd1a88a1c0edf9dfe3377805e46cf2d8
You're receiving this email because of your account on gitlab.haskell.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20230207/cebaf7ac/attachment-0001.html>


More information about the ghc-commits mailing list