From cb368e655478d23b044260044959ec32292db738 Mon Sep 17 00:00:00 2001 From: Brooks Prumo Date: Wed, 1 Dec 2021 08:57:29 -0600 Subject: [PATCH] Pass Epoch by value in StakeHistory::get() (#21523) --- programs/stake/src/stake_state.rs | 2 +- runtime/src/bank.rs | 4 ++-- sdk/program/src/stake/state.rs | 8 ++++---- sdk/program/src/stake_history.rs | 7 +++---- sdk/program/src/sysvar/stake_history.rs | 4 ++-- 5 files changed, 12 insertions(+), 13 deletions(-) diff --git a/programs/stake/src/stake_state.rs b/programs/stake/src/stake_state.rs index e522177487..c74a49822f 100644 --- a/programs/stake/src/stake_state.rs +++ b/programs/stake/src/stake_state.rs @@ -2221,7 +2221,7 @@ mod tests { } for epoch in 0..=stake.deactivation_epoch + 1 { - let history = stake_history.get(&epoch).unwrap(); + let history = stake_history.get(epoch).unwrap(); let other_activations: u64 = other_activations[..=epoch as usize].iter().sum(); let expected_stake = history.effective - base_stake - other_activations; let (expected_activating, expected_deactivating) = if epoch < stake.deactivation_epoch { diff --git a/runtime/src/bank.rs b/runtime/src/bank.rs index edd7b25db6..1270614bd3 100644 --- a/runtime/src/bank.rs +++ b/runtime/src/bank.rs @@ -2174,7 +2174,7 @@ impl Bank { .fetch_add(validator_rewards_paid, Relaxed); let active_stake = if let Some(stake_history_entry) = - self.stakes.read().unwrap().history().get(&prev_epoch) + self.stakes.read().unwrap().history().get(prev_epoch) { stake_history_entry.effective } else { @@ -2274,7 +2274,7 @@ impl Bank { .fetch_add(validator_rewards_paid, Relaxed); let active_stake = if let Some(stake_history_entry) = - self.stakes.read().unwrap().history().get(&prev_epoch) + self.stakes.read().unwrap().history().get(prev_epoch) { stake_history_entry.effective } else { diff --git a/sdk/program/src/stake/state.rs b/sdk/program/src/stake/state.rs index 2a4235d7d2..004836e6b0 100644 --- a/sdk/program/src/stake/state.rs +++ b/sdk/program/src/stake/state.rs @@ -404,7 +404,7 @@ impl Delegation { } else if let Some((history, mut prev_epoch, mut prev_cluster_stake)) = history.and_then(|history| { history - .get(&self.deactivation_epoch) + .get(self.deactivation_epoch) .map(|cluster_stake_at_deactivation_epoch| { ( history, @@ -448,7 +448,7 @@ impl Delegation { if current_epoch >= target_epoch { break; } - if let Some(current_cluster_stake) = history.get(¤t_epoch) { + if let Some(current_cluster_stake) = history.get(current_epoch) { prev_epoch = current_epoch; prev_cluster_stake = current_cluster_stake; } else { @@ -488,7 +488,7 @@ impl Delegation { } else if let Some((history, mut prev_epoch, mut prev_cluster_stake)) = history.and_then(|history| { history - .get(&self.activation_epoch) + .get(self.activation_epoch) .map(|cluster_stake_at_activation_epoch| { ( history, @@ -533,7 +533,7 @@ impl Delegation { if current_epoch >= target_epoch || current_epoch >= self.deactivation_epoch { break; } - if let Some(current_cluster_stake) = history.get(¤t_epoch) { + if let Some(current_cluster_stake) = history.get(current_epoch) { prev_epoch = current_epoch; prev_cluster_stake = current_cluster_stake; } else { diff --git a/sdk/program/src/stake_history.rs b/sdk/program/src/stake_history.rs index 910cb2f18a..3b3014322a 100644 --- a/sdk/program/src/stake_history.rs +++ b/sdk/program/src/stake_history.rs @@ -56,8 +56,7 @@ impl std::ops::Add for StakeHistoryEntry { pub struct StakeHistory(Vec<(Epoch, StakeHistoryEntry)>); impl StakeHistory { - #[allow(clippy::trivially_copy_pass_by_ref)] - pub fn get(&self, epoch: &Epoch) -> Option<&StakeHistoryEntry> { + pub fn get(&self, epoch: Epoch) -> Option<&StakeHistoryEntry> { self.binary_search_by(|probe| epoch.cmp(&probe.0)) .ok() .map(|index| &self[index].1) @@ -98,9 +97,9 @@ mod tests { } assert_eq!(stake_history.len(), MAX_ENTRIES); assert_eq!(stake_history.iter().map(|entry| entry.0).min().unwrap(), 1); - assert_eq!(stake_history.get(&0), None); + assert_eq!(stake_history.get(0), None); assert_eq!( - stake_history.get(&1), + stake_history.get(1), Some(&StakeHistoryEntry { activating: 1, ..StakeHistoryEntry::default() diff --git a/sdk/program/src/sysvar/stake_history.rs b/sdk/program/src/sysvar/stake_history.rs index 8438f3f05d..7b18ea73e6 100644 --- a/sdk/program/src/sysvar/stake_history.rs +++ b/sdk/program/src/sysvar/stake_history.rs @@ -54,9 +54,9 @@ mod tests { } assert_eq!(stake_history.len(), MAX_ENTRIES); assert_eq!(stake_history.iter().map(|entry| entry.0).min().unwrap(), 1); - assert_eq!(stake_history.get(&0), None); + assert_eq!(stake_history.get(0), None); assert_eq!( - stake_history.get(&1), + stake_history.get(1), Some(&StakeHistoryEntry { activating: 1, ..StakeHistoryEntry::default()