3597 zeroes_done = align_size_down(zeroes_done, BytesPerInt); |
3597 zeroes_done = align_size_down(zeroes_done, BytesPerInt); |
3598 // if it is the last unused 4 bytes of an instance, forget about it |
3598 // if it is the last unused 4 bytes of an instance, forget about it |
3599 intptr_t size_limit = phase->find_intptr_t_con(size_in_bytes, max_jint); |
3599 intptr_t size_limit = phase->find_intptr_t_con(size_in_bytes, max_jint); |
3600 if (zeroes_done + BytesPerLong >= size_limit) { |
3600 if (zeroes_done + BytesPerLong >= size_limit) { |
3601 assert(allocation() != NULL, ""); |
3601 assert(allocation() != NULL, ""); |
3602 Node* klass_node = allocation()->in(AllocateNode::KlassNode); |
3602 if (allocation()->Opcode() == Op_Allocate) { |
3603 ciKlass* k = phase->type(klass_node)->is_klassptr()->klass(); |
3603 Node* klass_node = allocation()->in(AllocateNode::KlassNode); |
3604 if (zeroes_done == k->layout_helper()) |
3604 ciKlass* k = phase->type(klass_node)->is_klassptr()->klass(); |
3605 zeroes_done = size_limit; |
3605 if (zeroes_done == k->layout_helper()) |
|
3606 zeroes_done = size_limit; |
|
3607 } |
3606 } |
3608 } |
3607 if (zeroes_done < size_limit) { |
3609 if (zeroes_done < size_limit) { |
3608 rawmem = ClearArrayNode::clear_memory(rawctl, rawmem, rawptr, |
3610 rawmem = ClearArrayNode::clear_memory(rawctl, rawmem, rawptr, |
3609 zeroes_done, size_in_bytes, phase); |
3611 zeroes_done, size_in_bytes, phase); |
3610 } |
3612 } |