From: Matt Corallo Date: Sat, 9 Dec 2023 21:12:30 +0000 (+0000) Subject: Force inlining source and target node id lookup in candidate hops X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=2884b00c96087fdf49d309aaee61ee2c8e567ff0;p=rust-lightning Force inlining source and target node id lookup in candidate hops Because our router is rather large, LLVM doesn't always decide to inline small functions in it, opting instead for a call. This is somewhat wasteful when we do repeated `match`es on the same data, so here we force inlining of the `source` and `target` `NodeId` lookups. --- diff --git a/lightning/src/routing/router.rs b/lightning/src/routing/router.rs index e847c001..57efd9f7 100644 --- a/lightning/src/routing/router.rs +++ b/lightning/src/routing/router.rs @@ -1260,7 +1260,7 @@ impl<'a> CandidateRouteHop<'a> { /// Source node id refers to the node forwarding the HTLC through this hop. /// /// For [`Self::FirstHop`] we return payer's node id. - #[inline] + #[inline(always)] pub fn source(&self) -> NodeId { match self { CandidateRouteHop::FirstHop { payer_node_id, .. } => **payer_node_id, @@ -1279,7 +1279,7 @@ impl<'a> CandidateRouteHop<'a> { /// /// For [`Self::OneHopBlinded`] we return `None` because the target is the same as the source, /// and such a return value would be somewhat nonsensical. - #[inline] + #[inline(always)] pub fn target(&self) -> Option { match self { CandidateRouteHop::FirstHop { details, .. } => Some(details.counterparty.node_id.into()),