diff options
author | Sverker Eriksson <sverker@erlang.org> | 2023-05-02 15:10:10 +0200 |
---|---|---|
committer | Sverker Eriksson <sverker@erlang.org> | 2023-05-02 15:10:10 +0200 |
commit | fa7f01c633afc3d7a15763e8391ba31480e3e583 (patch) | |
tree | ba056dec5800b4a666b357e7698da22ac5b8545a | |
parent | 1e57bfbcdf94fd0e65419fdde5d5793185874cda (diff) | |
parent | 1692be7bd98e9fa37666b7444fe56c30f3e9a3df (diff) | |
download | erlang-fa7f01c633afc3d7a15763e8391ba31480e3e583.tar.gz |
Merge branch 'maint'
-rw-r--r-- | erts/emulator/beam/erl_map.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/erts/emulator/beam/erl_map.c b/erts/emulator/beam/erl_map.c index 63af15c5fd..337567406b 100644 --- a/erts/emulator/beam/erl_map.c +++ b/erts/emulator/beam/erl_map.c @@ -1519,10 +1519,10 @@ BIF_RETTYPE maps_merge_trap_1(BIF_ALIST_1) { #define MAP_MERGE_LOOP_FACTOR 8 -static Eterm merge_maybe_collision_node(Process* p, - Eterm* srcA, Uint szA, - Eterm* srcB, Uint szB, - Uint* map_sizep) +static Eterm merge_collision_node(Process* p, + Eterm* srcA, Uint szA, + Eterm* srcB, Uint szB, + Uint* map_sizep) { Eterm *hp; Eterm *hdr_ptr; @@ -1555,12 +1555,7 @@ static Eterm merge_maybe_collision_node(Process* p, } } } - if (arity == 1) { /* no collision node needed */ - Eterm ret_cons = hdr_ptr[1]; - ASSERT(!szA && !szB); - HRelease(p, hp_end, hdr_ptr); - return ret_cons; - } + ASSERT(arity >= 2); for ( ; szA; szA--) *hp++ = *srcA++; @@ -1744,8 +1739,8 @@ merge_nodes: ASSERT(!(sp->rbm == 0 && ctx->lvl > 0)); } else { - res = merge_maybe_collision_node(p, sp->srcA, coll_szA, - sp->srcB, coll_szB, &ctx->size); + res = merge_collision_node(p, sp->srcA, coll_szA, + sp->srcB, coll_szB, &ctx->size); sp->mix = 3; coll_szA = coll_szB = 0; continue; |