diff options
author | Rickard Green <[email protected]> | 2017-10-24 14:24:45 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2018-03-05 11:54:59 +0100 |
commit | fbb10ebc4a37555c7ea7f99e14286d862993976a (patch) | |
tree | 671552a46c0d47593cda8583c1af7f2b405b0dea /erts/emulator/beam/bif.c | |
parent | 12e6a19037afe9bcab53b1429b68e35c4eb7bafb (diff) | |
download | otp-fbb10ebc4a37555c7ea7f99e14286d862993976a.tar.gz otp-fbb10ebc4a37555c7ea7f99e14286d862993976a.tar.bz2 otp-fbb10ebc4a37555c7ea7f99e14286d862993976a.zip |
Replace usage of ERTS_PSFLG_BOUND
Diffstat (limited to 'erts/emulator/beam/bif.c')
-rw-r--r-- | erts/emulator/beam/bif.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c index d68ccc3028..bfd572335f 100644 --- a/erts/emulator/beam/bif.c +++ b/erts/emulator/beam/bif.c @@ -1744,7 +1744,6 @@ BIF_RETTYPE process_flag_2(BIF_ALIST_2) else if (BIF_ARG_1 == am_scheduler) { ErtsRunQueue *old, *new, *curr; Sint sched; - erts_aint32_t state; if (!is_small(BIF_ARG_2)) goto error; @@ -1753,23 +1752,23 @@ BIF_RETTYPE process_flag_2(BIF_ALIST_2) goto error; if (sched == 0) { + old = erts_bind_runq_proc(BIF_P, 0); new = NULL; - state = erts_atomic32_read_band_mb(&BIF_P->state, - ~ERTS_PSFLG_BOUND); } else { + int bound = !0; new = erts_schedid2runq(sched); - erts_atomic_set_nob(&BIF_P->run_queue, (erts_aint_t) new); - state = erts_atomic32_read_bor_mb(&BIF_P->state, - ERTS_PSFLG_BOUND); + old = erts_set_runq_proc(BIF_P, new, &bound); + if (!bound) + old = NULL; } + old_value = old ? make_small(old->ix+1) : make_small(0); + curr = erts_proc_sched_data(BIF_P)->run_queue; - old = (ERTS_PSFLG_BOUND & state) ? curr : NULL; ASSERT(!old || old == curr); - old_value = old ? make_small(old->ix+1) : make_small(0); if (new && new != curr) ERTS_BIF_YIELD_RETURN_X(BIF_P, old_value, am_scheduler); else |