diff options
author | Björn-Egil Dahlberg <[email protected]> | 2015-05-11 11:16:14 +0200 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2015-05-11 11:16:14 +0200 |
commit | ccb1a2f06aa2b0ab77447572797d7fd75b2bd3c4 (patch) | |
tree | 50f7ba5c099efead21973b6cb5cd4f819d5243e2 /erts/emulator/beam/erl_map.c | |
parent | 4fc828ad916a5f3eedeea55ec7a6e7ea169fa46b (diff) | |
parent | b51bbf8b8a06e7bf18e0b837f50dad4a66a0fca7 (diff) | |
download | otp-ccb1a2f06aa2b0ab77447572797d7fd75b2bd3c4.tar.gz otp-ccb1a2f06aa2b0ab77447572797d7fd75b2bd3c4.tar.bz2 otp-ccb1a2f06aa2b0ab77447572797d7fd75b2bd3c4.zip |
Merge branch 'egil/fix-maps-copy-shallow'
* egil/fix-maps-copy-shallow:
erts: Make hashmap_get halfword safe
erts: Fix ETS db_has_variable check for large Maps
stdlib: Strengthen ETS Maps tests
erts: Fix copy shallow for large Maps
stdlib: Strengthen ETS Maps tests
erts: ETS ordered_set cannot use it's optimization with Maps
stdlib: Strengthen ETS Maps tests
stdlib: Refactor away ?line macro
Diffstat (limited to 'erts/emulator/beam/erl_map.c')
-rw-r--r-- | erts/emulator/beam/erl_map.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/erts/emulator/beam/erl_map.c b/erts/emulator/beam/erl_map.c index 256d6a8e81..a1bd39dbc8 100644 --- a/erts/emulator/beam/erl_map.c +++ b/erts/emulator/beam/erl_map.c @@ -1884,7 +1884,7 @@ erts_hashmap_get(Uint32 hx, Eterm key, Eterm node) UseTmpHeapNoproc(2); ASSERT(is_boxed(node)); - ptr = boxed_val(node); + ptr = boxed_val_rel(node, map_base); hdr = *ptr; ASSERT(is_header(hdr)); ASSERT(is_hashmap_header_head(hdr)); @@ -1905,8 +1905,7 @@ erts_hashmap_get(Uint32 hx, Eterm key, Eterm node) node = ptr[ix+1]; if (is_list(node)) { /* LEAF NODE [K|V] */ - ptr = list_val(node); - + ptr = list_val_rel(node,map_base); res = eq_rel(CAR(ptr), map_base, key, NULL) ? &(CDR(ptr)) : NULL; break; } @@ -1914,7 +1913,7 @@ erts_hashmap_get(Uint32 hx, Eterm key, Eterm node) hx = hashmap_shift_hash(th,hx,lvl,key); ASSERT(is_boxed(node)); - ptr = boxed_val(node); + ptr = boxed_val_rel(node, map_base); hdr = *ptr; ASSERT(is_header(hdr)); ASSERT(!is_hashmap_header_head(hdr)); |