Skip to content

Commit

Permalink
Cleanup in UnsafeShuffleSorterIterator.
Browse files Browse the repository at this point in the history
  • Loading branch information
JoshRosen committed May 12, 2015
1 parent 0ad34da commit 85da63f
Showing 1 changed file with 19 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -78,35 +78,36 @@ public void insertRecord(long recordPointer, int partitionId) {
sortBufferInsertPosition++;
}

public static abstract class UnsafeShuffleSorterIterator {
/**
* An iterator-like class that's used instead of Java's Iterator in order to facilitate inlining.
*/
public static final class UnsafeShuffleSorterIterator {

private final long[] sortBuffer;
private final int numRecords;
final PackedRecordPointer packedRecordPointer = new PackedRecordPointer();
private int position = 0;

public abstract boolean hasNext();
public UnsafeShuffleSorterIterator(int numRecords, long[] sortBuffer) {
this.numRecords = numRecords;
this.sortBuffer = sortBuffer;
}

public abstract void loadNext();
public boolean hasNext() {
return position < numRecords;
}

public void loadNext() {
packedRecordPointer.set(sortBuffer[position]);
position++;
}
}

/**
* Return an iterator over record pointers in sorted order.
*/
public UnsafeShuffleSorterIterator getSortedIterator() {
sorter.sort(sortBuffer, 0, sortBufferInsertPosition, SORT_COMPARATOR);
return new UnsafeShuffleSorterIterator() {

private int position = 0;

@Override
public boolean hasNext() {
return position < sortBufferInsertPosition;
}

@Override
public void loadNext() {
packedRecordPointer.set(sortBuffer[position]);
position++;
}
};
return new UnsafeShuffleSorterIterator(sortBufferInsertPosition, sortBuffer);
}
}

0 comments on commit 85da63f

Please sign in to comment.