diff options
author | Rickard Green <[email protected]> | 2019-07-22 11:16:39 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-07-22 11:16:39 +0200 |
commit | 97c7c0efdf994b7e1a6860c8f34af4b3474ec8ee (patch) | |
tree | dd913a588d7c97bf3db933ded6b7ee4a53d07c15 /erts/emulator/beam/erl_node_tables.c | |
parent | 3967d28c05dae77db30b15e56eb4ececf4f1afef (diff) | |
parent | dda4dc0da4b89431a202b58427431de50c269861 (diff) | |
download | otp-97c7c0efdf994b7e1a6860c8f34af4b3474ec8ee.tar.gz otp-97c7c0efdf994b7e1a6860c8f34af4b3474ec8ee.tar.bz2 otp-97c7c0efdf994b7e1a6860c8f34af4b3474ec8ee.zip |
Merge branch 'rickard/node-refc-tests-21' into rickard/node-refc-tests-22
* rickard/node-refc-tests-21:
Node container refc test for persistent terms
Include persistent term storage in node/dist refc check
Fix node refc test for system message queue
Diffstat (limited to 'erts/emulator/beam/erl_node_tables.c')
-rw-r--r-- | erts/emulator/beam/erl_node_tables.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_node_tables.c b/erts/emulator/beam/erl_node_tables.c index 4eb6c3e214..9cba707440 100644 --- a/erts/emulator/beam/erl_node_tables.c +++ b/erts/emulator/beam/erl_node_tables.c @@ -1188,6 +1188,7 @@ static Eterm AM_delayed_delete_timer; static Eterm AM_thread_progress_delete_timer; static Eterm AM_sequence; static Eterm AM_signal; +static Eterm AM_persistent_term; static void setup_reference_table(void); static Eterm reference_table_term(Uint **hpp, ErlOffHeap *ohp, Uint *szp); @@ -1284,6 +1285,7 @@ erts_get_node_and_dist_references(struct process *proc) INIT_AM(thread_progress_delete_timer); INIT_AM(signal); INIT_AM(sequence); + INIT_AM(persistent_term); references_atoms_need_init = 0; } @@ -1916,6 +1918,14 @@ insert_dist_suspended_procs(DistEntry *dep) } } +static void +insert_persistent_term(ErlOffHeap *ohp, void *arg) +{ + Eterm heap[3]; + insert_offheap(ohp, SYSTEM_REF, + TUPLE2(&heap[0], AM_system, AM_persistent_term)); +} + #ifdef ERL_NODE_BOOKKEEP void erts_node_bookkeep(ErlNode *np, Eterm term, int what) @@ -1990,8 +2000,8 @@ setup_reference_table(void) if (proc) insert_process(proc); } - - erts_foreach_sys_msg_in_q(insert_sys_msg); + + erts_debug_foreach_sys_msg_in_q(insert_sys_msg); /* Insert all ports */ max = erts_ptab_max(&erts_port); @@ -2096,6 +2106,10 @@ setup_reference_table(void) /* Insert all bif timers */ erts_debug_bif_timer_foreach(insert_bif_timer, NULL); + /* Insert persistent term storage */ + erts_debug_foreach_persistent_term_off_heap(insert_persistent_term, + NULL); + /* Insert node table (references to dist) */ hash_foreach(&erts_node_table, insert_erl_node, NULL); } |