RFR(S): 8182868: [MVT] Crash during call resolution with "fatal error: bad call: invokehandle"

Tobias Hartmann tobias.hartmann at oracle.com
Tue Jun 27 10:49:42 UTC 2017


Hi,

please review the following patch:
https://bugs.openjdk.java.net/browse/JDK-8182868
http://cr.openjdk.java.net/~thartmann/valhalla/vt_prototype/webrev.24/

Problem 1:
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.

Problem 2:
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.

Thanks,
Tobias


More information about the valhalla-dev mailing list