RFR: 8364588: Export the NPE backtracking functionality to general null-checking APIs
Johan Sjölen
jsjolen at openjdk.org
Tue Aug 5 10:23:08 UTC 2025
On Tue, 5 Aug 2025 07:55:41 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> Provide a general facility for our null check APIs like Objects::requireNonNull or future Checks::nullCheck (void), converting the existing infrastructure to start tracking from a given stack site (depth offset) and a given stack slot (offset value).
>
> src/hotspot/share/interpreter/bytecodeUtils.cpp line 1483:
>
>> 1481: // Is an explicit slot given?
>> 1482: bool explicit_search = slot >= 0;
>> 1483: if (explicit_search) {
>
> Suggestion:
>
> if (slot >= 0) {
>
> No need for the temporary local.
If we don't adopt the enum I suggested, then I do prefer the naming of the condition through a variable. It gives you a hint of what the check is looking for, and not only what the check does.
> src/hotspot/share/interpreter/bytecodeUtils.hpp line 40:
>
>> 38: // Slot can be nonnegative to indicate an explicit search for the source of null
>> 39: // If slot is negative (default), also search for the action that caused the NPE before
>> 40: // deriving the actual slot and source of null by code parsing
>
> Suggestion:
>
> // Slot can be nonnegative to indicate an explicit search for the source of null.
> // If slot is negative (default), also search for the action that caused the NPE before
> // deriving the actual slot and source of null by code parsing.
>
> Periods at the end of sentences in comments.
I'd like to see the description for `slot` pushed into an enum, and make any negative number except `-1` explicitly forbidden.
```c++
enum class NPESlot : int {
// docs here
None = -1,
// docs here
Explicit // Anything >= 0
};
bool get_NPE_message_at(outputStream* ss, Method* method, int bci, NPESlot slot) {
if (slot != NPESlot::None) {
// Explicit search
}
}
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26600#discussion_r2253888922
PR Review Comment: https://git.openjdk.org/jdk/pull/26600#discussion_r2253865251
More information about the security-dev
mailing list