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(); } }
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(); } } }