src/share/vm/adlc/formssel.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7079329 Sdiff src/share/vm/adlc

src/share/vm/adlc/formssel.cpp

Print this page




3374 }
3375 
3376 int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
3377   static const char *needs_ideal_memory_list[] = {
3378     "StoreI","StoreL","StoreP","StoreN","StoreD","StoreF" ,
3379     "StoreB","StoreC","Store" ,"StoreFP",
3380     "LoadI", "LoadUI2L", "LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF"  ,
3381     "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load"   ,
3382     "Store4I","Store2I","Store2L","Store2D","Store4F","Store2F","Store16B",
3383     "Store8B","Store4B","Store8C","Store4C","Store2C",
3384     "Load4I" ,"Load2I" ,"Load2L" ,"Load2D" ,"Load4F" ,"Load2F" ,"Load16B" ,
3385     "Load8B" ,"Load4B" ,"Load8C" ,"Load4C" ,"Load2C" ,"Load8S", "Load4S","Load2S",
3386     "LoadRange", "LoadKlass", "LoadNKlass", "LoadL_unaligned", "LoadD_unaligned",
3387     "LoadPLocked", "LoadLLocked",
3388     "StorePConditional", "StoreIConditional", "StoreLConditional",
3389     "CompareAndSwapI", "CompareAndSwapL", "CompareAndSwapP", "CompareAndSwapN",
3390     "StoreCM",
3391     "ClearArray"
3392   };
3393   int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*);
3394   if( strcmp(_opType,"PrefetchRead")==0 || strcmp(_opType,"PrefetchWrite")==0 )


3395     return 1;
3396   if( _lChild ) {
3397     const char *opType = _lChild->_opType;
3398     for( int i=0; i<cnt; i++ )
3399       if( strcmp(opType,needs_ideal_memory_list[i]) == 0 )
3400         return 1;
3401     if( _lChild->needs_ideal_memory_edge(globals) )
3402       return 1;
3403   }
3404   if( _rChild ) {
3405     const char *opType = _rChild->_opType;
3406     for( int i=0; i<cnt; i++ )
3407       if( strcmp(opType,needs_ideal_memory_list[i]) == 0 )
3408         return 1;
3409     if( _rChild->needs_ideal_memory_edge(globals) )
3410       return 1;
3411   }
3412 
3413   return 0;
3414 }




3374 }
3375 
3376 int MatchNode::needs_ideal_memory_edge(FormDict &globals) const {
3377   static const char *needs_ideal_memory_list[] = {
3378     "StoreI","StoreL","StoreP","StoreN","StoreD","StoreF" ,
3379     "StoreB","StoreC","Store" ,"StoreFP",
3380     "LoadI", "LoadUI2L", "LoadL", "LoadP" ,"LoadN", "LoadD" ,"LoadF"  ,
3381     "LoadB" , "LoadUB", "LoadUS" ,"LoadS" ,"Load"   ,
3382     "Store4I","Store2I","Store2L","Store2D","Store4F","Store2F","Store16B",
3383     "Store8B","Store4B","Store8C","Store4C","Store2C",
3384     "Load4I" ,"Load2I" ,"Load2L" ,"Load2D" ,"Load4F" ,"Load2F" ,"Load16B" ,
3385     "Load8B" ,"Load4B" ,"Load8C" ,"Load4C" ,"Load2C" ,"Load8S", "Load4S","Load2S",
3386     "LoadRange", "LoadKlass", "LoadNKlass", "LoadL_unaligned", "LoadD_unaligned",
3387     "LoadPLocked", "LoadLLocked",
3388     "StorePConditional", "StoreIConditional", "StoreLConditional",
3389     "CompareAndSwapI", "CompareAndSwapL", "CompareAndSwapP", "CompareAndSwapN",
3390     "StoreCM",
3391     "ClearArray"
3392   };
3393   int cnt = sizeof(needs_ideal_memory_list)/sizeof(char*);
3394   if( strcmp(_opType,"PrefetchRead")==0 ||
3395       strcmp(_opType,"PrefetchWrite")==0 ||
3396       strcmp(_opType,"PrefetchAllocation")==0 )
3397     return 1;
3398   if( _lChild ) {
3399     const char *opType = _lChild->_opType;
3400     for( int i=0; i<cnt; i++ )
3401       if( strcmp(opType,needs_ideal_memory_list[i]) == 0 )
3402         return 1;
3403     if( _lChild->needs_ideal_memory_edge(globals) )
3404       return 1;
3405   }
3406   if( _rChild ) {
3407     const char *opType = _rChild->_opType;
3408     for( int i=0; i<cnt; i++ )
3409       if( strcmp(opType,needs_ideal_memory_list[i]) == 0 )
3410         return 1;
3411     if( _rChild->needs_ideal_memory_edge(globals) )
3412       return 1;
3413   }
3414 
3415   return 0;
3416 }


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