On Tue, 8 Apr 2025 11:45:49 GMT, Jorn Vernee <jver...@openjdk.org> wrote:

>> src/jdk.jdeps/share/classes/com/sun/tools/jnativescan/NativeMethodFinder.java
>>  line 91:
>> 
>>> 89:                              err.println("Error while processing 
>>> method: " +
>>> 90:                                      MethodRef.ofModel(methodModel) + 
>>> ": " + e.getMessage());
>>> 91:                          }
>> 
>> This catch block is per-method. It means that if the rest of the method 
>> contained references to restricted methods, we would not see them. The catch 
>> block should be moved to be just around the call to `isRestricted`, which 
>> can fail. Then we can record the error and keep iterating over the other 
>> instructions.
>
> Also, instead of passing `err` down to this code, I think we should define an 
> interface for `NativeMethodFinder` to log diagnostics instead. e.g. something 
> like:
> 
> 
> interface Diagnostics {
>     void error(MethodRef context, JNativeScanFatalError error);
> } 
> 
> 
> `JNativeScanTask` can then define the implementation how it wants. The 
> benefit of that is that we have more freedom to print the errors how we want. 
> For instance, I think we should first collect all the errors, and 
> de-duplicate error messages before printing them, so that if there are 10 
> references to the same system class, we only print the error message once, 
> and we can print a header like: `Errors while processing classes: ...`

> This catch block is per-method. It means that if the rest of the method 
> contained references to restricted methods, we would not see them. The catch 
> block should be moved to be just around the call to isRestricted, which can 
> fail. Then we can record the error and keep iterating over the other 
> instructions.

That makes a lot of sense. I will update it.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/24499#discussion_r2033030209

Reply via email to