< prev index next >

src/hotspot/cpu/aarch64/templateTable_aarch64.cpp

Print this page
*** 3233,11 ***
    __ jump_from_interpreted(method, r0);
  
    __ bind(notFinal);
  
    // get receiver klass
!   __ null_check(recv, oopDesc::klass_offset_in_bytes());
    __ load_klass(r0, recv);
  
    // profile this call
    __ profile_virtual_call(r0, rlocals, r3);
  
--- 3233,11 ---
    __ jump_from_interpreted(method, r0);
  
    __ bind(notFinal);
  
    // get receiver klass
!   __ null_check(recv, oopDesc::mark_offset_in_bytes());
    __ load_klass(r0, recv);
  
    // profile this call
    __ profile_virtual_call(r0, rlocals, r3);
  

*** 3323,11 ***
    // Check for private method invocation - indicated by vfinal
    Label notVFinal;
    __ tbz(r3, ConstantPoolCacheEntry::is_vfinal_shift, notVFinal);
  
    // Get receiver klass into r3 - also a null check
!   __ null_check(r2, oopDesc::klass_offset_in_bytes());
    __ load_klass(r3, r2);
  
    Label subtype;
    __ check_klass_subtype(r3, r0, r4, subtype);
    // If we get here the typecheck failed
--- 3323,11 ---
    // Check for private method invocation - indicated by vfinal
    Label notVFinal;
    __ tbz(r3, ConstantPoolCacheEntry::is_vfinal_shift, notVFinal);
  
    // Get receiver klass into r3 - also a null check
!   __ null_check(r2, oopDesc::mark_offset_in_bytes());
    __ load_klass(r3, r2);
  
    Label subtype;
    __ check_klass_subtype(r3, r0, r4, subtype);
    // If we get here the typecheck failed

*** 3340,11 ***
  
    __ bind(notVFinal);
  
    // Get receiver klass into r3 - also a null check
    __ restore_locals();
!   __ null_check(r2, oopDesc::klass_offset_in_bytes());
    __ load_klass(r3, r2);
  
    Label no_such_method;
  
    // Preserve method for throw_AbstractMethodErrorVerbose.
--- 3340,11 ---
  
    __ bind(notVFinal);
  
    // Get receiver klass into r3 - also a null check
    __ restore_locals();
!   __ null_check(r2, oopDesc::mark_offset_in_bytes());
    __ load_klass(r3, r2);
  
    Label no_such_method;
  
    // Preserve method for throw_AbstractMethodErrorVerbose.

*** 3551,14 ***
        __ cbnz(r3, loop);
      }
  
      // initialize object header only.
      __ bind(initialize_header);
!     __ mov(rscratch1, (intptr_t)markWord::prototype().value());
      __ str(rscratch1, Address(r0, oopDesc::mark_offset_in_bytes()));
-     __ store_klass_gap(r0, zr);  // zero klass gap for compressed oops
-     __ store_klass(r0, r4);      // store klass last
  
      {
        SkipIfEqual skip(_masm, &DTraceAllocProbes, false);
        // Trigger dtrace event for fastpath
        __ push(atos); // save the return value
--- 3551,12 ---
        __ cbnz(r3, loop);
      }
  
      // initialize object header only.
      __ bind(initialize_header);
!     __ ldr(rscratch1, Address(r4, Klass::prototype_header_offset()));
      __ str(rscratch1, Address(r0, oopDesc::mark_offset_in_bytes()));
  
      {
        SkipIfEqual skip(_masm, &DTraceAllocProbes, false);
        // Trigger dtrace event for fastpath
        __ push(atos); // save the return value

*** 3684,11 ***
    call_VM(r0, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
    // vm_result_2 has metadata result
    __ get_vm_result_2(r0, rthread);
    __ pop(r3); // restore receiver
    __ verify_oop(r3);
!   __ load_klass(r3, r3);
    __ b(resolved);
  
    // Get superklass in r0 and subklass in r3
    __ bind(quicked);
    __ load_klass(r3, r0);
--- 3682,12 ---
    call_VM(r0, CAST_FROM_FN_PTR(address, InterpreterRuntime::quicken_io_cc));
    // vm_result_2 has metadata result
    __ get_vm_result_2(r0, rthread);
    __ pop(r3); // restore receiver
    __ verify_oop(r3);
!   __ load_klass(rscratch1, r3);
+   __ mov(r3, rscratch1);
    __ b(resolved);
  
    // Get superklass in r0 and subklass in r3
    __ bind(quicked);
    __ load_klass(r3, r0);
< prev index next >