--- a/hotspot/src/share/vm/opto/memnode.cpp Tue Nov 30 23:14:25 2010 -0800
+++ b/hotspot/src/share/vm/opto/memnode.cpp Wed Dec 01 10:16:31 2010 -0800
@@ -3599,10 +3599,12 @@
intptr_t size_limit = phase->find_intptr_t_con(size_in_bytes, max_jint);
if (zeroes_done + BytesPerLong >= size_limit) {
assert(allocation() != NULL, "");
- Node* klass_node = allocation()->in(AllocateNode::KlassNode);
- ciKlass* k = phase->type(klass_node)->is_klassptr()->klass();
- if (zeroes_done == k->layout_helper())
- zeroes_done = size_limit;
+ if (allocation()->Opcode() == Op_Allocate) {
+ Node* klass_node = allocation()->in(AllocateNode::KlassNode);
+ ciKlass* k = phase->type(klass_node)->is_klassptr()->klass();
+ if (zeroes_done == k->layout_helper())
+ zeroes_done = size_limit;
+ }
}
if (zeroes_done < size_limit) {
rawmem = ClearArrayNode::clear_memory(rawctl, rawmem, rawptr,