RFR JDK-6321472: Add CRC-32C API
Staffan Friberg
staffan.friberg at oracle.com
Fri Oct 17 22:38:03 UTC 2014
Hi Ulf,
Since the default method only calls a single method it will most likely
be inlined.
After inlining the check will be
if (0 < 0 || b.length < 0 || 0 > b.length - b.length) {
throw new ArrayIndexOutOfBoundsException();
}
Which will be optimized away so only the null check will remain.
My microbenchmark shows no difference between implementing the method or
relying on the default method.
Thanks,
Staffan
On 10/17/2014 12:56 PM, Ulf Zibis wrote:
> Am 17.10.2014 um 20:58 schrieb Staffan Friberg:
>> Here is a new webrev with the updates from Alan's and Peter's
>> suggestions.
>> http://cr.openjdk.java.net/~sfriberg/JDK-6321472/webrev.01
>
> I would not remove:
> 86 public void update(byte[] b) {
> 87 adler = updateBytes(adler, b, 0, b.length);
> 88 }
>
> The interfaces default method invokes update(b, 0, b.length), which
> unnecessarily wastes performance with superfluous bound checks, but
> 86a if (b == null) {
> 86b throw new NullPointerException();
> 86c }
> should be added, to behave same as
> 71 public void update(byte[] b, int off, int len) {
> in case of null array.
>
> My 2cc.
>
> -Ulf
>
More information about the core-libs-dev
mailing list