diff options
author | Lukas Larsson <[email protected]> | 2016-07-14 16:19:10 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2016-07-14 16:19:10 +0200 |
commit | 0737ad60e3ab97aa481d63c17eebafe1f2bddd55 (patch) | |
tree | f148fac63eb7ddbf69c436bfbb395c1df345329d /erts/emulator/beam/beam_emu.c | |
parent | f7b0cbbab08f2d3f733dfe2e201ce0ff614daaf3 (diff) | |
parent | 571776ede924840f2a70681764031ca3372dd919 (diff) | |
download | otp-0737ad60e3ab97aa481d63c17eebafe1f2bddd55.tar.gz otp-0737ad60e3ab97aa481d63c17eebafe1f2bddd55.tar.bz2 otp-0737ad60e3ab97aa481d63c17eebafe1f2bddd55.zip |
Merge branch 'lukas/erts/dirty_msacc_cleanup/OTP-13744' into maint
* lukas/erts/dirty_msacc_cleanup/OTP-13744:
erts: Update msacc docs with dirty scheduler info
erts: Cleanup a bunch of un-neccesary #ifndefs
erts: Fix some msacc inline directives
erts: Add extra bif msacc states
erts: Add erts_map_from_ks_and_vs
erts: Fix msacc for dirty scheduler and heap_limit
Diffstat (limited to 'erts/emulator/beam/beam_emu.c')
-rw-r--r-- | erts/emulator/beam/beam_emu.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/erts/emulator/beam/beam_emu.c b/erts/emulator/beam/beam_emu.c index 4716460a6b..7419a62058 100644 --- a/erts/emulator/beam/beam_emu.c +++ b/erts/emulator/beam/beam_emu.c @@ -2826,13 +2826,7 @@ do { \ goto context_switch3; } - if (ERTS_MSACC_IS_ENABLED_CACHED_X()) { - if (GET_BIF_MODULE(Arg(0)) == am_ets) { - ERTS_MSACC_SET_STATE_CACHED_M_X(ERTS_MSACC_STATE_ETS); - } else { - ERTS_MSACC_SET_STATE_CACHED_M_X(ERTS_MSACC_STATE_BIF); - } - } + ERTS_MSACC_SET_BIF_STATE_CACHED_X(GET_BIF_MODULE(Arg(0)), GET_BIF_ADDRESS(Arg(0))); bf = GET_BIF_ADDRESS(Arg(0)); @@ -3593,13 +3587,7 @@ do { \ goto context_switch; } - if (ERTS_MSACC_IS_ENABLED_CACHED_X()) { - if ((Eterm)I[-3] == am_ets) { - ERTS_MSACC_SET_STATE_CACHED_M_X(ERTS_MSACC_STATE_ETS); - } else { - ERTS_MSACC_SET_STATE_CACHED_M_X(ERTS_MSACC_STATE_BIF); - } - } + ERTS_MSACC_SET_BIF_STATE_CACHED_X((Eterm)I[-3], (BifFunction)Arg(0)); c_p->current = I-3; /* In case we apply process_info/1,2 or load_nif/1 */ c_p->i = I; /* In case we apply check_process_code/2. */ @@ -7017,7 +7005,11 @@ update_map_assoc(Process* p, Eterm* reg, Eterm map, BeamInstr* I) /* The expensive case, need to build a hashmap */ if (n > MAP_SMALL_MAP_LIMIT) { - res = erts_hashmap_from_ks_and_vs(p,flatmap_get_keys(mp),flatmap_get_values(mp),n); + ErtsHeapFactory factory; + erts_factory_proc_init(&factory, p); + res = erts_hashmap_from_ks_and_vs(&factory,flatmap_get_keys(mp), + flatmap_get_values(mp),n); + erts_factory_close(&factory); } return res; } |