RFR(S): 8182868: [MVT] Crash during call resolution with "fatal error: bad call: invokehandle"
tobias.hartmann at oracle.com
Tue Jun 27 10:49:42 UTC 2017
please review the following patch:
We crash while resolving an invokehandle call because the code does not expect an attached method for this bytecode. I modified the code to ignore the attached method in this case because we only need it for the GC code in CompiledMethod::preserve_callee_argument_oops() and not for the resolution.
We fail with "assert(signature != __null) failed: signature is null" in CompiledMethod::preserve_callee_argument_oops() because the callee takes a value type argument but the adapter does not contain the extended signature. This is because we pass __Value as oop and adapter generation therefore does not save the extended signature. I changed set_arguments_for_java_call() to only attach the method if we really pass the value type as fields and also adjusted the code in preserve_callee_argument_oops() to handle the case where the is no attached callee method.
More information about the valhalla-dev