summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorCheng Shao <terrorjack@type.dance>2023-03-09 12:35:48 +0000
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-03-25 03:46:43 -0400
commitb2d14d0b8ebb517139c08934a52791f21fe893f6 (patch)
tree8fc78eddeb222f457f16a4e69d6f555350ed9694 /rts
parent62fa7faaf8ca2d34cda3e3b7c4c6b2d13efa16fe (diff)
downloadhaskell-b2d14d0b8ebb517139c08934a52791f21fe893f6.tar.gz
rts: use performBlockingMajorGC in hs_perform_gc and fix ffi023
This patch does a few things: - Add the missing RtsSymbols.c entry of performBlockingMajorGC - Make hs_perform_gc call performBlockingMajorGC, which restores previous behavior - Use hs_perform_gc in ffi023 - Remove rts_clearMemory() call in ffi023, it now works again in some test ways previously marked as broken. Fixes #23089
Diffstat (limited to 'rts')
-rw-r--r--rts/HsFFI.c4
-rw-r--r--rts/RtsSymbols.c1
2 files changed, 3 insertions, 2 deletions
diff --git a/rts/HsFFI.c b/rts/HsFFI.c
index 0b9f3f0063..0b3d623302 100644
--- a/rts/HsFFI.c
+++ b/rts/HsFFI.c
@@ -24,8 +24,8 @@ hs_set_argv(int argc, char *argv[])
void
hs_perform_gc(void)
{
- /* Hmmm, the FFI spec is a bit vague, but it seems to imply a major GC... */
- performMajorGC();
+ /* Hmmm, the FFI spec is a bit vague, but it seems to imply a blocking major GC... */
+ performBlockingMajorGC();
}
// Lock the stable pointer table
diff --git a/rts/RtsSymbols.c b/rts/RtsSymbols.c
index 974f2dbd40..dee6c57f5e 100644
--- a/rts/RtsSymbols.c
+++ b/rts/RtsSymbols.c
@@ -649,6 +649,7 @@ extern char **environ;
SymI_HasProto(updateRemembSetPushClosure_) \
SymI_HasProto(performGC) \
SymI_HasProto(performMajorGC) \
+ SymI_HasProto(performBlockingMajorGC) \
SymI_HasProto(prog_argc) \
SymI_HasProto(prog_argv) \
SymI_HasDataProto(stg_putMVarzh) \