diff options
author | Sverker Eriksson <[email protected]> | 2016-01-12 16:57:59 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2016-01-13 19:59:54 +0100 |
commit | 4c763443365591e170308a1c5f11a4586734ca4e (patch) | |
tree | 2cb663b23541827d3eebf19a582686de6c535cf9 /erts/emulator/beam/erl_process.c | |
parent | a4920dc4045f394f6f4ab1cc89d54d55722a66d6 (diff) | |
download | otp-4c763443365591e170308a1c5f11a4586734ca4e.tar.gz otp-4c763443365591e170308a1c5f11a4586734ca4e.tar.bz2 otp-4c763443365591e170308a1c5f11a4586734ca4e.zip |
erts: Optimize erlang:check_process_code
by ignoring literals.
erts_internal:check_process_code will be called again anyway
(with option {copy_literals, true}) before the module is actually purged.
No need to check literals twice.
Diffstat (limited to 'erts/emulator/beam/erl_process.c')
-rw-r--r-- | erts/emulator/beam/erl_process.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_process.c b/erts/emulator/beam/erl_process.c index 9495436ba6..d36d866b2f 100644 --- a/erts/emulator/beam/erl_process.c +++ b/erts/emulator/beam/erl_process.c @@ -10055,7 +10055,7 @@ execute_sys_tasks(Process *c_p, erts_aint32_t *statep, int in_reds) case ERTS_PSTT_CPC: st_res = erts_check_process_code(c_p, st->arg[0], - st->arg[1] == am_true, + unsigned_val(st->arg[1]), &reds); if (is_non_value(st_res)) { /* Needed gc, but gc was disabled */ @@ -10219,7 +10219,7 @@ erts_internal_request_system_task_3(BIF_ALIST_3) case am_check_process_code: if (is_not_atom(st->arg[0])) goto badarg; - if (st->arg[1] != am_true && st->arg[1] != am_false) + if (is_not_small(st->arg[1]) || (unsigned_val(st->arg[1]) & ~ERTS_CPC_ALL)) goto badarg; noproc_res = am_false; st->type = ERTS_PSTT_CPC; |