in glean/rts/nat.h [68:121]
inline size_t natSize(unsigned char b0) {
static constexpr unsigned char natSizes[] = {
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
1, 1, 1, 1, 1, 1, 1, 1, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
2, 2, 2, 2, 2, 2, 2, 2, //
3, 3, 3, 3, 3, 3, 3, 3, //
3, 3, 3, 3, 3, 3, 3, 3, //
3, 3, 3, 3, 3, 3, 3, 3, //
3, 3, 3, 3, 3, 3, 3, 3, //
4, 4, 4, 4, 4, 4, 4, 4, //
4, 4, 4, 4, 4, 4, 4, 4, //
5, 5, 5, 5, 5, 5, 5, 5, //
6, 6, 6, 6, 7, 7, 8, 9, //
};
// NOTE: For smaller numbers, this benchmarks as significantly faster than
// just
// return natSizes[b0]
// I'm actually not entirely sure why.
if (b0 < 0x80) {
return 1;
} else if (b0 < 0xC0) {
return 2;
} else if (b0 < 0xE0) {
return 3;
} else if (b0 < 0xF0) {
return 4;
} else if (b0 < 0xF8) {
return 5;
} else {
return natSizes[b0];
}
}