RFR: 8273143: Transition to _thread_in_vm when handling a polling page exception [v2]

Coleen Phillimore coleenp at openjdk.java.net
Tue Jan 11 19:03:27 UTC 2022


On Mon, 10 Jan 2022 19:05:54 GMT, Patricio Chilano Mateo <pchilanomate at openjdk.org> wrote:

>> Please review this small cleanup patch. Being in a state of _thread_in_vm when executing safepoint/handshake and handle_special_runtime_exit_condition() related methods is not only more appropriate, since we are already in the VM, but it also makes the code more simple and avoids some hurdles that we otherwise face in the processing logic: having to check multiple valid states for safepoint code, transition wrapper for state bookkeeping in handshake code, having to manually switch to _thread_blocked and back because we cannot use transition wrappers in wait_for_object_deoptimization(), and another switch statement based on thread state in check_and_handle_async_exceptions(). I already cleaned up most callers as part of other patches. The only one remaining which is being fixed with this patch is method handle_polling_page_exception().
>> 
>> Tested in mach5 tiers 1-6.
>> 
>> Thanks,
>> Patricio
>
> Patricio Chilano Mateo has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Fix copyrights to 2022

This change looks good.  Less interactions depending on states.

src/hotspot/share/interpreter/zero/bytecodeInterpreter.cpp line 115:

> 113: #define RETURN_SAFEPOINT                                    \
> 114:     if (SafepointMechanism::should_process(THREAD)) {       \
> 115:       CALL_VM(at_safepoint(THREAD), handle_exception);      \

Why wouldn't this call InterpreterRuntime::at_safepoint()?  Should it not handle single stepping?  The JVMTI code is compiled into a separate instance of the bytecodeInterpreter, but it still seems useful to call the same function.

src/hotspot/share/runtime/interfaceSupport.inline.hpp line 244:

> 242: 
> 243: typedef ThreadBlockInVMPreprocess<> ThreadBlockInVM;
> 244: 

I don't object to this change, but why did you do this?  To eliminate the default parameter?

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

Marked as reviewed by coleenp (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/7009


More information about the hotspot-runtime-dev mailing list