[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


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()) ?


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