Mercurial > hg > graal-jvmci-8
comparison src/share/vm/c1/c1_Runtime1.cpp @ 3464:be4ca325525a
Merge.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Wed, 27 Jul 2011 17:32:44 -0700 |
parents | f9c6d9bc4fbc 7ec4bb02d5f0 |
children | bc95d122df79 |
comparison
equal
deleted
inserted
replaced
3239:7c4b4daac19b | 3464:be4ca325525a |
---|---|
1066 if (do_patch) { | 1066 if (do_patch) { |
1067 // replace instructions | 1067 // replace instructions |
1068 // first replace the tail, then the call | 1068 // first replace the tail, then the call |
1069 #ifdef ARM | 1069 #ifdef ARM |
1070 if(stub_id == Runtime1::load_klass_patching_id && !VM_Version::supports_movw()) { | 1070 if(stub_id == Runtime1::load_klass_patching_id && !VM_Version::supports_movw()) { |
1071 nmethod* nm = CodeCache::find_nmethod(instr_pc); | |
1072 oop* oop_addr = NULL; | |
1073 assert(nm != NULL, "invalid nmethod_pc"); | |
1074 RelocIterator oops(nm, copy_buff, copy_buff + 1); | |
1075 while (oops.next()) { | |
1076 if (oops.type() == relocInfo::oop_type) { | |
1077 oop_Relocation* r = oops.oop_reloc(); | |
1078 oop_addr = r->oop_addr(); | |
1079 break; | |
1080 } | |
1081 } | |
1082 assert(oop_addr != NULL, "oop relocation must exist"); | |
1071 copy_buff -= *byte_count; | 1083 copy_buff -= *byte_count; |
1072 NativeMovConstReg* n_copy2 = nativeMovConstReg_at(copy_buff); | 1084 NativeMovConstReg* n_copy2 = nativeMovConstReg_at(copy_buff); |
1073 n_copy2->set_data((intx) (load_klass()), instr_pc); | 1085 n_copy2->set_pc_relative_offset((address)oop_addr, instr_pc); |
1074 } | 1086 } |
1075 #endif | 1087 #endif |
1076 | 1088 |
1077 for (int i = NativeCall::instruction_size; i < *byte_count; i++) { | 1089 for (int i = NativeCall::instruction_size; i < *byte_count; i++) { |
1078 address ptr = copy_buff + i; | 1090 address ptr = copy_buff + i; |