diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-12-10 12:56:37 -0500 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-01-07 00:10:16 -0500 |
commit | ced0d7525f6a6c33610e43d91c559691952dae6d (patch) | |
tree | 39bb235eea09b25ef4f34f4e044977ceb242ab46 /rts/RtsFlags.c | |
parent | 30f7137d1acc48499840d9a106ecce6109fd8e7a (diff) | |
download | haskell-ced0d7525f6a6c33610e43d91c559691952dae6d.tar.gz |
rts: Enforce that mark-region isn't used with -h
As noted in #9666, the mark-region GC is not compatible with heap
profiling. Also add documentation for this flag.
Closes #9666.
Diffstat (limited to 'rts/RtsFlags.c')
-rw-r--r-- | rts/RtsFlags.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c index b0f3ac4475..95656c3da6 100644 --- a/rts/RtsFlags.c +++ b/rts/RtsFlags.c @@ -1850,6 +1850,16 @@ static void normaliseRtsOpts (void) barf("The non-moving collector doesn't support -G1"); } +#if !defined(PROFILING) && !defined(DEBUG) + // The mark-region collector is incompatible with heap census unless + // we zero slop of blackhole'd thunks, which doesn't happen in the + // vanilla way. See #9666. + if (RtsFlags.ProfFlags.doHeapProfile && RtsFlags.GcFlags.sweep) { + barf("The mark-region collector can only be used with profiling\n" + "when linked against the profiled RTS."); + } +#endif + if (RtsFlags.ProfFlags.doHeapProfile != NO_HEAP_PROFILING && RtsFlags.GcFlags.useNonmoving) { barf("The non-moving collector doesn't support profiling"); |