[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 23 commits: nonmoving: Add support for heap profiling

Marge Bot (@marge-bot) gitlab at gitlab.haskell.org
Tue Feb 13 14:57:48 UTC 2024



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


Commits:
bedb4f0d by Teo Camarasu at 2024-02-12T18:50:33-05:00
nonmoving: Add support for heap profiling

Add support for heap profiling while using the nonmoving collector.

We greatly simply the implementation by disabling concurrent collection for
GCs when heap profiling is enabled. This entails that the marked objects on
the nonmoving heap are exactly the live objects.

Note that we match the behaviour for live bytes accounting by taking the size
of objects on the nonmoving heap to be that of the segment's block
rather than the object itself.

Resolves #22221

- - - - -
d0d5acb5 by Teo Camarasu at 2024-02-12T18:51:09-05:00
doc: Add requires prof annotation to options that require it

Resolves #24421

- - - - -
64b6b025 by Cheng Shao at 2024-02-13T09:57:27-05:00
deriveConstants: add needed constants for wasm backend

This commit adds needed constants to deriveConstants. They are used by
RTS code in the wasm backend to support the JSFFI logic.

- - - - -
af579b97 by Cheng Shao at 2024-02-13T09:57:28-05:00
compiler: make genSym use C-based atomic increment on non-JS 32-bit platforms

The pure Haskell implementation causes i386 regression in unrelated
work that can be fixed by using C-based atomic increment, see added
comment for details.

- - - - -
790ae227 by Cheng Shao at 2024-02-13T09:57:28-05:00
compiler: allow JSFFI for wasm32

This commit allows the javascript calling convention to be used when
the target platform is wasm32.

- - - - -
61291701 by Cheng Shao at 2024-02-13T09:57:28-05:00
compiler: allow boxed JSVal as a foreign type

This commit allows the boxed JSVal type to be used as a foreign
argument/result type.

- - - - -
a2e8e24a by Cheng Shao at 2024-02-13T09:57:28-05:00
compiler: ensure ctors have the right priority on wasm32

This commit fixes the priorities of ctors generated by GHC codegen on
wasm32, see the referred note for details.

- - - - -
9a14db56 by Cheng Shao at 2024-02-13T09:57:28-05:00
compiler: add JSFFI desugar logic for wasm32

This commit adds JSFFI desugar logic for the wasm backend.

- - - - -
404a6919 by Cheng Shao at 2024-02-13T09:57:28-05:00
compiler: add JavaScriptFFI to supported extension list on wasm32

This commit adds JavaScriptFFI as a supported extension when the
target platform is wasm32.

- - - - -
ee3e0075 by Cheng Shao at 2024-02-13T09:57:28-05:00
rts/ghc-internal: add JSFFI support logic for wasm32

This commit adds rts/ghc-internal logic to support the wasm backend's
JSFFI functionality.

- - - - -
532b30fd by Cheng Shao at 2024-02-13T09:57:28-05:00
ghc-internal: fix threadDelay for wasm in browsers

This commit fixes broken threadDelay for wasm when it runs in
browsers, see added note for detailed explanation.

- - - - -
f6434597 by Cheng Shao at 2024-02-13T09:57:28-05:00
utils: add JSFFI utility code

This commit adds JavaScript util code to utils to support the wasm
backend's JSFFI functionality:

- jsffi/post-link.mjs, a post-linker to process the linked wasm module
  and emit a small complement JavaScript ESM module to be used with it
  at runtime
- jsffi/prelude.js, a tiny bit of prelude code as the JavaScript side
  of runtime logic
- jsffi/test-runner.mjs, run the jsffi test cases

Co-authored-by: amesgen <amesgen at amesgen.de>

- - - - -
7c2b4a9a by Cheng Shao at 2024-02-13T09:57:28-05:00
hadrian: distribute jsbits needed for wasm backend's JSFFI support

The post-linker.mjs/prelude.js files are now distributed in the
bindist libdir, so when using the wasm backend's JSFFI feature, the
user wouldn't need to fetch them from a ghc checkout manually.

- - - - -
209e31ea by Cheng Shao at 2024-02-13T09:57:28-05:00
testsuite: add opts.target_wrapper

This commit adds opts.target_wrapper which allows overriding the
target wrapper on a per test case basis when testing a cross target.
This is used when testing the wasm backend's JSFFI functionality; the
rest of the cases are tested using wasmtime, though the jsffi cases
are tested using the node.js based test runner.

- - - - -
db81864a by Cheng Shao at 2024-02-13T09:57:28-05:00
testsuite: T22774 should work for wasm JSFFI

T22774 works since the wasm backend now supports the JSFFI feature.

- - - - -
2ddfa781 by Cheng Shao at 2024-02-13T09:57:28-05:00
testsuite: add JSFFI test cases for wasm backend

This commit adds a few test cases for the wasm backend's JSFFI
functionality, as well as a simple README to instruct future
contributors to add new test cases.

- - - - -
7b93681c by Cheng Shao at 2024-02-13T09:57:28-05:00
docs: add documentation for wasm backend JSFFI

This commit adds changelog and user facing documentation for the wasm
backend's JSFFI feature.

- - - - -
1ddbd4ab by David Binder at 2024-02-13T09:57:35-05:00
Add tests from libraries/process/tests and libraries/Win32/tests to GHC

These tests were previously part of the libraries, which themselves are
submodules of the GHC repository. This commit moves the tests directly
to the GHC repository.

- - - - -
10d01b11 by David Binder at 2024-02-13T09:57:35-05:00
Do not execute win32 tests on non-windows runners

- - - - -
0857288c by Jade at 2024-02-13T09:57:36-05:00
prevent GHCi (and runghc) from suggesting other symbols when not finding main

Fixes: #23996

- - - - -
54902502 by Cheng Shao at 2024-02-13T09:57:39-05:00
rts: update xxHash to v0.8.2

- - - - -
f2a49f5d by Cheng Shao at 2024-02-13T09:57:39-05:00
rts: use XXH3_64bits hash on all 64-bit platforms

This commit enables XXH3_64bits hash to be used on all 64-bit
platforms. Previously it was only enabled on x86_64, so platforms like
aarch64 silently falls back to using XXH32 which degrades the hashing
function quality.

- - - - -
d8c1818a by Cheng Shao at 2024-02-13T09:57:39-05:00
rts: define XXH_INLINE_ALL

This commit cleans up how we include the xxhash.h header and only
define XXH_INLINE_ALL, which is sufficient to inline the xxHash
functions without symbol collision.

- - - - -


30 changed files:

- CODEOWNERS
- compiler/GHC/Builtin/Names.hs
- compiler/GHC/CmmToAsm/Wasm/Asm.hs
- compiler/GHC/CmmToC.hs
- compiler/GHC/Driver/Session.hs
- compiler/GHC/HsToCore/Foreign/Decl.hs
- + compiler/GHC/HsToCore/Foreign/Wasm.hs
- compiler/GHC/Tc/Gen/Foreign.hs
- compiler/GHC/Types/ForeignCall.hs
- compiler/GHC/Types/Unique/Supply.hs
- compiler/cbits/genSym.c
- compiler/ghc.cabal.in
- docs/users_guide/9.10.1-notes.rst
- docs/users_guide/profiling.rst
- docs/users_guide/wasm.rst
- ghc/GHCi/UI.hs
- hadrian/src/Base.hs
- hadrian/src/Rules/Generate.hs
- libraries/ghc-internal/ghc-internal.cabal
- libraries/ghc-internal/src/GHC/Conc/IO.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim/Conc.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim/Conc/Internal.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim/Exports.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim/Flag.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim/Imports.hs
- + libraries/ghc-internal/src/GHC/Wasm/Prim/Types.hs
- rts/Capability.h
- rts/Hash.c
- rts/ProfHeap.c


The diff was not included because it is too large.


View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/9337defec98f0294f1d96ee6275daf53889f05d0...d8c1818ab254213ffda07f2f02bd451ed2a1d494

-- 
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/9337defec98f0294f1d96ee6275daf53889f05d0...d8c1818ab254213ffda07f2f02bd451ed2a1d494
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/20240213/bf07b679/attachment-0001.html>


More information about the ghc-commits mailing list