diff options
author | Björn Gustavsson <[email protected]> | 2011-08-10 14:39:34 +0200 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-08-25 09:54:31 +0200 |
commit | 631939c2452413014dfe3777997157ab541770ae (patch) | |
tree | 06452bae61ac570205734b06a6f18e72f66c4c24 /erts/emulator/beam | |
parent | 1c40ae26dfb9b5578e7d307f901d4178d6244849 (diff) | |
download | otp-631939c2452413014dfe3777997157ab541770ae.tar.gz otp-631939c2452413014dfe3777997157ab541770ae.tar.bz2 otp-631939c2452413014dfe3777997157ab541770ae.zip |
Add erlang:check_old_code/1
Add erlang:check_old_code/1 to quickly check whether a module
has old code. If there is no old code, there is no need to call
erlang:check_process_code/2 for all processes, which will save
some time if there are many processes.
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/beam_bif_load.c | 17 | ||||
-rw-r--r-- | erts/emulator/beam/bif.tab | 6 |
2 files changed, 23 insertions, 0 deletions
diff --git a/erts/emulator/beam/beam_bif_load.c b/erts/emulator/beam/beam_bif_load.c index 7b5781beeb..2561d7a630 100644 --- a/erts/emulator/beam/beam_bif_load.c +++ b/erts/emulator/beam/beam_bif_load.c @@ -162,6 +162,23 @@ BIF_RETTYPE code_make_stub_module_3(BIF_ALIST_3) return res; } +BIF_RETTYPE +check_old_code_1(BIF_ALIST_1) +{ + Module* modp; + + if (is_not_atom(BIF_ARG_1)) { + BIF_ERROR(BIF_P, BADARG); + } + modp = erts_get_module(BIF_ARG_1); + if (modp == NULL) { /* Doesn't exist. */ + BIF_RET(am_false); + } else if (modp->old_code == NULL) { /* No old code. */ + BIF_RET(am_false); + } + BIF_RET(am_true); +} + Eterm check_process_code_2(BIF_ALIST_2) { diff --git a/erts/emulator/beam/bif.tab b/erts/emulator/beam/bif.tab index d9dd80fa8b..b171e99e03 100644 --- a/erts/emulator/beam/bif.tab +++ b/erts/emulator/beam/bif.tab @@ -802,6 +802,12 @@ bif prim_file:internal_name2native/1 bif prim_file:internal_native2name/1 bif prim_file:internal_normalize_utf8/1 bif file:native_name_encoding/0 + +# +# New in R14B04. +# +bif erlang:check_old_code/1 + # # Obsolete # |