<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=US-ASCII" http-equiv="Content-Type">
<title>
GitLab
</title>



<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">

<h3>
Ben Gamari pushed to branch wip/nonmoving-fixes
at <a href="https://gitlab.haskell.org/ghc/ghc">Glasgow Haskell Compiler / GHC</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/faa95a998d0e5fb10b306928700a9045bcdee061">faa95a99</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-18T13:42:30+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Fix haddock parse error
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4addeede1bee7cec08d3c8b7e614c030307b5f0d">4addeede</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-18T16:24:25+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Revert "Remove GHC.Types.Unique.Map module"

This reverts commit 1c7c6f1afc8e7f7ba5d256780bc9d5bb5f3e7601.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ff1846e061095ffd5ac45ff853ca8068f1edf600">ff1846e0</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T10:42:39+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Profiling by info table mode (-hi)

This profiling mode creates bands by the address of the info table for
each closure. This provides a much more fine-grained profiling output
than any of the other profiling modes.

The `-hi` profiling mode does not require a profiling build.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/4e2fe44f3c6114d32271ab2c78d52122cf02fb48">4e2fe44f</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:18:16+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add -finfo-table-map which maps info tables to source positions

This new flag embeds a lookup table from the address of an info table
to information about that info table.

The main interface for consulting the map is the `lookupIPE` C function

> InfoProvEnt * lookupIPE(StgInfoTable *info)

The `InfoProvEnt` has the following structure:

> typedef struct InfoProv_{
>     char * table_name;
>     char * closure_desc;
>     char * ty_desc;
>     char * label;
>     char * module;
>     char * srcloc;
> } InfoProv;
>
> typedef struct InfoProvEnt_ {
>     StgInfoTable * info;
>     InfoProv prov;
>     struct InfoProvEnt_ *link;
> } InfoProvEnt;

The source positions are approximated in a similar way to the source
positions for DWARF debugging information. They are only approximate but
in our experience provide a good enough hint about where the problem
might be. It is therefore recommended to use this flag in conjunction
with `-g<n>` for more accurate locations.

The lookup table is also emitted into the eventlog when it is available
as it is intended to be used with the `-hi` profiling mode.

Using this flag will significantly increase the size of the resulting
object file but only by a factor of 2-3x in our experience.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/960108eb26d8ca5cb6c5d8458686233853ded0d1">960108eb</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:18:42+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add option to give each usage of a data constructor its own info table

The `-fdistinct-constructor-tables` flag will generate a fresh info
table for the usage of any data constructor. This is useful for
debugging as now by inspecting the info table, you can determine which
usage of a constructor caused that allocation rather than the old
situation where the info table always mapped to the definition site of
the data constructor which is useless.

In conjunction with `-hi` and `-finfo-table-map` this gives a more fine
grained understanding of where constructor allocations arise from in a
program.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e1270f246a3eff6c40ce803eb45df360c66c6780">e1270f24</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:18:44+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add whereFrom and whereFrom# primop

The `whereFrom` function provides a Haskell interface for using the
information created by `-finfo-table-map`. Given a Haskell value, the
info table address will be passed to the `lookupIPE` function in order
to attempt to find the source location information for that particular closure.

At the moment it's not possible to distinguish the absense of the map
and a failed lookup.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/e1fb2d2b4b3f39b710e6f521880a774ad84223c4">e1fb2d2b</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:18:44+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add test for whereFrom#
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/364ceb537a5010bb4bf2c655dbc4f0cf1f00b95b">364ceb53</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:18:44+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Add release notes for -hi, -finfo-table-map and -fdistinct-constructor-tables
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/570ea6635675e1e52821dd36b353a471b7da6c67">570ea663</a></strong>
<div>
<span>by David Eichmann</span>
<i>at 2020-11-23T11:27:07+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ghc-heap: partial TSO/STACK decoding

Co-authored-by: Sven Tennie <sven.tennie@gmail.com>
Co-authored-by: Matthew Pickering <matthewtpickering@gmail.com>
Co-authored-by: Ben Gamari <bgamari.foss@gmail.com>
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/a45694db82d3b4a21d738ec1d78d379d1effe2c7">a45694db</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:27:07+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Remove special case for GHC.ByteCode.Instr

This was added in
https://github.com/nomeata/ghc-heap-view/commit/34935206e51b9c86902481d84d2f368a6fd93423

It now points to the wrong place, and should be dealt with in client
code.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/2b9dfd093b79144238bfdd5a351d834bbbdb51cf">2b9dfd09</a></strong>
<div>
<span>by Matthew Pickering</span>
<i>at 2020-11-23T11:33:17+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Split Up getClosureDataFromHeapRep

Motivation

1. Don't enforce the repeated decoding of an info table, when the client
can cache it (ghc-debug)
2. Allow the constructor information decoding to be overridden, this
casues segfaults in ghc-debug
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/293cf7704297d6f95b73cbe360361b351e7b6478">293cf770</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-25T23:09:19+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">ThreadPaused: Don't zero slop until free vars are pushed

When threadPaused blackholes a thunk it calls `OVERWRITING_CLOSURE` to
zero the slop for the benefit of the sanity checker. Previously this was
done *before* pushing the thunk's free variables to the update
remembered set. Consequently we would pull zero'd pointers to the update
remembered set.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5b73212ec87651466ceaa1688634e1536da6a362">5b73212e</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-25T23:09:35+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Fix regression from TSAN work

The TSAN rework (specifically aad1f803) introduced a subtle regression
in GC.c, swapping `g0` in place of `gen`. Whoops!

Fixes #18997.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/3d6d269bcb5faa17ed040d3c6f1eb78d407f4e40">3d6d269b</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-26T00:10:26+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">rts/Messages: Add missing write barrier in THROWTO message update

After a THROWTO message has been handle the message closure is
overwritten by a NULL message. We must ensure that the original
closure's pointers continue to be visible to the nonmoving GC.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/5aabe47364a43da384a08d3fddeac56f35cb3a93">5aabe473</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-26T00:11:41+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Add missing write barrier in shrinkSmallByteArray
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/ab1e19292ba2fa403308d0708e06f51ebb1d810d">ab1e1929</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-26T01:01:18+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">Updates: Don't zero slop until closure has been pushed

Ensure that the the free variables have been pushed to the update
remembered set before we zero the slop.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/51ad8e05c80e0fbba0d8b80e04655f84c1e7159e">51ad8e05</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-26T01:06:32+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">OSThreads: Fix error code checking

pthread_join returns its error code and apparently doesn't set errno.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/dce82a438c2c10c8fa7492386fdbabf916592cae">dce82a43</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-26T01:07:24+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Don't join to mark_thread on shutdown

The mark thread is not joinable as we detach from it on creation.
</pre>
</li>
<li>
<strong><a href="https://gitlab.haskell.org/ghc/ghc/-/commit/576f4d948127bf7edbb3055793d6400be22aa233">576f4d94</a></strong>
<div>
<span>by GHC GitLab CI</span>
<i>at 2020-11-26T23:15:11+00:00</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">nonmoving: Ensure that evacuated large objects are marked

See Note [Non-moving GC: Marking evacuated objects].
</pre>
</li>
</ul>
<h4>30 changed files:</h4>
<ul>
<li class="file-stats">
<a href="#451725cc4e5d443a3b7c2adcdf224840f953b7e2">
compiler/GHC/Builtin/primops.txt.pp
</a>
</li>
<li class="file-stats">
<a href="#5c66928780aaad0eb5888511dc4b0b08492c69fa">
compiler/GHC/ByteCode/Types.hs
</a>
</li>
<li class="file-stats">
<a href="#db697f6aea9f93f1583f1d5c62d25570a1e07f73">
compiler/GHC/Cmm/CLabel.hs
</a>
</li>
<li class="file-stats">
<a href="#d79a8a61508cb6c5f38a23ab2b691bb77306f672">
compiler/GHC/CoreToStg.hs
</a>
</li>
<li class="file-stats">
<a href="#9df7e695170800345fb44916a8e8f4b8f3c55be0">
compiler/GHC/Driver/CodeOutput.hs
</a>
</li>
<li class="file-stats">
<a href="#2e5692f568fd7b67a6b172e2a60469da8392508c">
compiler/GHC/Driver/Flags.hs
</a>
</li>
<li class="file-stats">
<a href="#8e72a25145f803aab964beb710b25dd6cd38aafc">
compiler/GHC/Driver/Hooks.hs
</a>
</li>
<li class="file-stats">
<a href="#9a679a2680ef6061397f1987091ea9f96ffe095d">
compiler/GHC/Driver/Main.hs
</a>
</li>
<li class="file-stats">
<a href="#774d88050336ef660c7a219fb06c480c2fc639bc">
compiler/GHC/Driver/Session.hs
</a>
</li>
<li class="file-stats">
<a href="#13755bdc5d6c6b4c6f31604eb0da778521355795">
compiler/GHC/Parser/PostProcess/Haddock.hs
</a>
</li>
<li class="file-stats">
<a href="#efe7444c09eed0fdaa83e6904e6328fb435620bf">
compiler/GHC/Runtime/Interpreter.hs
</a>
</li>
<li class="file-stats">
<a href="#90a56cf7f130d66194a6a61cb5f372eb339ab111">
compiler/GHC/Stg/CSE.hs
</a>
</li>
<li class="file-stats">
<a href="#9d790ca611a17d0b485f5d79e362962120d86f89">
<span class="new-file">
+
compiler/GHC/Stg/Debug.hs
</span>
</a>
</li>
<li class="file-stats">
<a href="#305c148430a70c23122a9aed4b8b89d96bf14b46">
compiler/GHC/Stg/DepAnal.hs
</a>
</li>
<li class="file-stats">
<a href="#0d4e7518cb6dad64554be6eafc0d6219e968df8d">
compiler/GHC/Stg/FVs.hs
</a>
</li>
<li class="file-stats">
<a href="#cfd807bd18e4d16c58aee578cf320694fbb0782e">
compiler/GHC/Stg/Lift.hs
</a>
</li>
<li class="file-stats">
<a href="#657eec52eed3c8be846a0b60eb6088d5f465de8a">
compiler/GHC/Stg/Lift/Analysis.hs
</a>
</li>
<li class="file-stats">
<a href="#7c8535980861f0195aefc14e35e7ead5ea396ada">
compiler/GHC/Stg/Lift/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#395cb654293c1fc577e034de4856683f093cc356">
compiler/GHC/Stg/Lint.hs
</a>
</li>
<li class="file-stats">
<a href="#6bc3dee83fb9880a99e34d8e70094a117f905dc3">
compiler/GHC/Stg/Stats.hs
</a>
</li>
<li class="file-stats">
<a href="#ab7f5bb638d3dce352affbd617434b76735301b0">
compiler/GHC/Stg/Syntax.hs
</a>
</li>
<li class="file-stats">
<a href="#4675150d494f381e32f32e7b58c494b88e8d2584">
compiler/GHC/Stg/Unarise.hs
</a>
</li>
<li class="file-stats">
<a href="#aa1ca517ccf154900e46e9f1db33050e272840be">
compiler/GHC/StgToCmm.hs
</a>
</li>
<li class="file-stats">
<a href="#2f341f858154eb8e1900d5bd92a156b13ddd06f3">
compiler/GHC/StgToCmm/Bind.hs
</a>
</li>
<li class="file-stats">
<a href="#aec24e3b6966335ef5c0aac97b5106fc67c6e5ea">
compiler/GHC/StgToCmm/Closure.hs
</a>
</li>
<li class="file-stats">
<a href="#d7a83b440e11aa7b31112ff697e0a50bbde388d8">
compiler/GHC/StgToCmm/DataCon.hs
</a>
</li>
<li class="file-stats">
<a href="#77c485508ade5a11428d9fce17204d33c5825722">
compiler/GHC/StgToCmm/Expr.hs
</a>
</li>
<li class="file-stats">
<a href="#f117e9b1b1b9964c4d89aa403162f1c388114cda">
compiler/GHC/StgToCmm/Monad.hs
</a>
</li>
<li class="file-stats">
<a href="#d12a108e34fe83acc9c99357ae841e22a0af0a23">
compiler/GHC/StgToCmm/Prim.hs
</a>
</li>
<li class="file-stats">
<a href="#8390b439f37437a2642e4e31bd6e7e91438915d1">
compiler/GHC/StgToCmm/Prof.hs
</a>
</li>
</ul>
<h5>The diff was not included because it is too large.</h5>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #666;">

<br>
<a href="https://gitlab.haskell.org/ghc/ghc/-/compare/e151c961266e3b4fdc966918f2cbde9aa657436a...576f4d948127bf7edbb3055793d6400be22aa233">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.haskell.org.
If you'd like to receive fewer emails, you can
adjust your notification settings.



</p>
</div>
</body>
</html>