summaryrefslogtreecommitdiff
path: root/erts/emulator/beam/erl_bif_persistent.c
diff options
context:
space:
mode:
Diffstat (limited to 'erts/emulator/beam/erl_bif_persistent.c')
-rw-r--r--erts/emulator/beam/erl_bif_persistent.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/erts/emulator/beam/erl_bif_persistent.c b/erts/emulator/beam/erl_bif_persistent.c
index 91cc03fe57..596604cdec 100644
--- a/erts/emulator/beam/erl_bif_persistent.c
+++ b/erts/emulator/beam/erl_bif_persistent.c
@@ -439,7 +439,7 @@ BIF_RETTYPE persistent_term_put_2(BIF_ALIST_2)
BIF_RETTYPE persistent_term_get_0(BIF_ALIST_0)
{
- HashTable* hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table);
+ HashTable* hash_table;
TrapData* trap_data;
Eterm res = NIL;
Eterm magic_ref;
@@ -450,6 +450,8 @@ BIF_RETTYPE persistent_term_get_0(BIF_ALIST_0)
ERTS_BIF_YIELD0(&bif_trap_export[BIF_persistent_term_get_0], BIF_P);
}
+ hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table);
+
magic_ref = alloc_trap_data(BIF_P);
mbp = erts_magic_ref2bin(magic_ref);
trap_data = ERTS_MAGIC_BIN_DATA(mbp);
@@ -673,7 +675,7 @@ BIF_RETTYPE erts_internal_erase_persistent_terms_0(BIF_ALIST_0)
BIF_RETTYPE persistent_term_info_0(BIF_ALIST_0)
{
- HashTable* hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table);
+ HashTable* hash_table;
TrapData* trap_data;
Eterm res = NIL;
Eterm magic_ref;
@@ -684,6 +686,8 @@ BIF_RETTYPE persistent_term_info_0(BIF_ALIST_0)
ERTS_BIF_YIELD0(&bif_trap_export[BIF_persistent_term_info_0], BIF_P);
}
+ hash_table = (HashTable *) erts_atomic_read_nob(&the_hash_table);
+
magic_ref = alloc_trap_data(BIF_P);
mbp = erts_magic_ref2bin(magic_ref);
trap_data = ERTS_MAGIC_BIN_DATA(mbp);