]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
WIP ss16bit_simd: refactor load_found rrl-ng-v1
authorVladimír Čunát <vladimir.cunat@nic.cz>
Sun, 17 Dec 2023 08:17:39 +0000 (09:17 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Sun, 17 Dec 2023 08:18:16 +0000 (09:18 +0100)
This also affects the return value in some less common cases.

src/knot/modules/rrl/kru_ss16bit.c

index e56138812c29a6cf02890aceadc9e6d81070e8c6..d3bb945f31c7dbe08a1af7bec0c77c6e02d4af44 100644 (file)
@@ -207,17 +207,8 @@ bool kru_limited(struct kru *kru, void *buf, size_t buf_len, uint32_t time_now,
        }
 #endif
 
-       if (load) {
-       load_found:;
-               const uint32_t limit = (1<<16) - price;
-               if (*load >= limit) return true;
-               if (__builtin_add_overflow(*load, price, load)) {
-                       *load = (1<<16) - 1;
-                       return true;
-               } else {
-                       return false;
-               }
-       }
+       if (load)
+               goto load_found;
 
        // No match, so find position of the smallest load.
        int min_li = 0;
@@ -271,9 +262,15 @@ bool kru_limited(struct kru *kru, void *buf, size_t buf_len, uint32_t time_now,
 
        l[min_li]->ids[min_i] = id;
        load = &l[min_li]->loads[min_i]; // TODO: goto load_found?
-       if (__builtin_add_overflow(*load, price, load))
+load_found:;
+       const uint32_t limit = (1<<16) - price;
+       if (*load >= limit) return true;
+       if (__builtin_add_overflow(*load, price, load)) {
                *load = (1<<16) - 1;
-       return false; // Let's not limit it, though its questionable.
+               return true;
+       } else {
+               return false;
+       }
 }
 
 #ifdef __clang__