diff --git a/avm-transpiler/src/bit_traits.rs b/avm-transpiler/src/bit_traits.rs index 9e71dd1e8da..7ee09be5b3a 100644 --- a/avm-transpiler/src/bit_traits.rs +++ b/avm-transpiler/src/bit_traits.rs @@ -1,13 +1,11 @@ use acvm::{acir::brillig::MemoryAddress, AcirField, FieldElement}; fn get_msb(n: u128) -> usize { - let mut n = n; - let mut msb = 0; - while n > 0 { - n >>= 1; - msb += 1; + if n == 0 { + 0 + } else { + 128 - n.leading_zeros() as usize } - msb } pub trait BitsQueryable { @@ -66,18 +64,12 @@ impl BitsQueryable for MemoryAddress { } pub fn bits_needed_for(val: &T) -> usize { - let num_bits = val.num_bits(); - if num_bits <= 8 { - 8 - } else if num_bits <= 16 { - 16 - } else if num_bits <= 32 { - 32 - } else if num_bits <= 64 { - 64 - } else if num_bits <= 128 { - 128 - } else { - 254 + match val.num_bits() { + 0..=8 => 8, + 9..=16 => 16, + 17..=32 => 32, + 33..=64 => 64, + 65..=128 => 128, + _ => 254, } } diff --git a/bootstrap.sh b/bootstrap.sh index ca72bf35ca9..195c3d5a6f3 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -104,7 +104,7 @@ if [ "$CMD" = "clean" ]; then echo "WARNING: This will erase *all* untracked files, including hooks and submodules." echo -n "Continue? [y/n] " read user_input - if [ "$user_input" != "y" ] && [ "$user_input" != "yes" ] && [ "$user_input" != "Y" ] && [ "$user_input" != "YES" ]; then + if [[ ! "$user_input" =~ ^[yY](es)?$ ]]; then echo "Exiting without cleaning" exit 1 fi