src/share/vm/opto/graphKit.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/graphKit.cpp	Wed Feb  4 21:22:05 2009
--- new/src/share/vm/opto/graphKit.cpp	Wed Feb  4 21:22:05 2009

*** 2943,2962 **** --- 2943,2956 ---- if (!tklass) tklass = TypeKlassPtr::OBJECT; const TypeOopPtr* oop_type = tklass->as_instance_type(); // Now generate allocation code // With escape analysis, the entire memory state is needed to be able to // eliminate the allocation. If the allocations cannot be eliminated, this // will be optimized to the raw slice when the allocation is expanded. Node *mem; if (C->do_escape_analysis()) { mem = reset_memory(); set_all_memory(mem); } else { mem = memory(Compile::AliasIdxRaw); } + // The entire memory state is needed for slow path of the allocation + // since GC and deoptimization can happened. + Node *mem = reset_memory(); + set_all_memory(mem); // Create new memory state AllocateNode* alloc = new (C, AllocateNode::ParmLimit) AllocateNode(C, AllocateNode::alloc_type(), control(), mem, i_o(),
*** 3089,3108 **** --- 3083,3096 ---- (*return_size_val) = size; } // Now generate allocation code // With escape analysis, the entire memory state is needed to be able to // eliminate the allocation. If the allocations cannot be eliminated, this // will be optimized to the raw slice when the allocation is expanded. Node *mem; if (C->do_escape_analysis()) { mem = reset_memory(); set_all_memory(mem); } else { mem = memory(Compile::AliasIdxRaw); } + // The entire memory state is needed for slow path of the allocation + // since GC and deoptimization can happened. + Node *mem = reset_memory(); + set_all_memory(mem); // Create new memory state // Create the AllocateArrayNode and its result projections AllocateArrayNode* alloc = new (C, AllocateArrayNode::ParmLimit) AllocateArrayNode(C, AllocateArrayNode::alloc_type(),

src/share/vm/opto/graphKit.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File