about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2022-12-17 11:41:38 +0100
committerptitSeb <sebastien.chev@gmail.com>2022-12-17 11:41:38 +0100
commit67620b7948016ab08cc509199dfa422ae421abb8 (patch)
tree45ad50f9229886fe88e0c833a47b25dc7b5e6682 /src
parent6c0500d1b636321883c89f5499c96ca04123fb8a (diff)
downloadbox64-67620b7948016ab08cc509199dfa422ae421abb8.tar.gz
box64-67620b7948016ab08cc509199dfa422ae421abb8.zip
Added a small cache to GetDefaultVersion function
Diffstat (limited to 'src')
-rw-r--r--src/librarian/symbols.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/librarian/symbols.c b/src/librarian/symbols.c
index 7ac6d810..3c37e9c0 100644
--- a/src/librarian/symbols.c
+++ b/src/librarian/symbols.c
@@ -286,8 +286,16 @@ void AddDefaultVersion(kh_defaultversion_t* def, const char* symname, const char
 }
 const char* GetDefaultVersion(kh_defaultversion_t* def, const char* symname)
 {
+    // small Q'nD cache of last value, because it's called many time
+    static const char* previous_res = NULL;
+    static const char* previous_name = NULL;
+    if(previous_name == symname)
+        return previous_res;
     khint_t k = kh_get(defaultversion, def, symname);
+    previous_name = symname;
     if(k==kh_end(def))
-        return NULL;
-    return kh_value(def, k);
+        previous_res = NULL;
+    else
+        previous_res = kh_value(def, k);
+    return previous_res;
 }