Mercurial > hg > truffle
comparison src/cpu/sparc/vm/c1_CodeStubs_sparc.cpp @ 17473:9b4ce069642e
Merge
author | chegar |
---|---|
date | Sat, 14 Sep 2013 20:40:34 +0100 |
parents | f98f5d48f511 |
children | de6a9e811145 |
comparison
equal
deleted
inserted
replaced
17472:2a907fd129cb | 17473:9b4ce069642e |
---|---|
305 address ptr = (address)(_pc_start + i); | 305 address ptr = (address)(_pc_start + i); |
306 int a_byte = (*ptr) & 0xFF; | 306 int a_byte = (*ptr) & 0xFF; |
307 assert(a_byte == *start++, "should be the same code"); | 307 assert(a_byte == *start++, "should be the same code"); |
308 } | 308 } |
309 #endif | 309 #endif |
310 } else if (_id == load_mirror_id) { | 310 } else if (_id == load_mirror_id || _id == load_appendix_id) { |
311 // produce a copy of the load mirror instruction for use by the being initialized case | 311 // produce a copy of the load mirror instruction for use by the being initialized case |
312 #ifdef ASSERT | 312 #ifdef ASSERT |
313 address start = __ pc(); | 313 address start = __ pc(); |
314 #endif | 314 #endif |
315 AddressLiteral addrlit(NULL, oop_Relocation::spec(_index)); | 315 AddressLiteral addrlit(NULL, oop_Relocation::spec(_index)); |
382 relocInfo::relocType reloc_type = relocInfo::none; | 382 relocInfo::relocType reloc_type = relocInfo::none; |
383 switch (_id) { | 383 switch (_id) { |
384 case access_field_id: target = Runtime1::entry_for(Runtime1::access_field_patching_id); break; | 384 case access_field_id: target = Runtime1::entry_for(Runtime1::access_field_patching_id); break; |
385 case load_klass_id: target = Runtime1::entry_for(Runtime1::load_klass_patching_id); reloc_type = relocInfo::metadata_type; break; | 385 case load_klass_id: target = Runtime1::entry_for(Runtime1::load_klass_patching_id); reloc_type = relocInfo::metadata_type; break; |
386 case load_mirror_id: target = Runtime1::entry_for(Runtime1::load_mirror_patching_id); reloc_type = relocInfo::oop_type; break; | 386 case load_mirror_id: target = Runtime1::entry_for(Runtime1::load_mirror_patching_id); reloc_type = relocInfo::oop_type; break; |
387 case load_appendix_id: target = Runtime1::entry_for(Runtime1::load_appendix_patching_id); reloc_type = relocInfo::oop_type; break; | |
387 default: ShouldNotReachHere(); | 388 default: ShouldNotReachHere(); |
388 } | 389 } |
389 __ bind(call_patch); | 390 __ bind(call_patch); |
390 | 391 |
391 if (CommentedAssembly) { | 392 if (CommentedAssembly) { |
395 __ delayed()->nop(); | 396 __ delayed()->nop(); |
396 assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change"); | 397 assert(_patch_info_offset == (patch_info_pc - __ pc()), "must not change"); |
397 ce->add_call_info_here(_info); | 398 ce->add_call_info_here(_info); |
398 __ br(Assembler::always, false, Assembler::pt, _patch_site_entry); | 399 __ br(Assembler::always, false, Assembler::pt, _patch_site_entry); |
399 __ delayed()->nop(); | 400 __ delayed()->nop(); |
400 if (_id == load_klass_id || _id == load_mirror_id) { | 401 if (_id == load_klass_id || _id == load_mirror_id || _id == load_appendix_id) { |
401 CodeSection* cs = __ code_section(); | 402 CodeSection* cs = __ code_section(); |
402 address pc = (address)_pc_start; | 403 address pc = (address)_pc_start; |
403 RelocIterator iter(cs, pc, pc + 1); | 404 RelocIterator iter(cs, pc, pc + 1); |
404 relocInfo::change_reloc_info_for_address(&iter, (address) pc, reloc_type, relocInfo::none); | 405 relocInfo::change_reloc_info_for_address(&iter, (address) pc, reloc_type, relocInfo::none); |
405 | 406 |