comparison src/share/vm/opto/macro.cpp @ 163:885ed790ecf0

6695810: null oop passed to encode_heap_oop_not_null Summary: fix several problems in C2 related to Escape Analysis and Compressed Oops. Reviewed-by: never, jrose
author kvn
date Wed, 21 May 2008 10:45:07 -0700
parents b130b98db9cf
children 7793bd37a336
comparison
equal deleted inserted replaced
162:8aa010f60e0f 163:885ed790ecf0
1280 } else { 1280 } else {
1281 mark_node = makecon(TypeRawPtr::make((address)markOopDesc::prototype())); 1281 mark_node = makecon(TypeRawPtr::make((address)markOopDesc::prototype()));
1282 } 1282 }
1283 rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS); 1283 rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS);
1284 1284
1285 if (UseCompressedOops) {
1286 Node *zeronode = makecon(TypeInt::ZERO);
1287 // store uncompressed 0 into klass ptr to zero out gap. The gap is
1288 // used for primitive fields and has to be zeroed.
1289 rawmem = make_store(control, rawmem, object, oopDesc::klass_gap_offset_in_bytes(), zeronode, T_INT);
1290 }
1291 rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_OBJECT); 1285 rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_OBJECT);
1292 int header_size = alloc->minimum_header_size(); // conservatively small 1286 int header_size = alloc->minimum_header_size(); // conservatively small
1293 1287
1294 // Array length 1288 // Array length
1295 if (length != NULL) { // Arrays need length field 1289 if (length != NULL) { // Arrays need length field