summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/erl_process_dump.c
diff options
context:
space:
mode:
authorRickard Green <rickard@erlang.org>2020-11-06 16:02:06 +0100
committerRickard Green <rickard@erlang.org>2020-12-08 11:33:38 +0100
commit16ab020d76194369f59795f9f3a1db7f89152e3d (patch)
tree95ae519700f61423e2c0ad3917f1d2e93cf425cf /erts/emulator/beam/erl_process_dump.c
parent159c384ba751da3f68cd857815c3ab4edd7d93d8 (diff)
downloaderlang-16ab020d76194369f59795f9f3a1db7f89152e3d.tar.gz
Multiple reusable receive markers for receive optimization
Diffstat (limited to 'erts/emulator/beam/erl_process_dump.c')
-rw-r--r--erts/emulator/beam/erl_process_dump.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/erts/emulator/beam/erl_process_dump.c b/erts/emulator/beam/erl_process_dump.c
index 55790cdc70..d1444b2a6a 100644
--- a/erts/emulator/beam/erl_process_dump.c
+++ b/erts/emulator/beam/erl_process_dump.c
@@ -140,14 +140,18 @@ Uint erts_process_memory(Process *p, int include_sigs_in_transit)
* Note that this assumes that any part of message
* queue located in middle queue have been moved
* into the inner queue prior to this call.
- * process_info() management ensures this is done-
+ * process_info() management ensures this is done.
*/
ErtsMessage *mp;
for (mp = p->sig_qs.first; mp; mp = mp->next) {
- ASSERT(ERTS_SIG_IS_MSG((ErtsSignal *) mp));
- size += sizeof(ErtsMessage);
- if (mp->data.attached)
- size += erts_msg_attached_data_size(mp) * sizeof(Eterm);
+ if (ERTS_SIG_IS_RECV_MARKER(mp))
+ size += erts_proc_sig_signal_size((ErtsSignal *) mp);
+ else {
+ ASSERT(ERTS_SIG_IS_MSG((ErtsSignal *) mp));
+ size += sizeof(ErtsMessage);
+ if (mp->data.attached)
+ size += erts_msg_attached_data_size(mp) * sizeof(Eterm);
+ }
}
}
else {