aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/external.c
diff options
context:
space:
mode:
authorSverker Eriksson <[email protected]>2015-03-25 11:44:03 +0100
committerSverker Eriksson <[email protected]>2015-03-25 11:44:03 +0100
commit1f3869b308af19fb9cf471a12b8a1fdeab9da290 (patch)
treec90715cb9fc6c26ac0f68db052d744db22b54ec0 /erts/emulator/beam/external.c
parent7379c418ce610f3cd5a69fd4260efbc0246b994a (diff)
parent8d31ecea8b68ef6e16d7d77c0160e36f078b98de (diff)
downloadotp-1f3869b308af19fb9cf471a12b8a1fdeab9da290.tar.gz
otp-1f3869b308af19fb9cf471a12b8a1fdeab9da290.tar.bz2
otp-1f3869b308af19fb9cf471a12b8a1fdeab9da290.zip
Merge branch 'sverk/hamt-term2bin-bug/OTP-12585'
* sverk/hamt-term2bin-bug/OTP-12585: erts: Optimize hashmap_get erts: Remove HAMT_SUBTAG_NODE_ARRAY erts: Fix bug in binary_to_term for hamt when yielding erts: Rename to flatmap_from_validated_list
Diffstat (limited to 'erts/emulator/beam/external.c')
-rw-r--r--erts/emulator/beam/external.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c
index 82c60840e5..b0b232f185 100644
--- a/erts/emulator/beam/external.c
+++ b/erts/emulator/beam/external.c
@@ -2633,8 +2633,6 @@ enc_term_int(TTBEncodeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj, byte* ep,
*ep++ = MAP_EXT;
ptr++;
put_int32(*ptr, ep); ep += 4;
- /*fall through*/
- case HAMT_SUBTAG_NODE_ARRAY:
node_sz = 16;
break;
case HAMT_SUBTAG_HEAD_BITMAP:
@@ -3878,6 +3876,7 @@ dec_term_atom_common:
ctx->u.dc.next = next;
ctx->u.dc.hp = hp;
ctx->u.dc.maps_list = maps_list;
+ ctx->u.dc.hamt_list = hamt_list;
ctx->reds = 0;
return NULL;
}
@@ -4171,8 +4170,8 @@ encode_size_struct_int(TTBSizeContext* ctx, ErtsAtomCacheMap *acmp, Eterm obj,
hdr = *ptr;
ASSERT(is_header(hdr));
switch(hdr & _HEADER_MAP_SUBTAG_MASK) {
- case HAMT_SUBTAG_HEAD_ARRAY: ptr++;
- case HAMT_SUBTAG_NODE_ARRAY:
+ case HAMT_SUBTAG_HEAD_ARRAY:
+ ptr++;
node_sz = 16;
break;
case HAMT_SUBTAG_HEAD_BITMAP: ptr++;