RFR: 8364588: Export the NPE backtracking functionality to general null-checking APIs [v2]
Chen Liang
liach at openjdk.org
Tue Aug 5 14:34:51 UTC 2025
On Tue, 5 Aug 2025 10:07:38 GMT, Johan Sjölen <jsjolen at openjdk.org> wrote:
>> 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
> }
> }
I don't think I know how to use C++ enums. I tried to define this enum in bytecodeUtils.hpp and use it from jvm.cpp, and don't know how in any way I can ever express `BytecodeUtils::NullSlot slot = search_slot >= 0 ? search_slot : ???;` because `NullSlot::Search` or `BytecodeUtils::NullSlot::Search` or `BytecodeUtils::NullSlot.Search` are all erroneous. I don't think this may worth the hassle since the attempt to use C++ enum only creates more pain, unless you tell me how to use it properly.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/26600#discussion_r2254525459
More information about the security-dev
mailing list