< prev index next >
src/hotspot/share/opto/memnode.cpp
Print this page
@@ -1675,10 +1675,21 @@
set_req(MemNode::Memory, prev_mem);
return this;
}
}
+ AllocateNode* alloc = AllocateNode::Ideal_allocation(address, phase);
+ if (alloc != NULL && mem->is_Proj() &&
+ mem->in(0) != NULL &&
+ mem->in(0) == alloc->initialization() &&
+ Opcode() == Op_LoadX &&
+ alloc->initialization()->proj_out_or_null(0) != NULL) {
+ InitializeNode* init = alloc->initialization();
+ Node* control = init->proj_out(0);
+ return alloc->make_ideal_mark(phase, address, control, mem, NULL);
+ }
+
return progress ? this : NULL;
}
// Helper to recognize certain Klass fields which are invariant across
// some group of array types (e.g., int[] or all T[] where T < Object).
< prev index next >