Mercurial > hg > truffle
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 |