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