perf(trie): remove redundant HashMap lookup in sparse trie account state query (#22328)

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
MergeBot
2026-02-19 04:09:04 +01:00
committed by GitHub
parent 506ab806e4
commit 26470cadfc

View File

@@ -613,13 +613,13 @@ where
}
// Get the current account state either from the trie or from latest account update.
let trie_account = if let Some(LeafUpdate::Changed(encoded)) = self.account_updates.get(addr) {
Some(encoded).filter(|encoded| !encoded.is_empty())
} else if !self.account_updates.contains_key(addr) {
self.trie.get_account_value(addr)
} else {
let trie_account = match self.account_updates.get(addr) {
Some(LeafUpdate::Changed(encoded)) => {
Some(encoded).filter(|encoded| !encoded.is_empty())
}
// Needs to be revealed first
return true;
Some(LeafUpdate::Touched) => return true,
None => self.trie.get_account_value(addr),
};
let trie_account = trie_account.map(|value| TrieAccount::decode(&mut &value[..]).expect("invalid account RLP"));