[8u] RFR: not use rthread as temporary in MethodHandle
Anton Kozlov
akozlov at azul.com
Fri Apr 1 13:07:47 UTC 2016
Missing patch attached,
sorry,
Anton
On Fri, 2016-04-01 at 13:01 +0000, Anton Kozlov wrote:
> Hi, All!
>
> MethodHandle uses r8 (rthread) as temporary register and not restores
> it after. This is the reason jtreg
> java/lang/invoke/PrivateInvokeTest.java failed in release mode with
> such message:
>
> # A fatal error has been detected by the Java Runtime Environment:
> #
> # SIGSEGV (0xb) at pc=0x75568878, pid=471, tid=1675060320
> #
> # JRE version: OpenJDK Runtime Environment (8.0_60-b99) (build
> 1.8.0_60
> -internal-b99)
> # Java VM: OpenJDK Client VM (25.60-b23 mixed mode linux-aarch32 )
> # Problematic frame:
> # V [libjvm.so+0x129878] GrowableArray<Metadata*>::append(Metadata*
> const&)+0x8
> #
>
> I suggest just to not use rthread as temporary. Registers r5-r7 seems
> to be fine as temporary registers, as they holds cached values in
> interpreter mode and will be restored on enter to interpreter; and
> they
> are callee-saved and can't hold arguments in compiled/native calling
> conventions (however, r4 used in critical native code, so r5 is
> first).
>
> Thanks,
> Anton
-------------- next part --------------
A non-text attachment was scrubbed...
Name: methodHandle.patch
Type: text/x-patch
Size: 1206 bytes
Desc: methodHandle.patch
URL: <http://mail.openjdk.java.net/pipermail/aarch32-port-dev/attachments/20160401/f7d9e2af/methodHandle.patch>
More information about the aarch32-port-dev
mailing list