[aarch64-port-dev ] RFR: 8195685: AArch64: AArch64 cannot build with JDK-8174962

Andrew Dinn adinn at redhat.com
Mon Jan 22 12:41:39 UTC 2018

Hi Ningsheng,

I believe this is an unrelated bug and that this test could never have
worked before the patch.

The failing gtest executes this code:

TEST_VM(code, vtableStubs) {
  // Should be in VM to use locks
  ThreadInVMfromNative ThreadInVMfromNative(JavaThread::current());

  VtableStubs::find_vtable_stub(0); // min vtable index
  for (int i = 0; i < 15; i++) {
    VtableStubs::find_vtable_stub((1 << i) - 1);
    VtableStubs::find_vtable_stub((1 << i));
  VtableStubs::find_vtable_stub((1 << 15) - 1); // max vtable index

So, it is calling VtableStubs::find_vtable_stub with values up to 1<< 15.

Method find_vtable_stub calls passes the index along to
create_vtable_stub which again passes it on to method
MacroAssembler::lookup_virtual_method. This index is a constant so it is
scaled by wordSize and passed directly to ldr. I guess a size check is
needed to detect offsets that cannto be inserted as an immediate.

    vtable_offset_in_bytes += vtable_index.as_constant() * wordSize;
    ldr(method_result, Address(recv_klass, vtable_offset_in_bytes));

So, I'm going to push the current (8195685) patch as is and leave this
problem to be handled as a separate issue. Thanks for testing the patch.
I'll add you to the list of reviewers before pushing.


Andrew Dinn
Senior Principal Software Engineer
Red Hat UK Ltd
Registered in England and Wales under Company Registration No. 03798903
Directors: Michael Cunningham, Michael ("Mike") O'Neill, Eric Shander

More information about the jdk-dev mailing list