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