hotspot/src/share/vm/opto/lcm.cpp
changeset 4580 db05951a970c
parent 4566 b363f6ef4068
child 5698 091095915ee6
child 5547 f4b087cbb361
equal deleted inserted replaced
4579:62478db2dc78 4580:db05951a970c
   118     case Op_LoadKlass:
   118     case Op_LoadKlass:
   119     case Op_LoadNKlass:
   119     case Op_LoadNKlass:
   120     case Op_LoadRange:
   120     case Op_LoadRange:
   121     case Op_LoadD_unaligned:
   121     case Op_LoadD_unaligned:
   122     case Op_LoadL_unaligned:
   122     case Op_LoadL_unaligned:
       
   123       assert(mach->in(2) == val, "should be address");
   123       break;
   124       break;
   124     case Op_StoreB:
   125     case Op_StoreB:
   125     case Op_StoreC:
   126     case Op_StoreC:
   126     case Op_StoreCM:
   127     case Op_StoreCM:
   127     case Op_StoreD:
   128     case Op_StoreD:
   144       // embedded loads
   145       // embedded loads
   145       continue;
   146       continue;
   146     default:                    // Also check for embedded loads
   147     default:                    // Also check for embedded loads
   147       if( !mach->needs_anti_dependence_check() )
   148       if( !mach->needs_anti_dependence_check() )
   148         continue;               // Not an memory op; skip it
   149         continue;               // Not an memory op; skip it
       
   150       {
       
   151         // Check that value is used in memory address.
       
   152         Node* base;
       
   153         Node* index;
       
   154         const MachOper* oper = mach->memory_inputs(base, index);
       
   155         if (oper == NULL || oper == (MachOper*)-1) {
       
   156           continue;             // Not an memory op; skip it
       
   157         }
       
   158         if (val == base ||
       
   159             val == index && val->bottom_type()->isa_narrowoop()) {
       
   160           break;                // Found it
       
   161         } else {
       
   162           continue;             // Skip it
       
   163         }
       
   164       }
   149       break;
   165       break;
   150     }
   166     }
   151     // check if the offset is not too high for implicit exception
   167     // check if the offset is not too high for implicit exception
   152     {
   168     {
   153       intptr_t offset = 0;
   169       intptr_t offset = 0;