6695810: null oop passed to encode_heap_oop_not_null

Fix several problems in C2 related to Escape Analysis and Compressed Oops.

Reviewed-by: never, jrose
This commit is contained in:
Vladimir Kozlov 2008-05-21 10:45:07 -07:00
parent dbf60cec88
commit 757229db71
19 changed files with 1085 additions and 248 deletions

View file

@ -1282,12 +1282,6 @@ PhaseMacroExpand::initialize_object(AllocateNode* alloc,
}
rawmem = make_store(control, rawmem, object, oopDesc::mark_offset_in_bytes(), mark_node, T_ADDRESS);
if (UseCompressedOops) {
Node *zeronode = makecon(TypeInt::ZERO);
// store uncompressed 0 into klass ptr to zero out gap. The gap is
// used for primitive fields and has to be zeroed.
rawmem = make_store(control, rawmem, object, oopDesc::klass_gap_offset_in_bytes(), zeronode, T_INT);
}
rawmem = make_store(control, rawmem, object, oopDesc::klass_offset_in_bytes(), klass_node, T_OBJECT);
int header_size = alloc->minimum_header_size(); // conservatively small