evm_gasometer/
utils.rs

1use primitive_types::U256;
2
3pub fn log2floor(value: U256) -> u64 {
4	assert!(value != U256::zero());
5	let mut l: u64 = 256;
6	for i in 0..4 {
7		let i = 3 - i;
8		if value.0[i] == 0u64 {
9			l -= 64;
10		} else {
11			l -= value.0[i].leading_zeros() as u64;
12			if l == 0 {
13				return l;
14			} else {
15				return l - 1;
16			}
17		}
18	}
19	l
20}