src/share/vm/c1/c1_Runtime1.cpp

Print this page

        

*** 1076,1093 **** #endif if (do_patch) { // replace instructions // first replace the tail, then the call #ifdef ARM ! if(load_klass_or_mirror_patch_id && !VM_Version::supports_movw()) { nmethod* nm = CodeCache::find_nmethod(instr_pc); address addr = NULL; assert(nm != NULL, "invalid nmethod_pc"); RelocIterator mds(nm, copy_buff, copy_buff + 1); while (mds.next()) { if (mds.type() == relocInfo::oop_type) { ! assert(stub_id == Runtime1::load_mirror_patching_id, "wrong stub id"); oop_Relocation* r = mds.oop_reloc(); addr = (address)r->oop_addr(); break; } else if (mds.type() == relocInfo::metadata_type) { assert(stub_id == Runtime1::load_klass_patching_id, "wrong stub id"); --- 1076,1096 ---- #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) && ! !VM_Version::supports_movw()) { nmethod* nm = CodeCache::find_nmethod(instr_pc); address addr = NULL; assert(nm != NULL, "invalid nmethod_pc"); RelocIterator mds(nm, copy_buff, copy_buff + 1); while (mds.next()) { if (mds.type() == relocInfo::oop_type) { ! assert(stub_id == Runtime1::load_mirror_patching_id || ! stub_id == Runtime1::load_appendix_patching_id, "wrong stub id"); oop_Relocation* r = mds.oop_reloc(); addr = (address)r->oop_addr(); break; } else if (mds.type() == relocInfo::metadata_type) { assert(stub_id == Runtime1::load_klass_patching_id, "wrong stub id");
*** 1095,1105 **** addr = (address)r->metadata_addr(); break; } } assert(addr != NULL, "metadata relocation must exist"); - copy_buff -= *byte_count; NativeMovConstReg* n_copy2 = nativeMovConstReg_at(copy_buff); n_copy2->set_pc_relative_offset(addr, instr_pc); } #endif --- 1098,1107 ----