RFR: 8336042: Caller/callee param size mismatch in deoptimization causes crash [v3]

Richard Reingruber rrich at openjdk.org
Fri Feb 28 15:27:05 UTC 2025


On Fri, 28 Feb 2025 12:11:05 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

>> src/hotspot/share/runtime/deoptimization.cpp line 645:
>> 
>>> 643:     methodHandle method(current, deopt_sender.interpreter_frame_method());
>>> 644:     Bytecode_invoke cur(method, deopt_sender.interpreter_frame_bci());
>>> 645:     if (!cur.is_invokedynamic() && MethodHandles::has_member_arg(cur.klass(), cur.name())) {
>> 
>> I was confused with this new condition but I see is the same we have in `vframeArray::unpack_to_stack()`.
>
> +1
> I see there's also an assertion in `ConstantPool::klass_ref_index_at()`. It might be worth a little comment.

Actually I think that there should be an abstraction that hides that detail. Probably `has_member_arg` should be a method of `Bytecode_invoke`.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/23557#discussion_r1975594243


More information about the hotspot-dev mailing list