aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_gc.c
diff options
context:
space:
mode:
authorLukas Larsson <[email protected]>2016-07-14 16:19:10 +0200
committerLukas Larsson <[email protected]>2016-07-14 16:19:10 +0200
commit0737ad60e3ab97aa481d63c17eebafe1f2bddd55 (patch)
treef148fac63eb7ddbf69c436bfbb395c1df345329d /erts/emulator/beam/erl_gc.c
parentf7b0cbbab08f2d3f733dfe2e201ce0ff614daaf3 (diff)
parent571776ede924840f2a70681764031ca3372dd919 (diff)
downloadotp-0737ad60e3ab97aa481d63c17eebafe1f2bddd55.tar.gz
otp-0737ad60e3ab97aa481d63c17eebafe1f2bddd55.tar.bz2
otp-0737ad60e3ab97aa481d63c17eebafe1f2bddd55.zip
Merge branch 'lukas/erts/dirty_msacc_cleanup/OTP-13744' into maint
* lukas/erts/dirty_msacc_cleanup/OTP-13744: erts: Update msacc docs with dirty scheduler info erts: Cleanup a bunch of un-neccesary #ifndefs erts: Fix some msacc inline directives erts: Add extra bif msacc states erts: Add erts_map_from_ks_and_vs erts: Fix msacc for dirty scheduler and heap_limit
Diffstat (limited to 'erts/emulator/beam/erl_gc.c')
-rw-r--r--erts/emulator/beam/erl_gc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_gc.c b/erts/emulator/beam/erl_gc.c
index d0d74bbf44..a224383493 100644
--- a/erts/emulator/beam/erl_gc.c
+++ b/erts/emulator/beam/erl_gc.c
@@ -672,6 +672,7 @@ do_major_collection:
killed before a GC could be done. */
if (reds == -2) {
ErtsProcLocks locks = ERTS_PROC_LOCKS_ALL;
+ int res;
erts_smp_proc_lock(p, ERTS_PROC_LOCKS_ALL_MINOR);
erts_send_exit_signal(p, p->common.id, p, &locks,
@@ -683,7 +684,9 @@ do_major_collection:
erts_smp_atomic32_read_band_nob(&p->state, ~ERTS_PSFLG_GC);
/* We have to make sure that we have space for need on the heap */
- return delay_garbage_collection(p, live_hf_end, need, fcalls);
+ res = delay_garbage_collection(p, live_hf_end, need, fcalls);
+ ERTS_MSACC_POP_STATE_M();
+ return res;
}
erts_smp_atomic32_read_band_nob(&p->state, ~ERTS_PSFLG_GC);