diff options
author | Rickard Green <[email protected]> | 2017-04-12 11:33:01 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2017-04-12 11:33:01 +0200 |
commit | 8e2e8a5f813874134a601db551f2b4d5bb0abec5 (patch) | |
tree | 95db342233895f432091f30c58ae87c29eaae318 /erts/emulator/beam/erl_process.c | |
parent | 85c956da8303096bba8c5c2307aa07d6e007f620 (diff) | |
parent | b5cd902c38687b9578d2222ace7956fdb26c9401 (diff) | |
download | otp-8e2e8a5f813874134a601db551f2b4d5bb0abec5.tar.gz otp-8e2e8a5f813874134a601db551f2b4d5bb0abec5.tar.bz2 otp-8e2e8a5f813874134a601db551f2b4d5bb0abec5.zip |
Merge branch 'rickard/ds-fixes'
* rickard/ds-fixes:
Fix dirty GC implementation
Fix multi-scheduling with only one normal scheduler
Fix +SDPcpu
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r-- | erts/emulator/beam/erl_process.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index 11a1ce625b..6b5b64993f 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -8531,8 +8531,9 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int normal p->flags |= have_blckd_flg; goto wait_until_msb; } - else if (msbp->blckrs) { - ASSERT(msbp->ongoing); + else if (msbp->blckrs || (normal && erts_no_schedulers == 1)) { + ASSERT(!msbp->blckrs || msbp->ongoing); + msbp->ongoing = 1; plp = proclist_create(p); erts_proclist_store_last(&msbp->blckrs, plp); p->flags |= have_blckd_flg; @@ -8546,7 +8547,7 @@ erts_block_multi_scheduling(Process *p, ErtsProcLocks plocks, int on, int normal else res = ERTS_SCHDLR_SSPND_DONE_NMSCHED_BLOCKED; } - else { + else { int online = (int) schdlr_sspnd_get_nscheds(&schdlr_sspnd.online, ERTS_SCHED_NORMAL); ASSERT(!msbp->ongoing); |