[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