[aarch64-port-dev ] RFR: 8170188: jtreg compiler/types/TestMeetIncompatibleInterfaceArrays.java causes JVM crash

Sergey Nazarkin snazarkin at azul.com
Wed Nov 23 14:52:31 UTC 2016


> 
> On 23 Nov 2016, at 16:39, Andrew Haley <aph at redhat.com> wrote:
> 
> Hi,
> 
> On 23/11/16 12:52, Sergey Nazarkin wrote:
>> 
>> You are right, ZR is not defined at Assembler scope. Anyway, I’ve
>> updated review page with updated MacroAssembler. Not sure it starts
>> look like eye candy. :)
> 
> True.
> 
> A few things:
> 
> You can get rid of the overload of
> 
>  ands(Register Rd, Register Rn, Register Rm,
>                enum shift_kind kind = LSL, unsigned shift = 0)
> 
> by saying
> 
>  using Assembler::ands;
>  using Assembler::andsw;

Nice hint, thank you. Updated review

> 
> at the top of the file.
> 
> What about the other boolean operations?

At least  AND, BFM, EOR, ORR, SBFM, UBFM are affected (taken with `grep DecodeBitMasks` through ARMv8 ref manual). Plus all-ones values are dangerous as well. 

> 
> Do you know if this was C2- or C1-generated code?  C2 should never do
> it, and I'm not sure how C1 gets there either.  I get a pass for that
> test, so I don't know how or why you got that failure.

The issue doesn’t relate to any JIT, runtime fails right at template initialiser

V  [libjvm.so+0x2540d0]  Instruction_aarch64::f(unsigned int, int, int)+0x64
V  [libjvm.so+0x255158]  Assembler::f(unsigned int, int, int)+0x30
V  [libjvm.so+0x255aa8]  Assembler::ands(RegisterImpl*, RegisterImpl*, unsigned long)+0x7c
V  [libjvm.so+0x766c7c]  InterpreterMacroAssembler::increment_mask_and_jump(Address, int, int, Registerp8
V  [libjvm.so+0xb32234]  InterpreterGenerator::generate_counter_incr(Label*, Label*, Label*)+0x1b4
V  [libjvm.so+0xb36528]  InterpreterGenerator::generate_normal_entry(bool)+0x5d4
V  [libjvm.so+0xb3691c]  AbstractInterpreterGenerator::generate_method_entry(AbstractInterpreter::Methoi4
V  [libjvm.so+0xb2f4e8]  TemplateInterpreterGenerator::generate_all()+0xeec
V  [libjvm.so+0xb37dd0]  InterpreterGenerator::InterpreterGenerator(StubQueue*)+0x34
V  [libjvm.so+0xb2df20]  TemplateInterpreter::initialize()+0xf0
V  [libjvm.so+0x768da8]  interpreter_init()+0x10
V  [libjvm.so+0x709034]  init_globals()+0x50

To note: I use JDK8 compiled with server JIT,  TieredCompilation is on, Tier0InvokeNotifyFreqLog is set to 0 by the test.


> 
> Sorry for all the questions...
> 
> Andrew.



More information about the aarch64-port-dev mailing list