aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/hipe
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2012-03-09 12:06:34 +0100
committerSverker Eriksson <[email protected]>2012-03-09 15:04:37 +0100
commit4513946835523d099a28f933d40a6275a46097aa (patch)
treeedde847f79a7b9509525878d0271b970d9cc0bf9 /erts/emulator/hipe
parent61ebe50adc2bee5667bc9eef6e560cdb72114509 (diff)
parent16c60b70936070b0a568473c1d99466479446af2 (diff)
downloadotp-4513946835523d099a28f933d40a6275a46097aa.tar.gz
otp-4513946835523d099a28f933d40a6275a46097aa.tar.bz2
otp-4513946835523d099a28f933d40a6275a46097aa.zip
Merge branch 'sverk/threadsafe-code-loading'
* sverk/threadsafe-code-loading: (59 commits) erts: Fix assert failure when code_server exits "during" commit erts: Fix memory leak in code loading erts: Adapt gdb etp-command for new beam_ranges erts: Set correct default tracing when loading code erts: Fix faulty assert in non-smp debug vm erts: Use correct macro for "yield-return" erts: Refactor code loading with renaming erts: Seize code_ix lock when updating trace settings erts: Switch order between code_ix lock and thread blocking erts: Fix race bug in finish_after_on_load erts: Refactor export staging lock erts: Activate staged code in a thread safe way erts: Suspend processes waiting for code_ix lock erts: Fix compiler warning in inet_drv erts: Fix single threaded fallback in new BIF finish_loading_1 erts: Fix type bug Break apart erlang:load_module/2 into two separate BIFs Use magic binaries in erts_prepare_loading() and erts_finish_loading() erts: Cleanup non-blocking load erts: Fix memory query for non-blocking module table ... OTP-9974
Diffstat (limited to 'erts/emulator/hipe')
-rw-r--r--erts/emulator/hipe/hipe_bif0.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/erts/emulator/hipe/hipe_bif0.c b/erts/emulator/hipe/hipe_bif0.c
index 28e4382835..6340c39e69 100644
--- a/erts/emulator/hipe/hipe_bif0.c
+++ b/erts/emulator/hipe/hipe_bif0.c
@@ -609,8 +609,8 @@ static Uint *hipe_find_emu_address(Eterm mod, Eterm name, unsigned int arity)
Uint *code_base;
int i, n;
- modp = erts_get_module(mod);
- if (modp == NULL || (code_base = modp->code) == NULL)
+ modp = erts_get_module(mod, erts_active_code_ix());
+ if (modp == NULL || (code_base = modp->curr.code) == NULL)
return NULL;
n = code_base[MI_NUM_FUNCTIONS];
for (i = 0; i < n; ++i) {
@@ -648,7 +648,7 @@ static void *hipe_get_emu_address(Eterm m, Eterm f, unsigned int arity, int is_r
/* if not found, stub it via the export entry */
/* no lock needed around erts_export_get_or_make_stub() */
Export *export_entry = erts_export_get_or_make_stub(m, f, arity);
- address = export_entry->address;
+ address = export_entry->addressv[erts_active_code_ix()];
}
return address;
}
@@ -1591,7 +1591,7 @@ BIF_RETTYPE hipe_nonclosure_address(BIF_ALIST_2)
f = tp[2];
if (is_not_atom(m) || is_not_atom(f))
goto badfun;
- if (!erts_find_export_entry(m, f, BIF_ARG_2))
+ if (!erts_active_export_entry(m, f, BIF_ARG_2))
goto badfun;
} else
goto badfun;