diff options
author | Rickard Green <rickard@erlang.org> | 2020-11-06 16:02:06 +0100 |
---|---|---|
committer | Rickard Green <rickard@erlang.org> | 2020-12-08 11:33:38 +0100 |
commit | 16ab020d76194369f59795f9f3a1db7f89152e3d (patch) | |
tree | 95ae519700f61423e2c0ad3917f1d2e93cf425cf /erts/emulator/beam/erl_process_dump.c | |
parent | 159c384ba751da3f68cd857815c3ab4edd7d93d8 (diff) | |
download | erlang-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.c | 14 |
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 { |