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