22//!
33//! It is used to optimize access to precompile addresses.
44
5- use bitvec:: { bitvec, order :: Lsb0 , vec:: BitVec } ;
5+ use bitvec:: { bitvec, vec:: BitVec } ;
66use primitives:: { short_address, Address , HashSet , SHORT_ADDRESS_CAP } ;
77
88/// Stores addresses that are warm loaded. Contains precompiles and coinbase address.
@@ -32,7 +32,7 @@ impl WarmAddresses {
3232 pub fn new ( ) -> Self {
3333 Self {
3434 precompile_set : HashSet :: default ( ) ,
35- precompile_short_addresses : BitVec :: new ( ) ,
35+ precompile_short_addresses : bitvec ! [ 0 ; SHORT_ADDRESS_CAP ] ,
3636 all_short_addresses : true ,
3737 coinbase : None ,
3838 }
@@ -53,8 +53,7 @@ impl WarmAddresses {
5353 /// Set the precompile addresses and short addresses.
5454 #[ inline]
5555 pub fn set_precompile_addresses ( & mut self , addresses : HashSet < Address > ) {
56- // short address is always smaller than SHORT_ADDRESS_CAP
57- self . precompile_short_addresses = bitvec ! [ usize , Lsb0 ; 0 ; SHORT_ADDRESS_CAP ] ;
56+ self . precompile_short_addresses . fill ( false ) ;
5857
5958 let mut all_short_addresses = true ;
6059 for address in addresses. iter ( ) {
@@ -124,7 +123,11 @@ mod tests {
124123 fn test_initialization ( ) {
125124 let warm_addresses = WarmAddresses :: new ( ) ;
126125 assert ! ( warm_addresses. precompile_set. is_empty( ) ) ;
127- assert ! ( warm_addresses. precompile_short_addresses. is_empty( ) ) ;
126+ assert_eq ! (
127+ warm_addresses. precompile_short_addresses. len( ) ,
128+ SHORT_ADDRESS_CAP
129+ ) ;
130+ assert ! ( !warm_addresses. precompile_short_addresses. any( ) ) ;
128131 assert ! ( warm_addresses. coinbase. is_none( ) ) ;
129132
130133 // Test Default trait
0 commit comments