Skip to content

Commit

Permalink
Dedup v1.8 (solana-labs#22584)
Browse files Browse the repository at this point in the history
backport
  • Loading branch information
aeyakovenko committed Jan 20, 2022
1 parent 2d5957a commit cb5106a
Show file tree
Hide file tree
Showing 20 changed files with 372 additions and 177 deletions.
74 changes: 52 additions & 22 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ members = [
"banks-client",
"banks-interface",
"banks-server",
"bloom",
"clap-utils",
"cli-config",
"cli-output",
Expand Down
32 changes: 32 additions & 0 deletions bloom/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
[package]
name = "solana-bloom"
version = "1.8.14"
description = "Solana bloom filter"
authors = ["Solana Maintainers <maintainers@solana.foundation>"]
repository = "https://github.com/solana-labs/solana"
license = "Apache-2.0"
homepage = "https://solana.com/"
documentation = "https://docs.rs/solana-bloom"
edition = "2018"

[dependencies]
bv = { version = "0.11.1", features = ["serde"] }
fnv = "1.0.7"
rand = "0.7.0"
serde = { version = "1.0.133", features = ["rc"] }
rayon = "1.5.1"
serde_derive = "1.0.103"
solana-frozen-abi = { path = "../frozen-abi", version = "=1.8.14" }
solana-frozen-abi-macro = { path = "../frozen-abi/macro", version = "=1.8.14" }
solana-sdk = { path = "../sdk", version = "=1.8.14" }
log = "0.4.14"

[lib]
crate-type = ["lib"]
name = "solana_bloom"

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

[build-dependencies]
rustc_version = "0.4"
2 changes: 1 addition & 1 deletion runtime/benches/bloom.rs → bloom/benches/bloom.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ use {
bv::BitVec,
fnv::FnvHasher,
rand::Rng,
solana_runtime::bloom::{AtomicBloom, Bloom, BloomHashIndex},
solana_bloom::bloom::{AtomicBloom, Bloom, BloomHashIndex},
solana_sdk::{
hash::{hash, Hash},
signature::Signature,
Expand Down
1 change: 1 addition & 0 deletions bloom/build.rs
14 changes: 8 additions & 6 deletions runtime/src/bloom.rs → bloom/src/bloom.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ use {
serde::{Deserialize, Serialize},
solana_sdk::sanitize::{Sanitize, SanitizeError},
std::{
cmp, fmt,
cmp,
convert::TryFrom,
fmt,
hash::Hasher,
marker::PhantomData,
sync::atomic::{AtomicU64, Ordering},
Expand Down Expand Up @@ -99,7 +101,7 @@ impl<T: BloomHashIndex> Bloom<T> {
}
}
fn pos(&self, key: &T, k: u64) -> u64 {
key.hash_at_index(k) % self.bits.len()
key.hash_at_index(k).wrapping_rem(self.bits.len())
}
pub fn clear(&mut self) {
self.bits = BitVec::new_fill(false, self.bits.len());
Expand All @@ -109,7 +111,7 @@ impl<T: BloomHashIndex> Bloom<T> {
for k in &self.keys {
let pos = self.pos(key, *k);
if !self.bits.get(pos) {
self.num_bits_set += 1;
self.num_bits_set = self.num_bits_set.saturating_add(1);
self.bits.set(pos, true);
}
}
Expand Down Expand Up @@ -162,13 +164,13 @@ impl<T: BloomHashIndex> From<Bloom<T>> for AtomicBloom<T> {

impl<T: BloomHashIndex> AtomicBloom<T> {
fn pos(&self, key: &T, hash_index: u64) -> (usize, u64) {
let pos = key.hash_at_index(hash_index) % self.num_bits;
let pos = key.hash_at_index(hash_index).wrapping_rem(self.num_bits);
// Divide by 64 to figure out which of the
// AtomicU64 bit chunks we need to modify.
let index = pos >> 6;
let index = pos.wrapping_shr(6);
// (pos & 63) is equivalent to mod 64 so that we can find
// the index of the bit within the AtomicU64 to modify.
let mask = 1u64 << (pos & 63);
let mask = 1u64.wrapping_shl(u32::try_from(pos & 63).unwrap());
(index as usize, mask)
}

Expand Down
5 changes: 5 additions & 0 deletions bloom/src/lib.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#![cfg_attr(RUSTC_WITH_SPECIALIZATION, feature(min_specialization))]
pub mod bloom;

#[macro_use]
extern crate solana_frozen_abi_macro;
1 change: 1 addition & 0 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ solana-account-decoder = { path = "../account-decoder", version = "=1.8.14" }
solana-accountsdb-plugin-manager = { path = "../accountsdb-plugin-manager", version = "=1.8.14" }
solana-banks-server = { path = "../banks-server", version = "=1.8.14" }
solana-clap-utils = { path = "../clap-utils", version = "=1.8.14" }
solana-bloom = { path = "../bloom", version = "=1.8.14" }
solana-client = { path = "../client", version = "=1.8.14" }
solana-gossip = { path = "../gossip", version = "=1.8.14" }
solana-ledger = { path = "../ledger", version = "=1.8.14" }
Expand Down

0 comments on commit cb5106a

Please sign in to comment.