Source:
public static int compress(Object outputBase, long outputAddress, int outputSize, Object inputBase, long inputAddress, int inputSize, FseCompressionTable table) { checkArgument(outputSize >= SIZE_OF_LONG, "Output buffer too small"); long start = inputAddress; long inputLimit = start + inputSize; long input = inputLimit; if (inputSize <= 2) { return 0; } BitOutputStream stream = new BitOutputStream(outputBase, outputAddress, outputSize); int state1; int state2; if ((inputSize & 1) != 0) { input--; state1 = table.begin(UNSAFE.getByte(inputBase, input)); input--; state2 = table.begin(UNSAFE.getByte(inputBase, input)); input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); stream.flush(); } else { input--; state2 = table.begin(UNSAFE.getByte(inputBase, input)); input--; state1 = table.begin(UNSAFE.getByte(inputBase, input)); } inputSize -= 2; if ((SIZE_OF_LONG * 8 > MAX_TABLE_LOG * 4 + 7) && (inputSize & 2) != 0) { input--; state2 = table.encode(stream, state2, UNSAFE.getByte(inputBase, input)); input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); stream.flush(); } while (input > start) { input--; state2 = table.encode(stream, state2, UNSAFE.getByte(inputBase, input)); if (SIZE_OF_LONG * 8 < MAX_TABLE_LOG * 2 + 7) { stream.flush(); } input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); if (SIZE_OF_LONG * 8 > MAX_TABLE_LOG * 4 + 7) { input--; state2 = table.encode(stream, state2, UNSAFE.getByte(inputBase, input)); input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); } stream.flush(); } table.finish(stream, state2); table.finish(stream, state1); return stream.close(); }

Target:
public static int compress(Object outputBase, long outputAddress, int outputSize, Object inputBase, long inputAddress, int inputSize, FseCompressionTable table) { checkArgument(outputSize >= SIZE_OF_LONG, "Output buffer too small"); final long start = inputAddress; final long inputLimit = start + inputSize; long input = inputLimit; if (inputSize <= 2) { return 0; } BitOutputStream stream = new BitOutputStream(outputBase, outputAddress, outputSize); int state1; int state2; if ((inputSize & 1) != 0) { input--; state1 = table.begin(UNSAFE.getByte(inputBase, input)); input--; state2 = table.begin(UNSAFE.getByte(inputBase, input)); input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); stream.flush(); } else { input--; state2 = table.begin(UNSAFE.getByte(inputBase, input)); input--; state1 = table.begin(UNSAFE.getByte(inputBase, input)); } inputSize -= 2; if ((SIZE_OF_LONG * 8 > MAX_TABLE_LOG * 4 + 7) && (inputSize & 2) != 0) { input--; state2 = table.encode(stream, state2, UNSAFE.getByte(inputBase, input)); input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); stream.flush(); } while (input > start) { input--; state2 = table.encode(stream, state2, UNSAFE.getByte(inputBase, input)); if (SIZE_OF_LONG * 8 < MAX_TABLE_LOG * 2 + 7) { stream.flush(); } input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); if (SIZE_OF_LONG * 8 > MAX_TABLE_LOG * 4 + 7) { input--; state2 = table.encode(stream, state2, UNSAFE.getByte(inputBase, input)); input--; state1 = table.encode(stream, state1, UNSAFE.getByte(inputBase, input)); } stream.flush(); } table.finish(stream, state2); table.finish(stream, state1); return stream.close(); }