diff options
author | Sverker Eriksson <[email protected]> | 2017-02-23 18:57:41 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2017-02-23 18:57:41 +0100 |
commit | 6e687ee0c10d1c680d214baffcef7631eef52bc3 (patch) | |
tree | a45787d0d46d1747d6086fdd04270199040c9f6b /erts/emulator/beam | |
parent | c6ccce9bb9d8bd5b26f27cd09a3611f60a317073 (diff) | |
parent | d4e2691d35fc7e1964e58be524d826752001f2a5 (diff) | |
download | otp-6e687ee0c10d1c680d214baffcef7631eef52bc3.tar.gz otp-6e687ee0c10d1c680d214baffcef7631eef52bc3.tar.bz2 otp-6e687ee0c10d1c680d214baffcef7631eef52bc3.zip |
Merge branch 'sverker/include-module-literal-size/OTP-14228' into maint
again
* sverker/include-module-literal-size:
erts: Beautify loaded()
erts: Fix literal size bug when only old instance exists
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/break.c | 38 |
1 files changed, 15 insertions, 23 deletions
diff --git a/erts/emulator/beam/break.c b/erts/emulator/beam/break.c index f2eda6c0f8..4c7c910419 100644 --- a/erts/emulator/beam/break.c +++ b/erts/emulator/beam/break.c @@ -381,10 +381,12 @@ info(fmtfn_t to, void *to_arg) static int code_size(struct erl_module_instance* modi) { - ErtsLiteralArea* lit = modi->code_hdr->literal_area; int size = modi->code_length; - if (lit) { - size += (lit->end - lit->start) * sizeof(Eterm); + + if (modi->code_hdr) { + ErtsLiteralArea* lit = modi->code_hdr->literal_area; + if (lit) + size += (lit->end - lit->start) * sizeof(Eterm); } return size; } @@ -406,13 +408,9 @@ loaded(fmtfn_t to, void *to_arg) * Calculate and print totals. */ for (i = 0; i < module_code_size(code_ix); i++) { - if ((modp = module_code(i, code_ix)) != NULL && - ((modp->curr.code_length != 0) || - (modp->old.code_length != 0))) { + if ((modp = module_code(i, code_ix)) != NULL) { cur += code_size(&modp->curr); - if (modp->old.code_length != 0) { - old += code_size(&modp->old); - } + old += code_size(&modp->old); } } erts_print(to, to_arg, "Current code: %d\n", cur); @@ -428,26 +426,20 @@ loaded(fmtfn_t to, void *to_arg) /* * Interactive dump; keep it brief. */ - if (modp != NULL && - ((modp->curr.code_length != 0) || - (modp->old.code_length != 0))) { - erts_print(to, to_arg, "%T", make_atom(modp->module)); - cur += code_size(&modp->curr); - erts_print(to, to_arg, " %d", code_size(&modp->curr)); - if (modp->old.code_length != 0) { - erts_print(to, to_arg, " (%d old)", - code_size(&modp->old)); - old += code_size(&modp->old); - } + if (modp != NULL && ((modp->curr.code_length != 0) || + (modp->old.code_length != 0))) { + erts_print(to, to_arg, "%T %d", make_atom(modp->module), + code_size(&modp->curr)); + if (modp->old.code_length != 0) + erts_print(to, to_arg, " (%d old)", code_size(&modp->old)); erts_print(to, to_arg, "\n"); } } else { /* * To crash dump; make it parseable. */ - if (modp != NULL && - ((modp->curr.code_length != 0) || - (modp->old.code_length != 0))) { + if (modp != NULL && ((modp->curr.code_length != 0) || + (modp->old.code_length != 0))) { erts_print(to, to_arg, "=mod:"); erts_print(to, to_arg, "%T", make_atom(modp->module)); erts_print(to, to_arg, "\n"); |