[aarch64-port-dev ] hg: aarch64-port/jdk8/hotspot: Default to DeoptimizeWhenPatching.
Andrew Dinn
adinn at redhat.com
Tue Sep 17 09:08:18 PDT 2013
On 13/09/13 18:25, aph at redhat.com wrote:
> Changeset: 423577eb8f6e
> Author: aph
> Date: 2013-09-13 18:22 +0100
> URL: http://hg.openjdk.java.net/aarch64-port/jdk8/hotspot/rev/423577eb8f6e
>
> Default to DeoptimizeWhenPatching.
>
> ! src/cpu/aarch64/vm/c1_MacroAssembler_aarch64.cpp
> ! src/cpu/aarch64/vm/c1_Runtime1_aarch64.cpp
> ! src/cpu/aarch64/vm/globals_aarch64.hpp
> ! src/cpu/aarch64/vm/icBuffer_aarch64.cpp
> ! src/cpu/aarch64/vm/nativeInst_aarch64.cpp
> ! src/cpu/aarch64/vm/nativeInst_aarch64.hpp
This has broken the C2 compiler which is hitting an assert at
nativeInst_aarch64.cpp:232 viz
assert(nativeInstruction_at(verified_entry)->is_jump_or_nop()) failed:
Aarch64 cannot replace non-jump with jump
The error occurs in NativeJump::patch_verified_entry(address entry,
address verified_entry, address dest) which gets called from
nmethod::make_not_entrant_or_zombie(unsigned int state). The relevant
compiled code snippet is:
[Entry Point]
[Verified Entry Point]
[Constants]
# {method}
{0x00007ffff5934420} '<clinit>' '()V' in 'sun/launcher/LauncherHelper'
# [sp+0x20] (sp of caller)
;; N1: # B1 <- B1 Freq: 1
;; B1: # N1 <- BLOCK HEAD IS JUNK Freq: 1
0x00007fffed17a780: stp xfp, xlr, [sp,#-16]!
;; 0x20
where entry == verified_entry == 0x00007fffed17a780
This is a standard C2 method entry which starts by pushing a stack frame
(the generator calls masm.entry()).
I don't understand . . .
i) why the code is assuming that a C2 method starts with a jump or nop?
ii) what I need to do to fix this?
regards,
Andrew Dinn
-----------
Principal Software Engineer
Red Hat UK Ltd
Registered in UK and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Mark Hegarty (Ireland), Matt Parson
(USA), Charlie Peters (USA)
More information about the aarch64-port-dev
mailing list