< prev index next >
src/share/vm/c1/c1_Runtime1.cpp
Print this page
rev 8069 : 8164652: aarch32: C1 port
*** 1047,1057 ****
}
} else {
ShouldNotReachHere();
}
! #if defined(SPARC) || defined(PPC)
if (load_klass_or_mirror_patch_id ||
stub_id == Runtime1::load_appendix_patching_id) {
// Update the location in the nmethod with the proper
// metadata. When the code was generated, a NULL was stuffed
// in the metadata table and that table needs to be update to
--- 1047,1057 ----
}
} else {
ShouldNotReachHere();
}
! #if defined(SPARC) || defined(PPC) || defined(AARCH32)
if (load_klass_or_mirror_patch_id ||
stub_id == Runtime1::load_appendix_patching_id) {
// Update the location in the nmethod with the proper
// metadata. When the code was generated, a NULL was stuffed
// in the metadata table and that table needs to be update to
*** 1084,1094 ****
}
#endif
if (do_patch) {
// replace instructions
// first replace the tail, then the call
! #ifdef ARM
if((load_klass_or_mirror_patch_id ||
stub_id == Runtime1::load_appendix_patching_id) &&
nativeMovConstReg_at(copy_buff)->is_pc_relative()) {
nmethod* nm = CodeCache::find_nmethod(instr_pc);
address addr = NULL;
--- 1084,1094 ----
}
#endif
if (do_patch) {
// replace instructions
// first replace the tail, then the call
! #if defined(ARM) && !defined(AARCH32)
if((load_klass_or_mirror_patch_id ||
stub_id == Runtime1::load_appendix_patching_id) &&
nativeMovConstReg_at(copy_buff)->is_pc_relative()) {
nmethod* nm = CodeCache::find_nmethod(instr_pc);
address addr = NULL;
*** 1132,1147 ****
--- 1132,1149 ----
relocInfo::oop_type;
// update relocInfo to metadata
nmethod* nm = CodeCache::find_nmethod(instr_pc);
assert(nm != NULL, "invalid nmethod_pc");
+ #if !defined(AARCH32)
// The old patch site is now a move instruction so update
// the reloc info so that it will get updated during
// future GCs.
RelocIterator iter(nm, (address)instr_pc, (address)(instr_pc + 1));
relocInfo::change_reloc_info_for_address(&iter, (address) instr_pc,
relocInfo::none, rtype);
+ #endif
#ifdef SPARC
// Sparc takes two relocations for an metadata so update the second one.
address instr_pc2 = instr_pc + NativeMovConstReg::add_offset;
RelocIterator iter2(nm, instr_pc2, instr_pc2 + 1);
relocInfo::change_reloc_info_for_address(&iter2, (address) instr_pc2,
< prev index next >