Esempio n. 1
0
 private static void reclaimChildren(
     @NotNull final PatriciaReclaimSourceTraverser source,
     @NotNull final PatriciaReclaimActualTraverser actual) {
   source.moveToNextReclaimable();
   while (source.isValidPos() && actual.isValidPos()) {
     final ChildReference sourceChild = source.currentChild;
     final int sourceByte = sourceChild.firstByte & 0xff;
     final int actualByte = actual.currentChild.firstByte & 0xff;
     if (sourceByte < actualByte) {
       source.moveRight();
     } else if (sourceByte > actualByte) {
       actual.moveRight();
     } else {
       source.moveDown();
       actual.moveDown();
       reclaim(source, actual);
       actual.popAndMutate();
       source.moveUp();
       source.moveRight();
       actual.moveRight();
     }
   }
 }
Esempio n. 2
0
 private static void reclaimActualChildren(
     @NotNull final PatriciaReclaimSourceTraverser source,
     @NotNull final PatriciaReclaimActualTraverser actual) {
   while (actual.isValidPos()) {
     final ChildReference actualChild = actual.currentChild;
     final long suffixAddress = actualChild.suffixAddress;
     if (source.isAddressReclaimable(suffixAddress)) {
       actual.moveDown();
       actual.currentNode = actual.currentNode.getMutableCopy(actual.mainTree);
       actual.getItr();
       actual.wasReclaim = true;
       reclaimActualChildren(source, actual);
       actual.popAndMutate();
     }
     actual.moveRight();
   }
 }