DRY redundant calls to `$candidate.htlc_minimum_msat()` in routing
authorMatt Corallo <git@bluematt.me>
Fri, 8 Dec 2023 01:49:08 +0000 (01:49 +0000)
committerMatt Corallo <git@bluematt.me>
Sun, 10 Dec 2023 03:48:55 +0000 (03:48 +0000)
While LLVM should inline and elide the redundant calls, because the
router is rather large LLVM can decide against inlining in some
cases where it would be an nice win.

Thus, its worth DRY'ing the redundant calls explicitly.

lightning/src/routing/router.rs

index 4d2417dd58c3a4dfe7e8d2cc781f4598c61b9385..92c657c5515ed957d327c89997d59312c14d21e7 100644 (file)
@@ -2020,14 +2020,15 @@ where L::Target: Logger {
                                                // Can't overflow due to how the values were computed right above.
                                                None => unreachable!(),
                                        };
+                                       let htlc_minimum_msat = $candidate.htlc_minimum_msat();
                                        #[allow(unused_comparisons)] // $next_hops_path_htlc_minimum_msat is 0 in some calls so rustc complains
-                                       let over_path_minimum_msat = amount_to_transfer_over_msat >= $candidate.htlc_minimum_msat() &&
+                                       let over_path_minimum_msat = amount_to_transfer_over_msat >= htlc_minimum_msat &&
                                                amount_to_transfer_over_msat >= $next_hops_path_htlc_minimum_msat;
 
                                        #[allow(unused_comparisons)] // $next_hops_path_htlc_minimum_msat is 0 in some calls so rustc complains
                                        let may_overpay_to_meet_path_minimum_msat =
-                                               ((amount_to_transfer_over_msat < $candidate.htlc_minimum_msat() &&
-                                                 recommended_value_msat >= $candidate.htlc_minimum_msat()) ||
+                                               ((amount_to_transfer_over_msat < htlc_minimum_msat &&
+                                                 recommended_value_msat >= htlc_minimum_msat) ||
                                                 (amount_to_transfer_over_msat < $next_hops_path_htlc_minimum_msat &&
                                                  recommended_value_msat >= $next_hops_path_htlc_minimum_msat));