[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 51 commits: Change hostSupportsRPaths to report False on OpenBSD

Marge Bot (@marge-bot) gitlab at gitlab.haskell.org
Wed Mar 8 17:02:29 UTC 2023



Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC


Commits:
1e0d8fdb by Greg Steuck at 2023-03-08T08:59:05-05:00
Change hostSupportsRPaths to report False on OpenBSD

OpenBSD does support -rpath but ghc build process relies on some
related features that don't work there. See ghc/ghc#23011

- - - - -
bed3a292 by Alexis King at 2023-03-08T08:59:53-05:00
bytecode: Fix bitmaps for BCOs used to tag tuples and prim call args

fixes #23068

- - - - -
1356ce9f by Ben Gamari at 2023-03-08T12:02:20-05:00
rts: Drop redundant prototype

- - - - -
dccb8a90 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Fix style

- - - - -
a89c6365 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Deduplicate assertion

- - - - -
4c61f84f by Ben Gamari at 2023-03-08T12:02:20-05:00
rts: Fix type issues in Sparks.h

Adds explicit casts to satisfy a C++ compiler.

- - - - -
b60e2080 by Ben Gamari at 2023-03-08T12:02:20-05:00
rts: Use release ordering when storing thread labels

Since this makes the ByteArray# visible from other cores.

- - - - -
daa0847b by Ben Gamari at 2023-03-08T12:02:20-05:00
rts/BlockAlloc: Allow disabling of internal assertions

These can be quite expensive and it is sometimes useful to compile a
DEBUG RTS without them.

- - - - -
77b85f38 by Ben Gamari at 2023-03-08T12:02:20-05:00
rts/Sanity: Mark pinned_object_blocks

- - - - -
e6c1d690 by Ben Gamari at 2023-03-08T12:02:20-05:00
rts/Sanity: Look at nonmoving saved_filled lists

- - - - -
5364f528 by Ben Gamari at 2023-03-08T12:02:20-05:00
Evac: Squash data race in eval_selector_chain

- - - - -
7b1c2627 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Clarify implementation

This makes the intent of this implementation a bit clearer.

- - - - -
01dbcf59 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Clarify comment

- - - - -
bd21d1ef by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Add missing no-op in busy-wait loop

- - - - -
b0d1aac3 by Ben Gamari at 2023-03-08T12:02:20-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.

Fixes #22931.

- - - - -
2f04b0de by Ben Gamari at 2023-03-08T12:02:20-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.

- - - - -
8b8ac042 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Sanity check nonmoving large objects and compacts

- - - - -
77f55a35 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Sanity check mutable list

Assert that entries in the nonmoving generation's generational
remembered set (a.k.a. mutable list) live in nonmoving generation.

- - - - -
0265888e by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Don't show occupancy if we didn't collect live words

- - - - -
8e0da7f1 by Ben Gamari at 2023-03-08T12:02:20-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.

- - - - -
46b15add by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Assert state of swept segments

- - - - -
8c3f6100 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Handle new closures in nonmovingIsNowAlive

We must conservatively assume that new closures are reachable since we
are not guaranteed to mark such blocks.

- - - - -
4a76d689 by Ben Gamari at 2023-03-08T12:02:20-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.

Fixes #22927.

- - - - -
662daa7f by Ben Gamari at 2023-03-08T12:02:20-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. See the inline comments for details.

Fixes #22930.

- - - - -
79aa0eb9 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Post-sweep sanity checking

- - - - -
dff8f1eb by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Avoid n_caps race

- - - - -
26c62a96 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Don't push if nonmoving collector isn't enabled

- - - - -
97eaaae8 by Ben Gamari at 2023-03-08T12:02:20-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.

- - - - -
04612d9a by Ben Gamari at 2023-03-08T12:02:20-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.

Fixes #22929.

- - - - -
6b343de9 by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Allow pinned gen0 objects to be WEAK keys

- - - - -
39324755 by Ben Gamari at 2023-03-08T12:02:20-05:00
rts: Reenable assertion

- - - - -
68bb840d by Ben Gamari at 2023-03-08T12:02:20-05:00
nonmoving: Move current segment array into Capability

The current segments are conceptually owned by the mutator, not the
collector. Consequently, it was quite tricky to prove that the mutator
would not race with the collect due to this shared state. It turns out
that such races are possible: when resizing the current segment array
we may concurrently try to take a heap census. This will attempt to walk
the current segment array, causing a data race.

Fix this by moving the current segment array into `Capability`, where it
belongs.

Fixes #22926.

- - - - -
a9980e9b by Ben Gamari at 2023-03-08T12:02:21-05:00
nonmoving: Fix Note references

Some references to Note [Deadlock detection under the non-moving
collector] were missing an article.

- - - - -
95a7c6e7 by Ben Gamari at 2023-03-08T12:02:21-05:00
rts/Sanity: Fix block count assertion with non-moving collector

The nonmoving collector does not use `oldest_gen->blocks` to track its
block list. However, it nevertheless updates `oldest_gen->n_blocks` to
ensure that its size is accounted for by the storage manager.
Consequently, we must not attempt to assert consistency between the two.

- - - - -
39242ee7 by Ben Gamari at 2023-03-08T12:02:21-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.

- - - - -
16bebebe by Ben Gamari at 2023-03-08T12:02:21-05:00
rts: Encapsulate block allocator spinlock

This makes it a bit easier to add instrumentation on this spinlock
while debugging.

- - - - -
f35d4a1d by Ben Gamari at 2023-03-08T12:02:21-05:00
testsuite: Skip some tests when sanity checking is enabled

- - - - -
dee73aa9 by Ben Gamari at 2023-03-08T12:02:21-05:00
nonmoving: Fix unregisterised build

- - - - -
4f65c268 by Ben Gamari at 2023-03-08T12:02:21-05:00
nonmoving: Ensure that sanity checker accounts for saved_filled segments

- - - - -
d451f2c6 by Ben Gamari at 2023-03-08T12:02:21-05:00
hadrian: Add +boot_nonmoving_gc flavour transformer

For using GHC bootstrapping to validate the non-moving GC.

- - - - -
810b3c78 by Ben Gamari at 2023-03-08T12:02:21-05:00
gitlab-ci: Add job bootstrapping with nonmoving GC

- - - - -
faed3751 by Ben Gamari at 2023-03-08T12:02:21-05:00
nonmoving: Move allocator into new source file

- - - - -
722d40f4 by Ben Gamari at 2023-03-08T12:02:21-05:00
nonmoving: Split out nonmovingAllocateGC

- - - - -
3f89c320 by Ben Gamari at 2023-03-08T12:02:21-05:00
testsuite: Only run T22795* in the normal way

It doesn't make sense to run these in multiple ways as they merely test
whether `-threaded`/`-single-threaded` flags.

- - - - -
fc21ed29 by Ben Gamari at 2023-03-08T12:02:21-05:00
rts: Rename clear_segment(_free_blocks)?

To reflect the fact that these are to do with the nonmoving collector,
now since they are exposed no longer static.

- - - - -
c9093853 by Ben Gamari at 2023-03-08T12:02:21-05:00
rts: Fix incorrect STATIC_INLINE

This should be INLINE_HEADER lest we get unused declaration warnings.

- - - - -
284ca5a4 by Ben Gamari at 2023-03-08T12:02:21-05:00
testsuite: Mark ffi023 as broken due to #23089

- - - - -
ec3af0e0 by Ben Gamari at 2023-03-08T12:02:21-05:00
testsuite: Skip T7160 in the nonmoving way

Finalization order is different under the nonmoving collector.

- - - - -
cf320d63 by Ben Gamari at 2023-03-08T12:02:21-05:00
rts: Capture GC configuration in a struct

The number of distinct arguments passed to GarbageCollect was getting a
bit out of hand.

- - - - -
f4d111be by Ben Gamari at 2023-03-08T12:02:21-05:00
nonmoving: Non-concurrent collection

- - - - -
8d2efa2c by Alexis King at 2023-03-08T12:02:23-05:00
hadrian: Fix flavour compiler stage options off-by-one error

!9193 pointed out that ghcDebugAssertions was supposed to be a predicate
on the stage of the built compiler, but in practice it was a predicate
on the stage of the compiler used to build. Unfortunately, while it
fixed that issue for ghcDebugAssertions, it documented every other
similar option as behaving the same way when in fact they all used the
old behavior.

The new behavior of ghcDebugAssertions seems more intuitive, so this
commit changes the interpretation of every other option to match. It
also improves the enableProfiledGhc and debugGhc flavour transformers by
making them more selective about which stages in which they build
additional library/RTS ways.

- - - - -


30 changed files:

- .gitlab/gen_ci.hs
- .gitlab/jobs.yaml
- compiler/GHC/ByteCode/Instr.hs
- compiler/GHC/StgToByteCode.hs
- hadrian/doc/user-settings.md
- hadrian/src/Expression.hs
- hadrian/src/Flavour.hs
- hadrian/src/Oracles/Flavour.hs
- hadrian/src/Oracles/Setting.hs
- hadrian/src/Settings/Builders/Ghc.hs
- hadrian/src/Settings/Builders/RunTest.hs
- hadrian/src/Settings/Flavours/Development.hs
- hadrian/src/Settings/Flavours/Quick.hs
- hadrian/src/Settings/Packages.hs
- libraries/ghc-heap/tests/all.T
- rts/Capability.c
- rts/Capability.h
- rts/PrimOps.cmm
- rts/RtsStartup.c
- rts/RtsUtils.h
- rts/Schedule.c
- rts/Sparks.h
- rts/ThreadLabels.c
- rts/include/rts/storage/GC.h
- rts/include/rts/storage/MBlock.h
- rts/rts.cabal.in
- rts/sm/BlockAlloc.c
- rts/sm/Evac.c
- rts/sm/GC.c
- rts/sm/GC.h


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b140966379c6938dea3e53b39f0783517cb17bff...8d2efa2cc0476f73ba04e9fa45907a59ebe7a6d7

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/b140966379c6938dea3e53b39f0783517cb17bff...8d2efa2cc0476f73ba04e9fa45907a59ebe7a6d7
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/20230308/72cd596a/attachment-0001.html>


More information about the ghc-commits mailing list