if (bits >= 8 * 8) { // long size * bits in byte
IRubyObject one = RubyFixnum.one(runtime);
IRubyObject sum = RubyFixnum.zero(runtime);
while (p < end) {
modifyCheck(bytes, len);
sum = sum.callMethod(context, "+", RubyFixnum.newFixnum(runtime, bytes[p++] & 0xff));
}
if (bits != 0) {
IRubyObject mod = one.callMethod(context, "<<", RubyFixnum.newFixnum(runtime, bits));
sum = sum.callMethod(context, "&", mod.callMethod(context, "-", one));
}