diff options
author | Rickard Green <[email protected]> | 2016-08-29 18:50:40 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2016-08-29 18:50:40 +0200 |
commit | 81993991c8438aa31ec0e88f4f67637d43fa70c0 (patch) | |
tree | b0f7c723ef79c0156bac5f74fcf77dc53aeb656d /erts/emulator/beam/erl_fun.h | |
parent | ca85801bf0fffa1bc8b19ca3acb7f69f2361627c (diff) | |
parent | b815d568e2e43d96698dbb8de6b993d55c1b14a0 (diff) | |
download | otp-81993991c8438aa31ec0e88f4f67637d43fa70c0.tar.gz otp-81993991c8438aa31ec0e88f4f67637d43fa70c0.tar.bz2 otp-81993991c8438aa31ec0e88f4f67637d43fa70c0.zip |
Merge branch 'maint'
* maint:
Fix tracing of processes executing dirty
Perform check_process_code while process is executing dirty
Fix purge of code
Reclaim literal area after purge has completed
Separate literal area from code
Conflicts:
erts/emulator/beam/global.h
Diffstat (limited to 'erts/emulator/beam/erl_fun.h')
-rw-r--r-- | erts/emulator/beam/erl_fun.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/erts/emulator/beam/erl_fun.h b/erts/emulator/beam/erl_fun.h index 8c4deea7a0..73c3e19c1c 100644 --- a/erts/emulator/beam/erl_fun.h +++ b/erts/emulator/beam/erl_fun.h @@ -44,6 +44,7 @@ typedef struct erl_fun_entry { Eterm module; /* Tagged atom for module. */ erts_refc_t refc; /* Reference count: One for code + one for each fun object in each process. */ + BeamInstr *pend_purge_address; /* address stored during a pending purge */ } ErlFunEntry; /* @@ -81,7 +82,10 @@ ErlFunEntry* erts_put_fun_entry2(Eterm mod, int old_uniq, int old_index, void erts_erase_fun_entry(ErlFunEntry* fe); void erts_cleanup_funs(ErlFunThing* funp); -void erts_cleanup_funs_on_purge(BeamInstr* start, BeamInstr* end); +void erts_fun_purge_prepare(BeamInstr* start, BeamInstr* end); +void erts_fun_purge_abort_prepare(ErlFunEntry **funs, Uint no); +void erts_fun_purge_abort_finalize(ErlFunEntry **funs, Uint no); +void erts_fun_purge_complete(ErlFunEntry **funs, Uint no); void erts_dump_fun_entries(int, void *); #endif |