< prev index next >

src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp

Print this page

        

*** 738,762 **** || entry.rspec().type() == relocInfo::opt_virtual_call_type || entry.rspec().type() == relocInfo::static_call_type || entry.rspec().type() == relocInfo::virtual_call_type, "wrong reloc type"); unsigned int start_offset = offset(); ! if (far_branches() && !Compile::current()->in_scratch_emit_size()) { address stub = emit_trampoline_stub(start_offset, entry.target()); if (stub == NULL) { return NULL; // CodeCache is full } } if (cbuf) cbuf->set_insts_mark(); relocate(entry.rspec()); ! if (!far_branches()) { ! bl(entry.target()); ! } else { bl(pc()); } ! // just need to return a non-null address return pc(); } // Emit a trampoline stub for a call to a target which is too far away. --- 738,762 ---- || entry.rspec().type() == relocInfo::opt_virtual_call_type || entry.rspec().type() == relocInfo::static_call_type || entry.rspec().type() == relocInfo::virtual_call_type, "wrong reloc type"); unsigned int start_offset = offset(); ! if (UseAOT || (far_branches() && !Compile::current()->in_scratch_emit_size())) { address stub = emit_trampoline_stub(start_offset, entry.target()); if (stub == NULL) { return NULL; // CodeCache is full } } if (cbuf) cbuf->set_insts_mark(); relocate(entry.rspec()); ! if (UseAOT || far_branches()) { bl(pc()); + } else { + bl(entry.target()); } ! return pc(); } // Emit a trampoline stub for a call to a target which is too far away.
*** 1048,1058 **** Address::lsl(LogBytesPerWord))); ldr(method_result, Address(method_result, vtable_offset_in_bytes)); } else { vtable_offset_in_bytes += vtable_index.as_constant() * wordSize; ldr(method_result, ! form_address(rscratch1, recv_klass, vtable_offset_in_bytes)); } } void MacroAssembler::check_klass_subtype(Register sub_klass, Register super_klass, --- 1048,1058 ---- Address::lsl(LogBytesPerWord))); ldr(method_result, Address(method_result, vtable_offset_in_bytes)); } else { vtable_offset_in_bytes += vtable_index.as_constant() * wordSize; ldr(method_result, ! form_address(rscratch1, recv_klass, vtable_offset_in_bytes, 0)); } } void MacroAssembler::check_klass_subtype(Register sub_klass, Register super_klass,
< prev index next >