private void moveWindow ( ) { // Align the move to a multiple of 16 bytes. LZMA2 needs this // because it uses the lowest bits from readPos to get the // alignment of the uncompressed data. int moveOffset = ( readPos + 1 - keepSizeBefore ) & ~ 15 ; int moveSize = writePos - moveOffset ; System . arraycopy ( buf , moveOffset , buf , 0 , moveSize ) ; readPos -= moveOffset ; readLimit -= moveOffset ; writePos -= moveOffset ; }
Moves data from the end of the buffer to the beginning discarding old data and making space for new input .