File 2588-Trivial-refactoring-of-try_steal_task.patch of Package erlang
From 427d7e6a26940ef42b885f8d2ac21eef2510914b Mon Sep 17 00:00:00 2001
From: Robin Morisset <rmorisset@meta.com>
Date: Sat, 9 Nov 2024 20:30:49 -0800
Subject: [PATCH 08/15] Trivial refactoring of try_steal_task
---
erts/emulator/beam/erl_process.c | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c
index f1681a1c1b..cd31d1df47 100644
--- a/erts/emulator/beam/erl_process.c
+++ b/erts/emulator/beam/erl_process.c
@@ -4635,18 +4635,15 @@ check_possible_steal_victim(ErtsRunQueue *rq, int vix, Process **result_proc)
static int
try_steal_task(ErtsRunQueue *rq, Process **result_proc)
{
- int res, rq_locked, vix, active_rqs, blnc_rqs;
+ int res, vix, active_rqs, blnc_rqs;
Uint32 flags;
flags = empty_runq_get_old_flags(rq);
if (flags & ERTS_RUNQ_FLG_SUSPENDED)
return 0; /* go suspend instead... */
- res = 0;
-
- ERTS_LC_CHK_RUNQ_LOCK(rq, rq_locked);
+ ERTS_LC_ASSERT(erts_lc_runq_is_locked(rq));
erts_runq_unlock(rq);
- rq_locked = 0;
get_no_runqs(&active_rqs, &blnc_rqs);
@@ -4662,8 +4659,7 @@ try_steal_task(ErtsRunQueue *rq, Process **result_proc)
while (erts_atomic32_read_acqb(&no_empty_run_queues) < blnc_rqs) {
res = check_possible_steal_victim(rq, vix, result_proc);
if (res) {
- rq_locked = 1;
- goto done;
+ return res;
}
vix++;
if (vix >= blnc_rqs)
@@ -4685,20 +4681,13 @@ try_steal_task(ErtsRunQueue *rq, Process **result_proc)
res = check_possible_steal_victim(rq, vix, result_proc);
if (res) {
- rq_locked = 1;
- goto done;
+ return res;
}
}
}
- done:
-
- if (!rq_locked)
- erts_runq_lock(rq);
-
- if (res)
- return res;
+ erts_runq_lock(rq);
return runq_got_work_to_execute(rq);
}
--
2.43.0