MutableUnsignedLongSet.add() has half of the check done in contains()
as an invariant. Inline the second part there, improving performance a
bit.
Thisleaves only UnsignedLongSet.contains() as the sole caller of
Entry.contains(). Inline it there, reducing the footprint a bit.
JIRA: CONTROLLER-2014
Change-Id: Ie38283a1fc46aff8fbc717a23aa9a068805636db
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit
a8ebf0b87a2fd613a5b08bd9e295006415f7de27)
final var headIt = ranges.headSet(range, true).descendingIterator();
if (headIt.hasNext()) {
final var head = headIt.next();
final var headIt = ranges.headSet(range, true).descendingIterator();
if (headIt.hasNext()) {
final var head = headIt.next();
- if (head.contains(longBits)) {
+ if (Long.compareUnsigned(head.upperBits, longBits) >= 0) {
+ // Already contained, this is a no-op
return UnsignedLong.fromLongBits(upperBits);
}
return UnsignedLong.fromLongBits(upperBits);
}
- boolean contains(final long longBits) {
- return Long.compareUnsigned(lowerBits, longBits) <= 0 && Long.compareUnsigned(upperBits, longBits) >= 0;
- }
-
Entry copy() {
return new Entry(lowerBits, upperBits);
}
Entry copy() {
return new Entry(lowerBits, upperBits);
}
public final boolean contains(final long longBits) {
final var head = ranges.floor(Entry.of(longBits));
public final boolean contains(final long longBits) {
final var head = ranges.floor(Entry.of(longBits));
- return head != null && head.contains(longBits);
+ return head != null
+ && Long.compareUnsigned(head.lowerBits, longBits) <= 0
+ && Long.compareUnsigned(head.upperBits, longBits) >= 0;
}
public final boolean isEmpty() {
}
public final boolean isEmpty() {