Remove no-op byte & 0xFF code from BinaryWriter

https://docs.oracle.com/javase/specs/jls/se10/html/jls-5.html#jls-5.1.3

The JLS guarantees this is the same:

> A narrowing conversion of a signed integer to an integral type T simply discards all but the n lowest order bits, where n is the number of bits used to represent type T. In addition to a possible loss of information about the magnitude of the numeric value, this may cause the sign of the resulting value to differ from the sign of the input value.

In practice, Android's optimising compiler saw that this was unnecessary, and skipped generating 'and' instructions. So this isn't a performance boost, just a cleanup.

PiperOrigin-RevId: 683395327
pull/18535/head
Mark Hansen 4 months ago committed by Copybara-Service
parent 50c08eea1a
commit fe349b7398
  1. 72
      java/core/src/main/java/com/google/protobuf/BinaryWriter.java

@ -1283,22 +1283,22 @@ abstract class BinaryWriter extends ByteOutput implements Writer {
@Override
void writeFixed32(int value) {
buffer[pos--] = (byte) ((value >> 24) & 0xFF);
buffer[pos--] = (byte) ((value >> 16) & 0xFF);
buffer[pos--] = (byte) ((value >> 8) & 0xFF);
buffer[pos--] = (byte) (value & 0xFF);
buffer[pos--] = (byte) (value >> 24);
buffer[pos--] = (byte) (value >> 16);
buffer[pos--] = (byte) (value >> 8);
buffer[pos--] = (byte) value;
}
@Override
void writeFixed64(long value) {
buffer[pos--] = (byte) ((int) (value >> 56) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 48) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 40) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 32) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 24) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 16) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 8) & 0xFF);
buffer[pos--] = (byte) ((int) (value) & 0xFF);
buffer[pos--] = (byte) ((int) (value >> 56));
buffer[pos--] = (byte) ((int) (value >> 48));
buffer[pos--] = (byte) ((int) (value >> 40));
buffer[pos--] = (byte) ((int) (value >> 32));
buffer[pos--] = (byte) ((int) (value >> 24));
buffer[pos--] = (byte) ((int) (value >> 16));
buffer[pos--] = (byte) ((int) (value >> 8));
buffer[pos--] = (byte) ((int) value);
}
@Override
@ -1820,22 +1820,22 @@ abstract class BinaryWriter extends ByteOutput implements Writer {
@Override
void writeFixed32(int value) {
UnsafeUtil.putByte(buffer, pos--, (byte) ((value >> 24) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((value >> 16) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((value >> 8) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) (value & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) (value >> 24));
UnsafeUtil.putByte(buffer, pos--, (byte) (value >> 16));
UnsafeUtil.putByte(buffer, pos--, (byte) (value >> 8));
UnsafeUtil.putByte(buffer, pos--, (byte) value);
}
@Override
void writeFixed64(long value) {
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 56) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 48) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 40) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 32) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 24) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 16) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 8) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value) & 0xFF));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 56)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 48)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 40)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 32)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 24)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 16)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) (value >> 8)));
UnsafeUtil.putByte(buffer, pos--, (byte) ((int) value));
}
@Override
@ -2913,22 +2913,22 @@ abstract class BinaryWriter extends ByteOutput implements Writer {
@Override
void writeFixed32(int value) {
UnsafeUtil.putByte(pos--, (byte) ((value >> 24) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((value >> 16) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((value >> 8) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) (value & 0xFF));
UnsafeUtil.putByte(pos--, (byte) (value >> 24));
UnsafeUtil.putByte(pos--, (byte) (value >> 16));
UnsafeUtil.putByte(pos--, (byte) (value >> 8));
UnsafeUtil.putByte(pos--, (byte) value);
}
@Override
void writeFixed64(long value) {
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 56) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 48) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 40) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 32) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 24) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 16) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 8) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value) & 0xFF));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 56)));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 48)));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 40)));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 32)));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 24)));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 16)));
UnsafeUtil.putByte(pos--, (byte) ((int) (value >> 8)));
UnsafeUtil.putByte(pos--, (byte) ((int) value));
}
@Override

Loading…
Cancel
Save