605 // but writes none |
605 // but writes none |
606 if( _matrule && _matrule->_rChild && |
606 if( _matrule && _matrule->_rChild && |
607 ( strcmp(_matrule->_rChild->_opType,"StrComp" )==0 || |
607 ( strcmp(_matrule->_rChild->_opType,"StrComp" )==0 || |
608 strcmp(_matrule->_rChild->_opType,"StrEquals" )==0 || |
608 strcmp(_matrule->_rChild->_opType,"StrEquals" )==0 || |
609 strcmp(_matrule->_rChild->_opType,"StrIndexOf" )==0 || |
609 strcmp(_matrule->_rChild->_opType,"StrIndexOf" )==0 || |
|
610 strcmp(_matrule->_rChild->_opType,"StrIndexOfChar" )==0 || |
|
611 strcmp(_matrule->_rChild->_opType,"HasNegatives" )==0 || |
610 strcmp(_matrule->_rChild->_opType,"AryEq" )==0 )) |
612 strcmp(_matrule->_rChild->_opType,"AryEq" )==0 )) |
611 return true; |
613 return true; |
612 |
614 |
613 // Check if instruction has a USE of a memory operand class, but no defs |
615 // Check if instruction has a USE of a memory operand class, but no defs |
614 bool USE_of_memory = false; |
616 bool USE_of_memory = false; |
885 |
887 |
886 if( _matrule->_rChild && |
888 if( _matrule->_rChild && |
887 ( strcmp(_matrule->_rChild->_opType,"AryEq" )==0 || |
889 ( strcmp(_matrule->_rChild->_opType,"AryEq" )==0 || |
888 strcmp(_matrule->_rChild->_opType,"StrComp" )==0 || |
890 strcmp(_matrule->_rChild->_opType,"StrComp" )==0 || |
889 strcmp(_matrule->_rChild->_opType,"StrEquals" )==0 || |
891 strcmp(_matrule->_rChild->_opType,"StrEquals" )==0 || |
|
892 strcmp(_matrule->_rChild->_opType,"StrInflatedCopy" )==0 || |
|
893 strcmp(_matrule->_rChild->_opType,"StrCompressedCopy" )==0 || |
890 strcmp(_matrule->_rChild->_opType,"StrIndexOf")==0 || |
894 strcmp(_matrule->_rChild->_opType,"StrIndexOf")==0 || |
|
895 strcmp(_matrule->_rChild->_opType,"StrIndexOfChar")==0 || |
|
896 strcmp(_matrule->_rChild->_opType,"HasNegatives")==0 || |
891 strcmp(_matrule->_rChild->_opType,"EncodeISOArray")==0)) { |
897 strcmp(_matrule->_rChild->_opType,"EncodeISOArray")==0)) { |
892 // String.(compareTo/equals/indexOf) and Arrays.equals |
898 // String.(compareTo/equals/indexOf) and Arrays.equals |
893 // and sun.nio.cs.iso8859_1$Encoder.EncodeISOArray |
899 // and sun.nio.cs.iso8859_1$Encoder.EncodeISOArray |
894 // take 1 control and 1 memory edges. |
900 // take 1 control and 1 memory edges. |
|
901 // Also String.(compressedCopy/inflatedCopy). |
895 return 2; |
902 return 2; |
896 } |
903 } |
897 |
904 |
898 // Check for handling of 'Memory' input/edge in the ideal world. |
905 // Check for handling of 'Memory' input/edge in the ideal world. |
899 // The AD file writer is shielded from knowledge of these edges. |
906 // The AD file writer is shielded from knowledge of these edges. |