src/cpu/ppc/vm/ppc.ad
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Cdiff src/cpu/ppc/vm/ppc.ad

src/cpu/ppc/vm/ppc.ad

Print this page

        

*** 3397,3411 **** // Put the entry point as a constant into the constant pool. const address entry_point_toc_addr = __ address_constant(entry_point, RelocationHolder::none); 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. ! __ relocate(_optimized_virtual ? ! relocInfo::opt_virtual_call_type : relocInfo::static_call_type); } // 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() --- 3397,3413 ---- // Put the entry point as a constant into the constant pool. const address entry_point_toc_addr = __ address_constant(entry_point, RelocationHolder::none); 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_Relocate::spec(method_index) ! : static_call_Relocate::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()
*** 3445,3454 **** --- 3447,3458 ---- // Put the entry point as a constant into the constant pool. const address entry_point_toc_addr = __ address_constant(entry_point, RelocationHolder::none); const int entry_point_toc_offset = __ offset_to_method_toc(entry_point_toc_addr); + assert(!_override_symbolic_info, "resolved method overriding not supported"); + // 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 (ra_->C->env()->failing()) { return; } // Code cache may be full. assert(_optimized_virtual, "methodHandle call should be a virtual call"); __ relocate(relocInfo::opt_virtual_call_type);
*** 3517,3528 **** ? _load_ic_hi_node->_cbuf_insts_offset : _load_ic_node->_cbuf_insts_offset; const address virtual_call_oop_addr = __ addr_at(virtual_call_oop_addr_offset); assert(MacroAssembler::is_load_const_from_method_toc_at(virtual_call_oop_addr), "should be load from TOC"); ! ! __ relocate(virtual_call_Relocation::spec(virtual_call_oop_addr)); } // At this point I do not have the address of the trampoline stub, // and the entry point might be too far away for bl. Pc() serves // as dummy and bl will be patched later. --- 3521,3532 ---- ? _load_ic_hi_node->_cbuf_insts_offset : _load_ic_node->_cbuf_insts_offset; const address virtual_call_oop_addr = __ addr_at(virtual_call_oop_addr_offset); assert(MacroAssembler::is_load_const_from_method_toc_at(virtual_call_oop_addr), "should be load from TOC"); ! int method_index = resolved_method_index(cbuf); ! __ relocate(virtual_call_Relocation::spec(virtual_call_oop_addr, method_index)); } // At this point I do not have the address of the trampoline stub, // and the entry point might be too far away for bl. Pc() serves // as dummy and bl will be patched later.
src/cpu/ppc/vm/ppc.ad
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File