Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Ledest:erlang:23
erlang
1340-erts-Avoid-unnecessary-yielding-when-clean...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 1340-erts-Avoid-unnecessary-yielding-when-cleaning-up-sig.patch of Package erlang
From e3f51d734da042e770028b2064f48d2e319641d7 Mon Sep 17 00:00:00 2001 From: Rickard Green <rickard@erlang.org> Date: Wed, 6 Sep 2023 15:05:50 +0200 Subject: [PATCH] [erts] Avoid unnecessary yielding when cleaning up signals --- erts/emulator/beam/erl_proc_sig_queue.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/erts/emulator/beam/erl_proc_sig_queue.c b/erts/emulator/beam/erl_proc_sig_queue.c index 83b6991809..2384a637d8 100644 --- a/erts/emulator/beam/erl_proc_sig_queue.c +++ b/erts/emulator/beam/erl_proc_sig_queue.c @@ -5827,6 +5827,7 @@ stretch_limit(Process *c_p, ErtsSigRecvTracing *tp, erts_proc_sig_handle_exit(Process *c_p, Sint *redsp, ErtsProcExitContext *pe_ctxt_p) { + int yield = 0; int cnt; Sint limit; ErtsMessage *sig, ***next_nm_sig; @@ -5969,12 +5970,11 @@ erts_proc_sig_handle_exit(Process *c_p, Sint *redsp, handle_sync_suspend(c_p, sig); break; - case ERTS_SIG_Q_OP_RPC: { - int yield = 0; - handle_rpc(c_p, (ErtsProcSigRPC *) sig, - cnt, limit, &yield); + case ERTS_SIG_Q_OP_RPC: + yield = 0; + cnt += handle_rpc(c_p, (ErtsProcSigRPC *) sig, + cnt, limit, &yield); break; - } case ERTS_SIG_Q_OP_DIST_SPAWN_REPLY: { cnt += handle_dist_spawn_reply_exiting(c_p, sig, pe_ctxt_p); @@ -6013,7 +6013,7 @@ erts_proc_sig_handle_exit(Process *c_p, Sint *redsp, break; } - } while (cnt >= limit && *next_nm_sig); + } while (cnt <= limit && !yield && *next_nm_sig); *redsp += cnt / ERTS_SIG_REDS_CNT_FACTOR; -- 2.35.3
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor