2376 sharpened_klass = elem_type->klass(); |
2376 sharpened_klass = elem_type->klass(); |
2377 } |
2377 } |
2378 } |
2378 } |
2379 } |
2379 } |
2380 |
2380 |
2381 if (sharpened_klass != NULL) { |
2381 // The sharpened class might be unloaded if there is no class loader |
|
2382 // contraint in place. |
|
2383 if (sharpened_klass != NULL && sharpened_klass->is_loaded()) { |
2382 const TypeOopPtr* tjp = TypeOopPtr::make_from_klass(sharpened_klass); |
2384 const TypeOopPtr* tjp = TypeOopPtr::make_from_klass(sharpened_klass); |
2383 |
2385 |
2384 #ifndef PRODUCT |
2386 #ifndef PRODUCT |
2385 if (PrintIntrinsics || PrintInlining || PrintOptoInlining) { |
2387 if (PrintIntrinsics || PrintInlining || PrintOptoInlining) { |
2386 tty->print(" from base type: "); adr_type->dump(); |
2388 tty->print(" from base type: "); adr_type->dump(); |
2387 tty->print(" sharpened value: "); tjp->dump(); |
2389 tty->print(" sharpened value: "); tjp->dump(); |
2388 } |
2390 } |
2389 #endif |
2391 #endif |
2390 // Sharpen the value type. |
2392 // Sharpen the value type. |
2391 return tjp; |
2393 return tjp; |
2392 } |
2394 } |
4379 // base_off: |
4381 // base_off: |
4380 // 8 - 32-bit VM |
4382 // 8 - 32-bit VM |
4381 // 12 - 64-bit VM, compressed klass |
4383 // 12 - 64-bit VM, compressed klass |
4382 // 16 - 64-bit VM, normal klass |
4384 // 16 - 64-bit VM, normal klass |
4383 if (base_off % BytesPerLong != 0) { |
4385 if (base_off % BytesPerLong != 0) { |
4384 assert(UseCompressedOops, ""); |
4386 assert(UseCompressedKlassPointers, ""); |
4385 if (is_array) { |
4387 if (is_array) { |
4386 // Exclude length to copy by 8 bytes words. |
4388 // Exclude length to copy by 8 bytes words. |
4387 base_off += sizeof(int); |
4389 base_off += sizeof(int); |
4388 } else { |
4390 } else { |
4389 // Include klass to copy by 8 bytes words. |
4391 // Include klass to copy by 8 bytes words. |