On Thu, 21 Aug 2025 18:27:29 GMT, Patricio Chilano Mateo
<[email protected]> wrote:
>> To fix the actual, simple, problem of being in the wrong state, it seems to
>> me that this earlier suggestion is far easier to understand:
>>
>> {
>> ThreadInVMfromJava __tiv(thread);
>> state = get_jvmti_thread_state(thread);
>> }
>>
>> With the proposed deferral of the `get_jvmti_thread_state` and the deferred
>> check for `is_interp_only_mode` I am left wondering if it is okay to call:
>>
>> current_frame.interpreter_frame_result(&oop_result, &value);
>> current_frame.interpreter_frame_expression_stack_size() > 0
>>
>> if we may not be in interp_only mode?
>>
>> If the concern is the overhead of `ThreadInVMfromJava` can't we cheat here
>> and use a direct state change as we are going from one safepoint-unsafe
>> state to another?
>
>> To fix the actual, simple, problem of being in the wrong state, it seems to
>> me that this earlier suggestion is far easier to understand:
>>
>> ```
>> {
>> ThreadInVMfromJava __tiv(thread);
>> state = get_jvmti_thread_state(thread);
>> }
>> ```
>>
>> With the proposed deferral of the `get_jvmti_thread_state` and the deferred
>> check for `is_interp_only_mode` I am left wondering if it is okay to call:
>>
>> ```
>> current_frame.interpreter_frame_result(&oop_result, &value);
>> current_frame.interpreter_frame_expression_stack_size() > 0
>> ```
>>
>> if we may not be in interp_only mode?
>>
> `InterpreterRuntime::post_method_exit` is only called from the interpreter,
> so the top frame should always be interpreted.
>
>
>> If the concern is the overhead of `ThreadInVMfromJava` can't we cheat here
>> and use a direct state change as we are going from one safepoint-unsafe
>> state to another?
>>
> I think that once we transition to vm there is no point in going back to Java
> to then possibly transition back to vm. The only reason to delay the
> transition was to have the `result` Handle be created outside of the
> `JRT_BLOCK` scope, so that we are able to restore the return oop (if any)
> after the last safepoint. That means we could move `JRT_BLOCK` even further
> up, right after declaring the locals.
Agree with @pchilano, the only oop handling should be done before JRT_BLOCK.
And the part dealing with with `exception_exit` will be implemented separately
in the:
https://github.com/openjdk/jdk/pull/26886
-------------
PR Comment: https://git.openjdk.org/jdk/pull/26713#issuecomment-3212200933