--- old/src/hotspot/share/opto/memnode.cpp 2019-01-21 14:08:29.095754154 +0100 +++ new/src/hotspot/share/opto/memnode.cpp 2019-01-21 14:08:28.911754306 +0100 @@ -1677,6 +1677,17 @@ } } + 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; }