diff --git a/ConflictSet.cpp b/ConflictSet.cpp index 363bd1a..7deb0f8 100644 --- a/ConflictSet.cpp +++ b/ConflictSet.cpp @@ -1755,12 +1755,17 @@ bool checkMaxBetweenExclusive(Node *n, int begin, int end, } break; case Type_Node16: { auto *self = static_cast(n); - bool result = true; + uint32_t compared = 0; for (int i = 0; i < 16; ++i) { - result &= !((self->childMaxVersion[i] > readVersion) & - inBounds(self->index[i])); + compared |= ((self->childMaxVersion[i] > readVersion) << i); } - return result; + + uint32_t mask = 0; + for (int i = 0; i < 16; ++i) { + mask |= inBounds(self->index[i]) << i; + } + + return !(compared & mask); } break; case Type_Node48: { auto *self = static_cast(n);