Mercurial > hg > truffle
comparison src/cpu/x86/vm/c1_LIRAssembler_x86.cpp @ 12226:7944aba7ba41
8015107: NPG: Use consistent naming for metaspace concepts
Reviewed-by: coleenp, mgerdin, hseigel
author | ehelin |
---|---|
date | Mon, 12 Aug 2013 17:37:02 +0200 |
parents | f98f5d48f511 |
children | da051ce490eb |
comparison
equal
deleted
inserted
replaced
12186:313b724f8911 | 12226:7944aba7ba41 |
---|---|
339 // inline cache check; done before the frame is built. | 339 // inline cache check; done before the frame is built. |
340 int LIR_Assembler::check_icache() { | 340 int LIR_Assembler::check_icache() { |
341 Register receiver = FrameMap::receiver_opr->as_register(); | 341 Register receiver = FrameMap::receiver_opr->as_register(); |
342 Register ic_klass = IC_Klass; | 342 Register ic_klass = IC_Klass; |
343 const int ic_cmp_size = LP64_ONLY(10) NOT_LP64(9); | 343 const int ic_cmp_size = LP64_ONLY(10) NOT_LP64(9); |
344 const bool do_post_padding = VerifyOops || UseCompressedKlassPointers; | 344 const bool do_post_padding = VerifyOops || UseCompressedClassPointers; |
345 if (!do_post_padding) { | 345 if (!do_post_padding) { |
346 // insert some nops so that the verified entry point is aligned on CodeEntryAlignment | 346 // insert some nops so that the verified entry point is aligned on CodeEntryAlignment |
347 while ((__ offset() + ic_cmp_size) % CodeEntryAlignment != 0) { | 347 while ((__ offset() + ic_cmp_size) % CodeEntryAlignment != 0) { |
348 __ nop(); | 348 __ nop(); |
349 } | 349 } |
1261 __ movptr(dest->as_register(), from_addr); | 1261 __ movptr(dest->as_register(), from_addr); |
1262 } | 1262 } |
1263 break; | 1263 break; |
1264 | 1264 |
1265 case T_ADDRESS: | 1265 case T_ADDRESS: |
1266 if (UseCompressedKlassPointers && addr->disp() == oopDesc::klass_offset_in_bytes()) { | 1266 if (UseCompressedClassPointers && addr->disp() == oopDesc::klass_offset_in_bytes()) { |
1267 __ movl(dest->as_register(), from_addr); | 1267 __ movl(dest->as_register(), from_addr); |
1268 } else { | 1268 } else { |
1269 __ movptr(dest->as_register(), from_addr); | 1269 __ movptr(dest->as_register(), from_addr); |
1270 } | 1270 } |
1271 break; | 1271 break; |
1369 } | 1369 } |
1370 #endif | 1370 #endif |
1371 __ verify_oop(dest->as_register()); | 1371 __ verify_oop(dest->as_register()); |
1372 } else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) { | 1372 } else if (type == T_ADDRESS && addr->disp() == oopDesc::klass_offset_in_bytes()) { |
1373 #ifdef _LP64 | 1373 #ifdef _LP64 |
1374 if (UseCompressedKlassPointers) { | 1374 if (UseCompressedClassPointers) { |
1375 __ decode_klass_not_null(dest->as_register()); | 1375 __ decode_klass_not_null(dest->as_register()); |
1376 } | 1376 } |
1377 #endif | 1377 #endif |
1378 } | 1378 } |
1379 } | 1379 } |
1714 if (obj == k_RInfo) { | 1714 if (obj == k_RInfo) { |
1715 k_RInfo = dst; | 1715 k_RInfo = dst; |
1716 } else if (obj == klass_RInfo) { | 1716 } else if (obj == klass_RInfo) { |
1717 klass_RInfo = dst; | 1717 klass_RInfo = dst; |
1718 } | 1718 } |
1719 if (k->is_loaded() && !UseCompressedKlassPointers) { | 1719 if (k->is_loaded() && !UseCompressedClassPointers) { |
1720 select_different_registers(obj, dst, k_RInfo, klass_RInfo); | 1720 select_different_registers(obj, dst, k_RInfo, klass_RInfo); |
1721 } else { | 1721 } else { |
1722 Rtmp1 = op->tmp3()->as_register(); | 1722 Rtmp1 = op->tmp3()->as_register(); |
1723 select_different_registers(obj, dst, k_RInfo, klass_RInfo, Rtmp1); | 1723 select_different_registers(obj, dst, k_RInfo, klass_RInfo, Rtmp1); |
1724 } | 1724 } |
1752 | 1752 |
1753 if (op->fast_check()) { | 1753 if (op->fast_check()) { |
1754 // get object class | 1754 // get object class |
1755 // not a safepoint as obj null check happens earlier | 1755 // not a safepoint as obj null check happens earlier |
1756 #ifdef _LP64 | 1756 #ifdef _LP64 |
1757 if (UseCompressedKlassPointers) { | 1757 if (UseCompressedClassPointers) { |
1758 __ load_klass(Rtmp1, obj); | 1758 __ load_klass(Rtmp1, obj); |
1759 __ cmpptr(k_RInfo, Rtmp1); | 1759 __ cmpptr(k_RInfo, Rtmp1); |
1760 } else { | 1760 } else { |
1761 __ cmpptr(k_RInfo, Address(obj, oopDesc::klass_offset_in_bytes())); | 1761 __ cmpptr(k_RInfo, Address(obj, oopDesc::klass_offset_in_bytes())); |
1762 } | 1762 } |
3292 | 3292 |
3293 if (flags & LIR_OpArrayCopy::type_check) { | 3293 if (flags & LIR_OpArrayCopy::type_check) { |
3294 // We don't know the array types are compatible | 3294 // We don't know the array types are compatible |
3295 if (basic_type != T_OBJECT) { | 3295 if (basic_type != T_OBJECT) { |
3296 // Simple test for basic type arrays | 3296 // Simple test for basic type arrays |
3297 if (UseCompressedKlassPointers) { | 3297 if (UseCompressedClassPointers) { |
3298 __ movl(tmp, src_klass_addr); | 3298 __ movl(tmp, src_klass_addr); |
3299 __ cmpl(tmp, dst_klass_addr); | 3299 __ cmpl(tmp, dst_klass_addr); |
3300 } else { | 3300 } else { |
3301 __ movptr(tmp, src_klass_addr); | 3301 __ movptr(tmp, src_klass_addr); |
3302 __ cmpptr(tmp, dst_klass_addr); | 3302 __ cmpptr(tmp, dst_klass_addr); |
3454 // subtype which we can't check or src is the same array as dst | 3454 // subtype which we can't check or src is the same array as dst |
3455 // but not necessarily exactly of type default_type. | 3455 // but not necessarily exactly of type default_type. |
3456 Label known_ok, halt; | 3456 Label known_ok, halt; |
3457 __ mov_metadata(tmp, default_type->constant_encoding()); | 3457 __ mov_metadata(tmp, default_type->constant_encoding()); |
3458 #ifdef _LP64 | 3458 #ifdef _LP64 |
3459 if (UseCompressedKlassPointers) { | 3459 if (UseCompressedClassPointers) { |
3460 __ encode_klass_not_null(tmp); | 3460 __ encode_klass_not_null(tmp); |
3461 } | 3461 } |
3462 #endif | 3462 #endif |
3463 | 3463 |
3464 if (basic_type != T_OBJECT) { | 3464 if (basic_type != T_OBJECT) { |
3465 | 3465 |
3466 if (UseCompressedKlassPointers) __ cmpl(tmp, dst_klass_addr); | 3466 if (UseCompressedClassPointers) __ cmpl(tmp, dst_klass_addr); |
3467 else __ cmpptr(tmp, dst_klass_addr); | 3467 else __ cmpptr(tmp, dst_klass_addr); |
3468 __ jcc(Assembler::notEqual, halt); | 3468 __ jcc(Assembler::notEqual, halt); |
3469 if (UseCompressedKlassPointers) __ cmpl(tmp, src_klass_addr); | 3469 if (UseCompressedClassPointers) __ cmpl(tmp, src_klass_addr); |
3470 else __ cmpptr(tmp, src_klass_addr); | 3470 else __ cmpptr(tmp, src_klass_addr); |
3471 __ jcc(Assembler::equal, known_ok); | 3471 __ jcc(Assembler::equal, known_ok); |
3472 } else { | 3472 } else { |
3473 if (UseCompressedKlassPointers) __ cmpl(tmp, dst_klass_addr); | 3473 if (UseCompressedClassPointers) __ cmpl(tmp, dst_klass_addr); |
3474 else __ cmpptr(tmp, dst_klass_addr); | 3474 else __ cmpptr(tmp, dst_klass_addr); |
3475 __ jcc(Assembler::equal, known_ok); | 3475 __ jcc(Assembler::equal, known_ok); |
3476 __ cmpptr(src, dst); | 3476 __ cmpptr(src, dst); |
3477 __ jcc(Assembler::equal, known_ok); | 3477 __ jcc(Assembler::equal, known_ok); |
3478 } | 3478 } |