Sure, your suggestion sounds good.
I have updated the webrev accordingly at
http://cr.openjdk.java.net/~valeriep/8179098/webrev.01/
Will integrate after mach5 run is done.
Thanks!
Valerie
On 7/11/2018 11:41 AM, Claes Redestad wrote:
FWIW, but as we're in java.base there's a way to use the
jdk.internal.util.Preconditions API backing Objects.checkFrom* methods
directly, which lets you control the type of exception thrown:
private static final BiFunction<String, List<Integer>,
ArrayIndexOutOfBoundsException> AIOOBE_SUPPLIER
=
Preconditions.outOfBoundsExceptionFormatter(ArrayIndexOutOfBoundsException::new);
public static void nullAndBoundsCheck(byte[] array, int offset, int
len) {
Preconditions.checkFromIndexSize(offset, len, array.length,
AIOOBE_SUPPLIER); // implicit null check of array
}
Prior art is really only the
java.lang.invoke.VarHandle.AIOOBE_SUPPLIER (which is used from
generated code, e.g. j.l.i.VarHandleInts); maybe it could be
refactored to some internal package for reuse.
(I'd remove the explicit null check and lower-case the N in
NullAndBoundsCheck, regardless)
Thanks!
/Claes
On 2018-07-10 02:42, Valerie Peng wrote:
Hi Tony,
The purpose of the if-block is to ensure that
ArrayIndexOutOfBoundsException is thrown instead of
IndexOutOfBoundsException. Objects.checkFromIndexSize(...) API is
specified to throw IndexOutOfBoundsException which is more general
and can be thrown when an index of some sort (such as to an array, to
a string, or to a vector) is out of range.
ArrayIndexOutOfBoundsException is a subclass of
IndexOutOfBoundsException and is for array index out of bounds.
Thanks,
Valerie
On 7/9/2018 3:14 PM, Anthony Scarpino wrote:
On 07/03/2018 02:03 PM, Valerie Peng wrote:
Hi Tony,
Would you have time to review this? Instead of doing the bounds
check per block, the changes move the bounds check up one level.
Bug: https://bugs.openjdk.java.net/browse/JDK-8179098
Webrev: http://cr.openjdk.java.net/~valeriep/8179098/webrev.00/
Thanks,
Valerie
ArrayUtil.java: Line 48
- It seems like your not throwing any
ArrayIndexOutOfBoundsExceptions, is that intentional? The method in
the try-catch seems to only throw IndexOutOfBoundsException, whole
if() seems confusing to me.
thanks
Tony