Hi Vicente,
Why fix just this one method? The other methods of DynamicCallSiteDesc
do not make the
same claim for bootstrapArgs and the code does not check for the
contents being null
nor does the constructor that is invoked that clones the array. (Line 81).
The overhead of a change and CSR is high enough to either save them up
in a single issue
or related issues and handle them all at once or make a pass through the
whole class
and related classes to clean up the spec for null handling.
Frequently, it is sufficient to make a class or package level
declaration such as in java.time.package-info.java
"* Unless otherwise noted, passing a null argument to a constructor or
method in any class or interface * in this package will cause a {@link
java.lang.NullPointerException NullPointerException} to be thrown."
$.02, Roger
On 05/29/2019 10:49 AM, Vicente Romero wrote:
Please review fix for [1] at [2] and the CSR at [3]. This is a simple
fix that is just rewording an assertion at method
java.lang.constant.DynamicCallSiteDesc::withArgs. The fix is simply:
diff -r dd321e3596c0 -r 78f3b29fb255
src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java
---
a/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java
Wed May 29 13:58:05 2019 +0100
+++
b/src/java.base/share/classes/java/lang/constant/DynamicCallSiteDesc.java
Wed May 29 09:14:55 2019 -0400
@@ -156,7 +156,7 @@
* to the bootstrap, that would appear in the
* {@code BootstrapMethods} attribute
* @return the nominal descriptor
- * @throws NullPointerException if any parameter is null
+ * @throws NullPointerException if its argument or its contents
are {@code null}
*/
public DynamicCallSiteDesc withArgs(ConstantDesc... bootstrapArgs) {
return new DynamicCallSiteDesc(bootstrapMethod,
invocationName, invocationType, bootstrapArgs);
Thanks,
Vicente
[1] https://bugs.openjdk.java.net/browse/JDK-8224158
[2] http://cr.openjdk.java.net/~vromero/8224158/webrev.00/
[3] https://bugs.openjdk.java.net/browse/JDK-8224985