File 4831-dialyzer-Simplify-ets-usage.patch of Package erlang

From f878ebb6c14ecafaf18bec551f83628c24ec247f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Muska=C5=82a?= <micmus@fb.com>
Date: Fri, 2 Jun 2023 14:29:31 +0100
Subject: [PATCH] [dialyzer] Simplify ets usage

This simplifies ets:lookup + ets:delete into ets:take calls.
Removing one call to ets should be beneficial in terms of performance.
---
 lib/dialyzer/src/dialyzer_cplt.erl  | 3 +--
 lib/dialyzer/src/dialyzer_plt.erl   | 3 +--
 lib/dialyzer/src/dialyzer_utils.erl | 3 +--
 3 files changed, 3 insertions(+), 6 deletions(-)

diff --git a/lib/dialyzer/src/dialyzer_plt.erl b/lib/dialyzer/src/dialyzer_plt.erl
index f58c84da25..203eafc3c2 100644
--- a/lib/dialyzer/src/dialyzer_plt.erl
+++ b/lib/dialyzer/src/dialyzer_plt.erl
@@ -371,9 +371,8 @@ tab_merge('$end_of_table', T1, T2) ->
       tab_merge(Key, T1, T2)
   end;
 tab_merge(K1, T1, T2) ->
-  Vs = ets:lookup(T1, K1),
   NextK1 = ets:next(T1, K1),
-  true = ets:delete(T1, K1),
+  Vs = ets:take(T1, K1),
   true = ets:insert(T2, Vs),
   tab_merge(NextK1, T1, T2).
 
diff --git a/lib/dialyzer/src/dialyzer_utils.erl b/lib/dialyzer/src/dialyzer_utils.erl
index b920d22b30..7282cee1a7 100644
--- a/lib/dialyzer/src/dialyzer_utils.erl
+++ b/lib/dialyzer/src/dialyzer_utils.erl
@@ -1179,9 +1179,8 @@ ets_take('$end_of_table', T, F, A) ->
     Key -> ets_take(Key, T, F, A)
   end;
 ets_take(Key, T, F, A) ->
-  Vs = ets:lookup(T, Key),
   Key1 = ets:next(T, Key),
-  true = ets:delete(T, Key),
+  Vs = ets:take(T, Key),
   ets_take(Key1, T, F, F(Vs, A)).
 
 -spec parallelism() -> integer().
-- 
2.35.3

openSUSE Build Service is sponsored by