summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSverker Eriksson <sverker@erlang.org>2023-04-27 15:10:32 +0200
committerSverker Eriksson <sverker@erlang.org>2023-04-27 17:42:51 +0200
commit1f799a82c6e19de9b9623cf4700176c9804d9b39 (patch)
treeaf6e84327cd2096c28c695f7ba5beda17612dfe3
parente1044e4213f7f793c5ff2380081766954517d6f9 (diff)
downloaderlang-1f799a82c6e19de9b9623cf4700176c9804d9b39.tar.gz
erts: Remove dead code
Merging of two key-value leafs with equal keys are handled by hashmap_merge() itself, which means merge_colliding_node() will always end up with at least two distinct keys and return a collision node.
-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 88c74469ad..5cd867bb36 100644
--- a/erts/emulator/beam/erl_map.c
+++ b/erts/emulator/beam/erl_map.c
@@ -1466,10 +1466,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;
@@ -1502,12 +1502,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++;
@@ -1691,8 +1686,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;