< prev index next >

src/cpu/ppc/vm/ppc.ad

Print this page
rev 12037 : 8166562: C2: Suppress relocations in scratch emit.

*** 1095,1105 **** offsets.insts_call_instruction_offset = __ offset(); // No entry point given, use the current pc. if (entry_point == NULL) entry_point = __ pc(); - if (!Compile::current()->in_scratch_emit_size()) { // Put the entry point as a constant into the constant pool. const address entry_point_toc_addr = __ address_constant(entry_point, RelocationHolder::none); if (entry_point_toc_addr == NULL) { ciEnv::current()->record_out_of_memory_failure(); return offsets; --- 1095,1104 ----
*** 1108,1118 **** // Emit the trampoline stub which will be related to the branch-and-link below. CallStubImpl::emit_trampoline_stub(_masm, entry_point_toc_offset, offsets.insts_call_instruction_offset); if (ciEnv::current()->failing()) { return offsets; } // Code cache may be full. __ relocate(rtype); - } // Note: At this point we do not have the address of the trampoline // stub, and the entry point might be too far away for bl, so __ pc() // serves as dummy and the bl will be patched later. __ bl((address) __ pc()); --- 1107,1116 ----
*** 2422,2432 **** // TODO: PPC port $archOpcode(ppc64Opcode_ld); MacroAssembler _masm(&cbuf); int toc_offset = 0; - if (!ra_->C->in_scratch_emit_size()) { address const_toc_addr; // Create a non-oop constant, no relocation needed. // If it is an IC, it has a virtual_call_Relocation. const_toc_addr = __ long_constant((jlong)$src$$constant); if (const_toc_addr == NULL) { --- 2420,2429 ----
*** 2437,2447 **** // Get the constant's TOC offset. toc_offset = __ offset_to_method_toc(const_toc_addr); // Keep the current instruction offset in mind. ((loadConLNode*)this)->_cbuf_insts_offset = __ offset(); - } __ ld($dst$$Register, toc_offset, $toc$$Register); %} enc_class enc_load_long_constL_hi(iRegLdst dst, iRegLdst toc, immL src) %{ --- 2434,2443 ----
*** 2574,2584 **** // TODO: PPC port $archOpcode(ppc64Opcode_ld); MacroAssembler _masm(&cbuf); int toc_offset = 0; - if (!ra_->C->in_scratch_emit_size()) { intptr_t val = $src$$constant; relocInfo::relocType constant_reloc = $src->constant_reloc(); // src address const_toc_addr; if (constant_reloc == relocInfo::oop_type) { // Create an oop constant and a corresponding relocation. --- 2570,2579 ----
*** 2598,2608 **** ciEnv::current()->record_out_of_memory_failure(); return; } // Get the constant's TOC offset. toc_offset = __ offset_to_method_toc(const_toc_addr); - } __ ld($dst$$Register, toc_offset, $toc$$Register); %} enc_class enc_load_long_constP_hi(iRegLdst dst, immP src, iRegLdst toc) %{ --- 2593,2602 ----
*** 3270,3281 **** // A call to a runtime wrapper, e.g. new, new_typeArray_Java, uncommon_trap. emit_call_with_trampoline_stub(_masm, entry_point, relocInfo::runtime_call_type); } else { // Remember the offset not the address. const int start_offset = __ offset(); // The trampoline stub. - if (!Compile::current()->in_scratch_emit_size()) { // No entry point given, use the current pc. // Make sure branch fits into if (entry_point == 0) entry_point = __ pc(); // Put the entry point as a constant into the constant pool. --- 3264,3275 ---- // A call to a runtime wrapper, e.g. new, new_typeArray_Java, uncommon_trap. emit_call_with_trampoline_stub(_masm, entry_point, relocInfo::runtime_call_type); } else { // Remember the offset not the address. const int start_offset = __ offset(); + // The trampoline stub. // No entry point given, use the current pc. // Make sure branch fits into if (entry_point == 0) entry_point = __ pc(); // Put the entry point as a constant into the constant pool.
*** 3284,3301 **** ciEnv::current()->record_out_of_memory_failure(); return; } const int entry_point_toc_offset = __ offset_to_method_toc(entry_point_toc_addr); - // Emit the trampoline stub which will be related to the branch-and-link below. CallStubImpl::emit_trampoline_stub(_masm, entry_point_toc_offset, start_offset); if (ciEnv::current()->failing()) { return; } // Code cache may be full. int method_index = resolved_method_index(cbuf); __ relocate(_optimized_virtual ? opt_virtual_call_Relocation::spec(method_index) : static_call_Relocation::spec(method_index)); - } // The real call. // Note: At this point we do not have the address of the trampoline // stub, and the entry point might be too far away for bl, so __ pc() // serves as dummy and the bl will be patched later. --- 3278,3293 ----
< prev index next >