< prev index next >

src/hotspot/cpu/aarch64/aarch64.ad

Print this page
@@ -3716,20 +3716,23 @@
          ciEnv::current()->record_failure("CodeCache is full");
          return;
        }
      }
  
+     __ post_call_nop();
+ 
      // Only non uncommon_trap calls need to reinitialize ptrue.
      if (Compile::current()->max_vector_size() > 0 && uncommon_trap_request() == 0) {
        __ reinitialize_ptrue();
      }
    %}
  
    enc_class aarch64_enc_java_dynamic_call(method meth) %{
      C2_MacroAssembler _masm(&cbuf);
      int method_index = resolved_method_index(cbuf);
      address call = __ ic_call((address)$meth$$method, method_index);
+     __ post_call_nop();
      if (call == NULL) {
        ciEnv::current()->record_failure("CodeCache is full");
        return;
      } else if (Compile::current()->max_vector_size() > 0) {
        __ reinitialize_ptrue();

@@ -3753,10 +3756,11 @@
      // which loads the absolute address into a register.
      address entry = (address)$meth$$method;
      CodeBlob *cb = CodeCache::find_blob(entry);
      if (cb) {
        address call = __ trampoline_call(Address(entry, relocInfo::runtime_call_type));
+       __ post_call_nop();
        if (call == NULL) {
          ciEnv::current()->record_failure("CodeCache is full");
          return;
        }
      } else {

@@ -3765,10 +3769,11 @@
        __ lea(rscratch1, RuntimeAddress(entry));
        // Leave a breadcrumb for JavaFrameAnchor::capture_last_Java_pc()
        __ stp(zr, rscratch2, Address(__ pre(sp, -2 * wordSize)));
        __ blr(rscratch1);
        __ bind(retaddr);
+       // __ post_call_nop(); -- can we have one here? do we need one?
        __ add(sp, sp, 2 * wordSize);
      }
      if (Compile::current()->max_vector_size() > 0) {
        __ reinitialize_ptrue();
      }
< prev index next >