456 can_eliminate = false; |
456 can_eliminate = false; |
457 } |
457 } |
458 } |
458 } |
459 } else if (use->is_SafePoint()) { |
459 } else if (use->is_SafePoint()) { |
460 SafePointNode* sfpt = use->as_SafePoint(); |
460 SafePointNode* sfpt = use->as_SafePoint(); |
461 if (sfpt->has_non_debug_use(res)) { |
461 if (sfpt->is_Call() && sfpt->as_Call()->has_non_debug_use(res)) { |
462 // Object is passed as argument. |
462 // Object is passed as argument. |
463 DEBUG_ONLY(disq_node = use;) |
463 DEBUG_ONLY(disq_node = use;) |
464 NOT_PRODUCT(fail_eliminate = "Object is passed as argument";) |
464 NOT_PRODUCT(fail_eliminate = "Object is passed as argument";) |
465 can_eliminate = false; |
465 can_eliminate = false; |
466 } |
466 } |
1286 } else { |
1286 } else { |
1287 mark_node = makecon(TypeRawPtr::make((address)markOopDesc::prototype())); |
1287 mark_node = makecon(TypeRawPtr::make((address)markOopDesc::prototype())); |
1288 } |
1288 } |
1289 rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS); |
1289 rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS); |
1290 |
1290 |
1291 if (UseCompressedOops) { |
|
1292 Node *zeronode = makecon(TypeInt::ZERO); |
|
1293 // store uncompressed 0 into klass ptr to zero out gap. The gap is |
|
1294 // used for primitive fields and has to be zeroed. |
|
1295 rawmem = make_store(control, rawmem, object, oopDesc::klass_gap_offset_in_bytes(), zeronode, T_INT); |
|
1296 } |
|
1297 rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_OBJECT); |
1291 rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_OBJECT); |
1298 int header_size = alloc->minimum_header_size(); // conservatively small |
1292 int header_size = alloc->minimum_header_size(); // conservatively small |
1299 |
1293 |
1300 // Array length |
1294 // Array length |
1301 if (length != NULL) { // Arrays need length field |
1295 if (length != NULL) { // Arrays need length field |