[10] RFR(XS): 8169766: c1 + Xcomp reresolving call target every invocation
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Aug 7 16:42:17 UTC 2017
Good.
Question. Both, this and 8160543, bugs talk about C1 only. Does the
problem exist with C2 too? Comments in compiledIC.cpp also talk about
C1. Should we guard 8160543 and this changes in compiledIC.cpp with
if (method_code->is_compiled_by_c1()) ?
Thanks,
Vladimir
On 8/7/17 7:16 AM, Nils Eliasson wrote:
> Hi,
>
> Please review this patch.
>
> In bug https://bugs.openjdk.java.net/browse/JDK-8160543 I changed the
> behaviour for some calls in c1 generated code to make it comply with the
> VM-spec - LinkageError must be thrown before NPE.
>
> One detail was missed in that fix: Some calls, that was static bound and
> became optimized virtual calls, now became vanilla virtual calls. The
> virtual calls use the unverified entry, but for the static_bound calls
> the reciever_klass was not set making the receiver check fail on every
> invocation.
>
> This scenario is only common with Xcomp when methods are compiled that
> have call targets that have not been run earlier. Also a c1 thing, c2
> uses uncommontraps for this case.
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8160543
>
> Webrev: http://cr.openjdk.java.net/~neliasso/8169766/webrev.01/
>
> Regards,
>
> Nils Eliasson
>
More information about the hotspot-compiler-dev
mailing list