aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_fun.h
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2016-08-29 18:50:40 +0200
committerRickard Green <[email protected]>2016-08-29 18:50:40 +0200
commit81993991c8438aa31ec0e88f4f67637d43fa70c0 (patch)
treeb0f7c723ef79c0156bac5f74fcf77dc53aeb656d /erts/emulator/beam/erl_fun.h
parentca85801bf0fffa1bc8b19ca3acb7f69f2361627c (diff)
parentb815d568e2e43d96698dbb8de6b993d55c1b14a0 (diff)
downloadotp-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.h6
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