Skip to content

Commit c1362a7

Browse files
eustascopybara-github
authored andcommitted
further preparations for Kotlin transpilation
PiperOrigin-RevId: 603638823
1 parent 200f379 commit c1362a7

11 files changed

+391
-335
lines changed

java/org/brotli/dec/BitReader.java

+27-25
Original file line numberDiff line numberDiff line change
@@ -146,9 +146,9 @@ static int peekBits(State s) {
146146
* otherwise BitReader will become broken.
147147
*/
148148
static int readFewBits(State s, int n) {
149-
final int val = peekBits(s) & ((1 << n) - 1);
149+
final int v = peekBits(s) & ((1 << n) - 1);
150150
s.bitOffset += n;
151-
return val;
151+
return v;
152152
}
153153

154154
static int readBits(State s, int n) {
@@ -212,55 +212,57 @@ static int halfAvailable(State s) {
212212
}
213213

214214
static void copyRawBytes(State s, byte[] data, int offset, int length) {
215+
int pos = offset;
216+
int len = length;
215217
if ((s.bitOffset & 7) != 0) {
216218
throw new BrotliRuntimeException("Unaligned copyBytes");
217219
}
218220

219221
// Drain accumulator.
220-
while ((s.bitOffset != BITNESS) && (length != 0)) {
221-
data[offset++] = (byte) peekBits(s);
222+
while ((s.bitOffset != BITNESS) && (len != 0)) {
223+
data[pos++] = (byte) peekBits(s);
222224
s.bitOffset += 8;
223-
length--;
225+
len--;
224226
}
225-
if (length == 0) {
227+
if (len == 0) {
226228
return;
227229
}
228230

229231
// Get data from shadow buffer with "sizeof(int)" granularity.
230-
final int copyNibbles = Math.min(halfAvailable(s), length >> LOG_HALF_SIZE);
232+
final int copyNibbles = Math.min(halfAvailable(s), len >> LOG_HALF_SIZE);
231233
if (copyNibbles > 0) {
232234
final int readOffset = s.halfOffset << LOG_HALF_SIZE;
233235
final int delta = copyNibbles << LOG_HALF_SIZE;
234-
System.arraycopy(s.byteBuffer, readOffset, data, offset, delta);
235-
offset += delta;
236-
length -= delta;
236+
System.arraycopy(s.byteBuffer, readOffset, data, pos, delta);
237+
pos += delta;
238+
len -= delta;
237239
s.halfOffset += copyNibbles;
238240
}
239-
if (length == 0) {
241+
if (len == 0) {
240242
return;
241243
}
242244

243245
// Read tail bytes.
244246
if (halfAvailable(s) > 0) {
245247
// length = 1..3
246248
fillBitWindow(s);
247-
while (length != 0) {
248-
data[offset++] = (byte) peekBits(s);
249+
while (len != 0) {
250+
data[pos++] = (byte) peekBits(s);
249251
s.bitOffset += 8;
250-
length--;
252+
len--;
251253
}
252254
checkHealth(s, 0);
253255
return;
254256
}
255257

256258
// Now it is possible to copy bytes directly.
257-
while (length > 0) {
258-
final int len = Utils.readInput(s, data, offset, length);
259-
if (len == -1) {
259+
while (len > 0) {
260+
final int chunkLen = Utils.readInput(s, data, pos, len);
261+
if (chunkLen == -1) {
260262
throw new BrotliRuntimeException("Unexpected end of input");
261263
}
262-
offset += len;
263-
length -= len;
264+
pos += chunkLen;
265+
len -= chunkLen;
264266
}
265267
}
266268

@@ -273,16 +275,16 @@ static void bytesToNibbles(State s, int byteLen) {
273275
if (BITNESS == 64) {
274276
final int[] intBuffer = s.intBuffer;
275277
for (int i = 0; i < halfLen; ++i) {
276-
intBuffer[i] = ((byteBuffer[i * 4] & 0xFF))
277-
| ((byteBuffer[(i * 4) + 1] & 0xFF) << 8)
278-
| ((byteBuffer[(i * 4) + 2] & 0xFF) << 16)
279-
| ((byteBuffer[(i * 4) + 3] & 0xFF) << 24);
278+
intBuffer[i] = ((int) byteBuffer[i * 4] & 0xFF)
279+
| (((int) byteBuffer[(i * 4) + 1] & 0xFF) << 8)
280+
| (((int) byteBuffer[(i * 4) + 2] & 0xFF) << 16)
281+
| (((int) byteBuffer[(i * 4) + 3] & 0xFF) << 24);
280282
}
281283
} else {
282284
final short[] shortBuffer = s.shortBuffer;
283285
for (int i = 0; i < halfLen; ++i) {
284-
shortBuffer[i] = (short) ((byteBuffer[i * 2] & 0xFF)
285-
| ((byteBuffer[(i * 2) + 1] & 0xFF) << 8));
286+
shortBuffer[i] = (short) (((int) byteBuffer[i * 2] & 0xFF)
287+
| (((int) byteBuffer[(i * 2) + 1] & 0xFF) << 8));
286288
}
287289
}
288290
}

java/org/brotli/dec/Context.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ private static void unpackLookupTable(int[] lookup, String map, String rle) {
2626
}
2727
// UTF8
2828
for (int i = 0; i < 128; ++i) {
29-
lookup[1024 + i] = 4 * (map.charAt(i) - 32);
29+
lookup[1024 + i] = 4 * ((int) map.charAt(i) - 32);
3030
}
3131
for (int i = 0; i < 64; ++i) {
3232
lookup[1152 + i] = i & 1;
@@ -35,7 +35,7 @@ private static void unpackLookupTable(int[] lookup, String map, String rle) {
3535
int offset = 1280;
3636
for (int k = 0; k < 19; ++k) {
3737
final int value = k & 3;
38-
final int rep = rle.charAt(k) - 32;
38+
final int rep = (int) rle.charAt(k) - 32;
3939
for (int i = 0; i < rep; ++i) {
4040
lookup[offset++] = value;
4141
}

java/org/brotli/dec/Decode.java

+47-42
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,16 @@ final class Decode {
137137
private static int log2floor(int i) {
138138
int result = -1;
139139
int step = 16;
140+
int v = i;
140141
while (step > 0) {
141-
if ((i >>> step) != 0) {
142+
int next = v >>> step;
143+
if (next != 0) {
142144
result += step;
143-
i = i >>> step;
145+
v = next;
144146
}
145147
step = step >> 1;
146148
}
147-
return result + i;
149+
return result + v;
148150
}
149151

150152
private static int calculateDistanceAlphabetSize(int npostfix, int ndirect, int maxndistbits) {
@@ -164,14 +166,12 @@ private static int calculateDistanceAlphabetLimit(int maxDistance, int npostfix,
164166
}
165167

166168
private static void unpackCommandLookupTable(short[] cmdLookup) {
167-
final short[] insertLengthOffsets = new short[24];
168-
final short[] copyLengthOffsets = new short[24];
169+
final int[] insertLengthOffsets = new int[24];
170+
final int[] copyLengthOffsets = new int[24];
169171
copyLengthOffsets[0] = 2;
170172
for (int i = 0; i < 23; ++i) {
171-
insertLengthOffsets[i + 1] =
172-
(short) (insertLengthOffsets[i] + (1 << INSERT_LENGTH_N_BITS[i]));
173-
copyLengthOffsets[i + 1] =
174-
(short) (copyLengthOffsets[i] + (1 << COPY_LENGTH_N_BITS[i]));
173+
insertLengthOffsets[i + 1] = insertLengthOffsets[i] + (1 << (int) INSERT_LENGTH_N_BITS[i]);
174+
copyLengthOffsets[i + 1] = copyLengthOffsets[i] + (1 << (int) COPY_LENGTH_N_BITS[i]);
175175
}
176176

177177
for (int cmdCode = 0; cmdCode < NUM_COMMAND_CODES; ++cmdCode) {
@@ -184,14 +184,15 @@ private static void unpackCommandLookupTable(short[] cmdLookup) {
184184
}
185185
final int insertCode = (((0x29850 >>> (rangeIdx * 2)) & 0x3) << 3) | ((cmdCode >>> 3) & 7);
186186
final int copyCode = (((0x26244 >>> (rangeIdx * 2)) & 0x3) << 3) | (cmdCode & 7);
187-
final short copyLengthOffset = copyLengthOffsets[copyCode];
187+
final int copyLengthOffset = copyLengthOffsets[copyCode];
188188
final int distanceContext =
189-
distanceContextOffset + (copyLengthOffset > 4 ? 3 : copyLengthOffset - 2);
189+
distanceContextOffset + (copyLengthOffset > 4 ? 3 : (copyLengthOffset - 2));
190190
final int index = cmdCode * 4;
191191
cmdLookup[index + 0] =
192-
(short) (INSERT_LENGTH_N_BITS[insertCode] | (COPY_LENGTH_N_BITS[copyCode] << 8));
193-
cmdLookup[index + 1] = insertLengthOffsets[insertCode];
194-
cmdLookup[index + 2] = copyLengthOffsets[copyCode];
192+
(short)
193+
((int) INSERT_LENGTH_N_BITS[insertCode] | ((int) COPY_LENGTH_N_BITS[copyCode] << 8));
194+
cmdLookup[index + 1] = (short) insertLengthOffsets[insertCode];
195+
cmdLookup[index + 2] = (short) copyLengthOffsets[copyCode];
195196
cmdLookup[index + 3] = (short) distanceContext;
196197
}
197198
}
@@ -357,7 +358,7 @@ private static void decodeMetaBlockLength(State s) {
357358
if (bits == 0 && i + 1 == sizeBytes && sizeBytes > 1) {
358359
throw new BrotliRuntimeException("Exuberant nibble");
359360
}
360-
s.metaBlockLength |= bits << (i * 8);
361+
s.metaBlockLength += bits << (i * 8);
361362
}
362363
} else {
363364
for (int i = 0; i < sizeNibbles; ++i) {
@@ -366,7 +367,7 @@ private static void decodeMetaBlockLength(State s) {
366367
if (bits == 0 && i + 1 == sizeNibbles && sizeNibbles > 4) {
367368
throw new BrotliRuntimeException("Exuberant nibble");
368369
}
369-
s.metaBlockLength |= bits << (i * 4);
370+
s.metaBlockLength += bits << (i * 4);
370371
}
371372
}
372373
s.metaBlockLength++;
@@ -380,8 +381,8 @@ private static void decodeMetaBlockLength(State s) {
380381
*/
381382
private static int readSymbol(int[] tableGroup, int tableIdx, State s) {
382383
int offset = tableGroup[tableIdx];
383-
final int val = BitReader.peekBits(s);
384-
offset += val & HUFFMAN_TABLE_MASK;
384+
final int v = BitReader.peekBits(s);
385+
offset += v & HUFFMAN_TABLE_MASK;
385386
final int bits = tableGroup[offset] >> 16;
386387
final int sym = tableGroup[offset] & 0xFFFF;
387388
if (bits <= HUFFMAN_TABLE_BITS) {
@@ -390,7 +391,7 @@ private static int readSymbol(int[] tableGroup, int tableIdx, State s) {
390391
}
391392
offset += sym;
392393
final int mask = (1 << bits) - 1;
393-
offset += (val & mask) >>> HUFFMAN_TABLE_BITS;
394+
offset += (v & mask) >>> HUFFMAN_TABLE_BITS;
394395
s.bitOffset += ((tableGroup[offset] >> 16) + HUFFMAN_TABLE_BITS);
395396
return tableGroup[offset] & 0xFFFF;
396397
}
@@ -404,10 +405,11 @@ private static int readBlockLength(int[] tableGroup, int tableIdx, State s) {
404405
}
405406

406407
private static void moveToFront(int[] v, int index) {
407-
final int value = v[index];
408-
while (index > 0) {
409-
v[index] = v[index - 1];
410-
index--;
408+
int i = index;
409+
final int value = v[i];
410+
while (i > 0) {
411+
v[i] = v[i - 1];
412+
i--;
411413
}
412414
v[0] = value;
413415
}
@@ -418,7 +420,7 @@ private static void inverseMoveToFrontTransform(byte[] v, int vLen) {
418420
mtf[i] = i;
419421
}
420422
for (int i = 0; i < vLen; ++i) {
421-
final int index = v[i] & 0xFF;
423+
final int index = (int) v[i] & 0xFF;
422424
v[i] = (byte) mtf[index];
423425
if (index != 0) {
424426
moveToFront(mtf, index);
@@ -463,7 +465,7 @@ private static void readHuffmanCodeLengths(
463465
final int oldRepeat = repeat;
464466
if (repeat > 0) {
465467
repeat -= 2;
466-
repeat <<= extraBits;
468+
repeat = repeat << extraBits;
467469
}
468470
BitReader.fillBitWindow(s);
469471
repeat += BitReader.readFewBits(s, extraBits) + 3;
@@ -689,8 +691,8 @@ private static void decodeLiteralBlockSwitch(State s) {
689691
s.literalBlockLength = decodeBlockTypeAndLength(s, 0, s.numLiteralBlockTypes);
690692
final int literalBlockType = s.rings[5];
691693
s.contextMapSlice = literalBlockType << LITERAL_CONTEXT_BITS;
692-
s.literalTreeIdx = s.contextMap[s.contextMapSlice] & 0xFF;
693-
final int contextMode = s.contextModes[literalBlockType];
694+
s.literalTreeIdx = (int) s.contextMap[s.contextMapSlice] & 0xFF;
695+
final int contextMode = (int) s.contextModes[literalBlockType];
694696
s.contextLookupOffset1 = contextMode << 9;
695697
s.contextLookupOffset2 = s.contextLookupOffset1 + 256;
696698
}
@@ -711,7 +713,7 @@ private static void maybeReallocateRingBuffer(State s) {
711713
/* TODO(eustas): Handle 2GB+ cases more gracefully. */
712714
final int minimalNewSize = s.expectedTotalSize;
713715
while ((newSize >> 1) > minimalNewSize) {
714-
newSize >>= 1;
716+
newSize = newSize >> 1;
715717
}
716718
if ((s.inputEnd == 0) && newSize < 16384 && s.maxRingBufferSize >= 16384) {
717719
newSize = 16384;
@@ -722,8 +724,9 @@ private static void maybeReallocateRingBuffer(State s) {
722724
}
723725
final int ringBufferSizeWithSlack = newSize + MAX_TRANSFORMED_WORD_LENGTH;
724726
final byte[] newBuffer = new byte[ringBufferSizeWithSlack];
725-
if (s.ringBuffer.length != 0) {
726-
System.arraycopy(s.ringBuffer, 0, newBuffer, 0, s.ringBufferSize);
727+
final byte[] oldBuffer = s.ringBuffer;
728+
if (oldBuffer.length != 0) {
729+
System.arraycopy(oldBuffer, 0, newBuffer, 0, s.ringBufferSize);
727730
}
728731
s.ringBuffer = newBuffer;
729732
s.ringBufferSize = newSize;
@@ -850,7 +853,7 @@ private static void readMetablockHuffmanCodesAndContextMaps(State s) {
850853
final int numLiteralTrees = decodeContextMap(contextMapLength, s.contextMap, s);
851854
s.trivialLiteralContext = 1;
852855
for (int j = 0; j < contextMapLength; ++j) {
853-
if (s.contextMap[j] != j >> LITERAL_CONTEXT_BITS) {
856+
if ((int) s.contextMap[j] != j >> LITERAL_CONTEXT_BITS) {
854857
s.trivialLiteralContext = 0;
855858
break;
856859
}
@@ -1021,7 +1024,7 @@ private static void initializeCompoundDictionaryCopy(State s, int address, int l
10211024
if (s.cdBlockBits == -1) {
10221025
initializeCompoundDictionary(s);
10231026
}
1024-
int index = s.cdBlockMap[address >>> s.cdBlockBits];
1027+
int index = (int) s.cdBlockMap[address >>> s.cdBlockBits];
10251028
while (address >= s.cdChunkOffsets[index + 1]) {
10261029
index++;
10271030
}
@@ -1123,10 +1126,10 @@ static void decompress(State s) {
11231126
s.commandBlockLength--;
11241127
BitReader.fillBitWindow(s);
11251128
final int cmdCode = readSymbol(s.commandTreeGroup, s.commandTreeIdx, s) << 2;
1126-
final short insertAndCopyExtraBits = CMD_LOOKUP[cmdCode];
1127-
final int insertLengthOffset = CMD_LOOKUP[cmdCode + 1];
1128-
final int copyLengthOffset = CMD_LOOKUP[cmdCode + 2];
1129-
s.distanceCode = CMD_LOOKUP[cmdCode + 3];
1129+
final int insertAndCopyExtraBits = (int) CMD_LOOKUP[cmdCode];
1130+
final int insertLengthOffset = (int) CMD_LOOKUP[cmdCode + 1];
1131+
final int copyLengthOffset = (int) CMD_LOOKUP[cmdCode + 2];
1132+
s.distanceCode = (int) CMD_LOOKUP[cmdCode + 3];
11301133
BitReader.fillBitWindow(s);
11311134
{
11321135
final int insertLengthExtraBits = insertAndCopyExtraBits & 0xFF;
@@ -1161,16 +1164,17 @@ static void decompress(State s) {
11611164
}
11621165
}
11631166
} else {
1164-
int prevByte1 = ringBuffer[(s.pos - 1) & ringBufferMask] & 0xFF;
1165-
int prevByte2 = ringBuffer[(s.pos - 2) & ringBufferMask] & 0xFF;
1167+
int prevByte1 = (int) ringBuffer[(s.pos - 1) & ringBufferMask] & 0xFF;
1168+
int prevByte2 = (int) ringBuffer[(s.pos - 2) & ringBufferMask] & 0xFF;
11661169
while (s.j < s.insertLength) {
11671170
BitReader.readMoreInput(s);
11681171
if (s.literalBlockLength == 0) {
11691172
decodeLiteralBlockSwitch(s);
11701173
}
11711174
final int literalContext = Context.LOOKUP[s.contextLookupOffset1 + prevByte1]
11721175
| Context.LOOKUP[s.contextLookupOffset2 + prevByte2];
1173-
final int literalTreeIdx = s.contextMap[s.contextMapSlice + literalContext] & 0xFF;
1176+
final int literalTreeIdx =
1177+
(int) s.contextMap[s.contextMapSlice + literalContext] & 0xFF;
11741178
s.literalBlockLength--;
11751179
prevByte2 = prevByte1;
11761180
BitReader.fillBitWindow(s);
@@ -1204,7 +1208,8 @@ static void decompress(State s) {
12041208
}
12051209
s.distanceBlockLength--;
12061210
BitReader.fillBitWindow(s);
1207-
final int distTreeIdx = s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF;
1211+
final int distTreeIdx =
1212+
(int) s.distContextMap[s.distContextMapSlice + distanceCode] & 0xFF;
12081213
distanceCode = readSymbol(s.distanceTreeGroup, distTreeIdx, s);
12091214
if (distanceCode < NUM_DISTANCE_SHORT_CODES) {
12101215
final int index =
@@ -1214,7 +1219,7 @@ static void decompress(State s) {
12141219
throw new BrotliRuntimeException("Negative distance"); // COV_NF_LINE
12151220
}
12161221
} else {
1217-
final int extraBits = s.distExtraBits[distanceCode];
1222+
final int extraBits = (int) s.distExtraBits[distanceCode];
12181223
int bits;
12191224
if (s.bitOffset + extraBits <= BitReader.BITNESS) {
12201225
bits = BitReader.readFewBits(s, extraBits);
@@ -1337,7 +1342,7 @@ static void decompress(State s) {
13371342
if (s.pos > s.ringBufferSize) {
13381343
Utils.copyBytesWithin(ringBuffer, 0, s.ringBufferSize, s.pos);
13391344
}
1340-
s.pos &= ringBufferMask;
1345+
s.pos = s.pos & ringBufferMask;
13411346
s.ringBufferBytesWritten = 0;
13421347
}
13431348
s.runningState = s.nextRunningState;

java/org/brotli/dec/DictionaryData.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,20 @@ private static void unpackDictionaryData(ByteBuffer dictionary, String data0, St
4545
int offset = 0;
4646
final int n = skipFlip.length() >> 1;
4747
for (int i = 0; i < n; ++i) {
48-
final int skip = skipFlip.charAt(2 * i) - 36;
49-
final int flip = skipFlip.charAt(2 * i + 1) - 36;
48+
final int skip = (int) skipFlip.charAt(2 * i) - 36;
49+
final int flip = (int) skipFlip.charAt(2 * i + 1) - 36;
5050
for (int j = 0; j < skip; ++j) {
51-
dict[offset] ^= 3;
51+
dict[offset] = (byte) ((int) dict[offset] ^ 3);
5252
offset++;
5353
}
5454
for (int j = 0; j < flip; ++j) {
55-
dict[offset] ^= 236;
55+
dict[offset] = (byte) ((int) dict[offset] ^ 236);
5656
offset++;
5757
}
5858
}
5959

6060
for (int i = 0; i < sizeBitsData.length(); ++i) {
61-
sizeBits[i] = sizeBitsData.charAt(i) - 65;
61+
sizeBits[i] = (int) sizeBitsData.charAt(i) - 65;
6262
}
6363

6464
dictionary.put(dict);

0 commit comments

Comments
 (0)