@@ -351,7 +351,7 @@ private static void decodeMetaBlockLength(State s) {
351
351
if (sizeBytes == 0 ) {
352
352
return ;
353
353
}
354
- for (int i = 0 ; i < sizeBytes ; i ++ ) {
354
+ for (int i = 0 ; i < sizeBytes ; ++ i ) {
355
355
BitReader .fillBitWindow (s );
356
356
final int bits = BitReader .readFewBits (s , 8 );
357
357
if (bits == 0 && i + 1 == sizeBytes && sizeBytes > 1 ) {
@@ -360,7 +360,7 @@ private static void decodeMetaBlockLength(State s) {
360
360
s .metaBlockLength |= bits << (i * 8 );
361
361
}
362
362
} else {
363
- for (int i = 0 ; i < sizeNibbles ; i ++ ) {
363
+ for (int i = 0 ; i < sizeNibbles ; ++ i ) {
364
364
BitReader .fillBitWindow (s );
365
365
final int bits = BitReader .readFewBits (s , 4 );
366
366
if (bits == 0 && i + 1 == sizeNibbles && sizeNibbles > 4 ) {
@@ -405,18 +405,19 @@ private static int readBlockLength(int[] tableGroup, int tableIdx, State s) {
405
405
406
406
private static void moveToFront (int [] v , int index ) {
407
407
final int value = v [index ];
408
- for (; index > 0 ; index -- ) {
408
+ while ( index > 0 ) {
409
409
v [index ] = v [index - 1 ];
410
+ index --;
410
411
}
411
412
v [0 ] = value ;
412
413
}
413
414
414
415
private static void inverseMoveToFrontTransform (byte [] v , int vLen ) {
415
416
final int [] mtf = new int [256 ];
416
- for (int i = 0 ; i < 256 ; i ++ ) {
417
+ for (int i = 0 ; i < 256 ; ++ i ) {
417
418
mtf [i ] = i ;
418
419
}
419
- for (int i = 0 ; i < vLen ; i ++ ) {
420
+ for (int i = 0 ; i < vLen ; ++ i ) {
420
421
final int index = v [i ] & 0xFF ;
421
422
v [i ] = (byte ) mtf [index ];
422
423
if (index != 0 ) {
@@ -470,7 +471,7 @@ private static void readHuffmanCodeLengths(
470
471
if (symbol + repeatDelta > numSymbols ) {
471
472
throw new BrotliRuntimeException ("symbol + repeatDelta > numSymbols" ); // COV_NF_LINE
472
473
}
473
- for (int i = 0 ; i < repeatDelta ; i ++ ) {
474
+ for (int i = 0 ; i < repeatDelta ; ++ i ) {
474
475
codeLengths [symbol ++] = repeatCodeLen ;
475
476
}
476
477
if (repeatCodeLen != 0 ) {
@@ -507,7 +508,7 @@ private static int readSimpleHuffmanCode(int alphabetSizeMax, int alphabetSizeLi
507
508
final int maxBits = 1 + log2floor (alphabetSizeMax - 1 );
508
509
509
510
final int numSymbols = BitReader .readFewBits (s , 2 ) + 1 ;
510
- for (int i = 0 ; i < numSymbols ; i ++ ) {
511
+ for (int i = 0 ; i < numSymbols ; ++ i ) {
511
512
BitReader .fillBitWindow (s );
512
513
final int symbol = BitReader .readFewBits (s , maxBits );
513
514
if (symbol >= alphabetSizeLimit ) {
@@ -569,7 +570,7 @@ private static int readComplexHuffmanCode(int alphabetSizeLimit, int skip,
569
570
final int [] codeLengthCodeLengths = new int [CODE_LENGTH_CODES ];
570
571
int space = 32 ;
571
572
int numCodes = 0 ;
572
- for (int i = skip ; i < CODE_LENGTH_CODES && space > 0 ; i ++ ) {
573
+ for (int i = skip ; i < CODE_LENGTH_CODES ; ++ i ) {
573
574
final int codeLenIdx = CODE_LENGTH_CODE_ORDER [i ];
574
575
BitReader .fillBitWindow (s );
575
576
final int p = BitReader .peekBits (s ) & 15 ;
@@ -580,6 +581,7 @@ private static int readComplexHuffmanCode(int alphabetSizeLimit, int skip,
580
581
if (v != 0 ) {
581
582
space -= (32 >> v );
582
583
numCodes ++;
584
+ if (space <= 0 ) break ;
583
585
}
584
586
}
585
587
if (space != 0 && numCodes != 1 ) {
@@ -630,7 +632,8 @@ private static int decodeContextMap(int contextMapSize, byte[] contextMap, State
630
632
final int [] table = new int [tableSize + 1 ];
631
633
final int tableIdx = table .length - 1 ;
632
634
readHuffmanCode (alphabetSize , alphabetSize , table , tableIdx , s );
633
- for (int i = 0 ; i < contextMapSize ; ) {
635
+ int i = 0 ;
636
+ while (i < contextMapSize ) {
634
637
BitReader .readMoreInput (s );
635
638
BitReader .fillBitWindow (s );
636
639
final int code = readSymbol (table , tableIdx , s );
@@ -829,22 +832,24 @@ private static void readMetablockHuffmanCodesAndContextMaps(State s) {
829
832
s .numDirectDistanceCodes = BitReader .readFewBits (s , 4 ) << s .distancePostfixBits ;
830
833
// TODO(eustas): Reuse?
831
834
s .contextModes = new byte [s .numLiteralBlockTypes ];
832
- for (int i = 0 ; i < s .numLiteralBlockTypes ;) {
835
+ int i = 0 ;
836
+ while (i < s .numLiteralBlockTypes ) {
833
837
/* Ensure that less than 256 bits read between readMoreInput. */
834
838
final int limit = Math .min (i + 96 , s .numLiteralBlockTypes );
835
- for (; i < limit ; ++ i ) {
839
+ while ( i < limit ) {
836
840
BitReader .fillBitWindow (s );
837
841
s .contextModes [i ] = (byte ) BitReader .readFewBits (s , 2 );
842
+ i ++;
838
843
}
839
844
BitReader .readMoreInput (s );
840
845
}
841
846
842
847
// TODO(eustas): Reuse?
843
- s . contextMap = new byte [ s .numLiteralBlockTypes << LITERAL_CONTEXT_BITS ] ;
844
- final int numLiteralTrees = decodeContextMap ( s . numLiteralBlockTypes << LITERAL_CONTEXT_BITS ,
845
- s .contextMap , s );
848
+ final int contextMapLength = s .numLiteralBlockTypes << LITERAL_CONTEXT_BITS ;
849
+ s . contextMap = new byte [ contextMapLength ];
850
+ final int numLiteralTrees = decodeContextMap ( contextMapLength , s .contextMap , s );
846
851
s .trivialLiteralContext = 1 ;
847
- for (int j = 0 ; j < s . numLiteralBlockTypes << LITERAL_CONTEXT_BITS ; j ++ ) {
852
+ for (int j = 0 ; j < contextMapLength ; ++ j ) {
848
853
if (s .contextMap [j ] != j >> LITERAL_CONTEXT_BITS ) {
849
854
s .trivialLiteralContext = 0 ;
850
855
break ;
@@ -1253,7 +1258,8 @@ static void decompress(State s) {
1253
1258
final int dstEnd = dst + copyLength ;
1254
1259
if ((srcEnd < ringBufferMask ) && (dstEnd < ringBufferMask )) {
1255
1260
if (copyLength < 12 || (srcEnd > dst && dstEnd > src )) {
1256
- for (int k = 0 ; k < copyLength ; k += 4 ) {
1261
+ final int numQuads = (copyLength + 3 ) >> 2 ;
1262
+ for (int k = 0 ; k < numQuads ; ++k ) {
1257
1263
ringBuffer [dst ++] = ringBuffer [src ++];
1258
1264
ringBuffer [dst ++] = ringBuffer [src ++];
1259
1265
ringBuffer [dst ++] = ringBuffer [src ++];
@@ -1266,7 +1272,7 @@ static void decompress(State s) {
1266
1272
s .metaBlockLength -= copyLength ;
1267
1273
s .pos += copyLength ;
1268
1274
} else {
1269
- for (; s .j < s .copyLength ; ) {
1275
+ while ( s .j < s .copyLength ) {
1270
1276
ringBuffer [s .pos ] =
1271
1277
ringBuffer [(s .pos - s .distance ) & ringBufferMask ];
1272
1278
s .metaBlockLength --;
0 commit comments