X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=src%2Fio%2Fintcode.rs;h=e876772df8d320e4ffe539d2278b4d9ea3c13a53;hb=594ca5ca67fa9a7f47cac589925d8aa5106e3f7b;hp=141377dc686f09e16993c958c7e705ada9d210c0;hpb=d7fcdd86dd9f353e6f7b19bf84592698c4b020be;p=nihav.git diff --git a/src/io/intcode.rs b/src/io/intcode.rs index 141377d..e876772 100644 --- a/src/io/intcode.rs +++ b/src/io/intcode.rs @@ -71,11 +71,11 @@ fn read_rice(br: &mut BitReader, k: u8) -> BitReaderResult { } fn read_gamma(br: &mut BitReader) -> BitReaderResult { - let mut ret = 0; + let mut ret = 1; while br.read(1)? != 1 { ret = (ret << 1) | br.read(1)?; } - Ok(ret) + Ok(ret - 1) } fn read_gammap(br: &mut BitReader) -> BitReaderResult { @@ -96,6 +96,7 @@ fn uval_to_sval0pm(uval: u32) -> i32 { } impl<'a> IntCodeReader for BitReader<'a> { + #[inline(always)] fn read_code(&mut self, t: UintCodeType) -> BitReaderResult { match t { UintCodeType::UnaryOnes => read_unary(self, 0),