diff options
author | Sverker Eriksson <[email protected]> | 2018-03-20 18:55:51 +0100 |
---|---|---|
committer | Sverker Eriksson <[email protected]> | 2018-03-20 18:55:51 +0100 |
commit | 5b557bccac579291301a7a4d78a3d992b4e9373d (patch) | |
tree | eb2e6c5925bb84e7016468fb37a9a033d0b32952 /erts/emulator/beam | |
parent | 902e1df69542e07e7c363f5b599ac1551b8fbb64 (diff) | |
download | otp-5b557bccac579291301a7a4d78a3d992b4e9373d.tar.gz otp-5b557bccac579291301a7a4d78a3d992b4e9373d.tar.bz2 otp-5b557bccac579291301a7a4d78a3d992b4e9373d.zip |
erts: Refactor erts_static_nif_get_nif_init
to return pointer to ErtsStaticNifEntry.
Diffstat (limited to 'erts/emulator/beam')
-rw-r--r-- | erts/emulator/beam/erl_nif.c | 12 | ||||
-rw-r--r-- | erts/emulator/beam/global.h | 6 |
2 files changed, 13 insertions, 5 deletions
diff --git a/erts/emulator/beam/erl_nif.c b/erts/emulator/beam/erl_nif.c index 121a7d943f..0720796b53 100644 --- a/erts/emulator/beam/erl_nif.c +++ b/erts/emulator/beam/erl_nif.c @@ -3938,10 +3938,14 @@ BIF_RETTYPE load_nif_2(BIF_ALIST_2) ASSERT(module_p != NULL); mod_atomp = atom_tab(atom_val(mod_atom)); - init_func = erts_static_nif_get_nif_init((char*)mod_atomp->name, mod_atomp->len); - if (init_func != NULL) - handle = init_func; - + { + ErtsStaticNifEntry* sne; + sne = erts_static_nif_get_nif_init((char*)mod_atomp->name, mod_atomp->len); + if (sne != NULL) { + init_func = sne->nif_init; + handle = init_func; + } + } this_mi = &module_p->curr; prev_mi = &module_p->old; if (in_area(caller, module_p->old.code_hdr, module_p->old.code_length)) { diff --git a/erts/emulator/beam/global.h b/erts/emulator/beam/global.h index 3c98ccfef3..ae9fe0cc62 100644 --- a/erts/emulator/beam/global.h +++ b/erts/emulator/beam/global.h @@ -1178,7 +1178,11 @@ void erts_lcnt_update_port_locks(int enable); /* driver_tab.c */ typedef void *(*ErtsStaticNifInitFPtr)(void); -ErtsStaticNifInitFPtr erts_static_nif_get_nif_init(const char *name, int len); +typedef struct ErtsStaticNifEntry_ { + const char *nif_name; + ErtsStaticNifInitFPtr nif_init; +} ErtsStaticNifEntry; +ErtsStaticNifEntry* erts_static_nif_get_nif_init(const char *name, int len); int erts_is_static_nif(void *handle); void erts_init_static_drivers(void); |