summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSverker Eriksson <sverker@erlang.org>2023-05-02 15:10:10 +0200
committerSverker Eriksson <sverker@erlang.org>2023-05-02 15:10:10 +0200
commitfa7f01c633afc3d7a15763e8391ba31480e3e583 (patch)
treeba056dec5800b4a666b357e7698da22ac5b8545a
parent1e57bfbcdf94fd0e65419fdde5d5793185874cda (diff)
parent1692be7bd98e9fa37666b7444fe56c30f3e9a3df (diff)
downloaderlang-fa7f01c633afc3d7a15763e8391ba31480e3e583.tar.gz
Merge branch 'maint'
-rw-r--r--erts/emulator/beam/erl_map.c19
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;