< prev index next >

src/hotspot/cpu/aarch64/templateTable_aarch64.cpp

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

@@ -3324,11 +3324,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());
+   __ 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

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

@@ -3529,14 +3529,12 @@
        __ cbnz(r3, loop);
      }
  
      // initialize object header only.
      __ bind(initialize_header);
-     __ mov(rscratch1, (intptr_t)markWord::prototype().value());
+     __ ldr(rscratch1, Address(r4, Klass::prototype_header_offset()));
      __ 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

@@ -3662,11 +3660,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(r3, 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 >