8219582: PPC: Crash after C1 checkcast patched and GC
martin.doerr at sap.com
Mon Feb 25 14:20:19 UTC 2019
your proposal fixes the issue, but introduces another one:
We must not use the patching stub before the null check (resolving is not allowed at this place).
JCK tests exist which verify this:
So I suggest to fix it this way:
It is closer to the x86 implementation.
Can you verify this proposal, please?
Thanks again for your helpful analysis of the problem.
From: hotspot-compiler-dev <hotspot-compiler-dev-bounces at openjdk.java.net> On Behalf Of Doerr, Martin
Sent: Freitag, 22. Februar 2019 17:12
To: 'hotspot-compiler-dev at openjdk.java.net' <hotspot-compiler-dev at openjdk.java.net>; Anton Kozlov <akozlov at azul.com>
Subject: [CAUTION] RFR: 8219582: PPC: Crash after C1 checkcast patched and GC
reposting on hotspot-compiler-dev.
Thanks for analyzing the issue and for providing a fix. I'll take a closer look next week.
From: hotspot-runtime-dev <hotspot-runtime-dev-bounces at openjdk.java.net> On Behalf Of Anton Kozlov
Sent: Freitag, 22. Februar 2019 16:05
To: hotspot-runtime-dev at openjdk.java.net
Subject: RFR: 8219582: PPC: Crash after C1 checkcast patched and GC
PPC C1 checkcast implementation overcomes possible object-to-check and temp registers conflict by using destination register as temp to store the object. It usually works, but after object moved to dst and before checkcast completed, safepoint may occur because of implicit runtime call from klass2reg_with_patching. During the call, oop in dst register is not visible to GC, so it will not be updated after GC moved objects.
Please review the fix, that is to load klass (and may be call runtime) at beginning of the LIR instruction, when all oops are in place expected by GC.
More information about the hotspot-compiler-dev