comparison src/share/vm/opto/escape.cpp @ 39:76256d272075

6667612: (Escape Analysis) disable loop cloning if it has a scalar replaceable allocation Summary: Cloning an allocation will not allow scalar replacement since memory operations could not be associated with one allocation. Reviewed-by: rasbold
author kvn
date Thu, 06 Mar 2008 10:53:33 -0800
parents b789bcaf2dd9
children 99269dbf4ba8
comparison
equal deleted inserted replaced
38:b789bcaf2dd9 39:76256d272075
599 } 599 }
600 // we have an allocation or call which returns a Java object, see if it is unescaped 600 // we have an allocation or call which returns a Java object, see if it is unescaped
601 if (es != PointsToNode::NoEscape || !ptn._unique_type) { 601 if (es != PointsToNode::NoEscape || !ptn._unique_type) {
602 continue; // can't make a unique type 602 continue; // can't make a unique type
603 } 603 }
604 if (alloc->is_Allocate()) {
605 // Set the scalar_replaceable flag before the next check.
606 alloc->as_Allocate()->_is_scalar_replaceable = true;
607 }
608
604 set_map(alloc->_idx, n); 609 set_map(alloc->_idx, n);
605 set_map(n->_idx, alloc); 610 set_map(n->_idx, alloc);
606 const TypeInstPtr *t = igvn->type(n)->isa_instptr(); 611 const TypeInstPtr *t = igvn->type(n)->isa_instptr();
607 // Unique types which are arrays are not currently supported. 612 // Unique types which are arrays are not currently supported.
608 // The check for AllocateArray is needed in case an array 613 // The check for AllocateArray is needed in case an array