fn readVbr(bc: *BitcodeReader, comptime T: type, bits: u7) !T bc: *BitcodeReaderT: typebits: u7415
416
417
418
419
420
421
422
423
424
425
426
427
428fn readVbr(bc: *BitcodeReader, comptime T: type, bits: u7) !T {
const chunk_bits: u6 = @intCast(bits - 1);
const chunk_msb = @as(u64, 1) << chunk_bits;
var result: u64 = 0;
var shift: u6 = 0;
while (true) {
const chunk = try bc.readFixed(u64, bits);
result |= (chunk & (chunk_msb - 1)) << shift;
if (chunk & chunk_msb == 0) break;
shift += chunk_bits;
}
return @intCast(result);
}