hotspot/src/share/vm/opto/machnode.cpp
changeset 360 21d113ecbf6a
parent 1 489c9b5090e2
child 762 1b26adb5fea1
child 670 ddf3e9583f2f
equal deleted inserted replaced
357:f4edb0d9f109 360:21d113ecbf6a
   261     int scale = oper->scale();
   261     int scale = oper->scale();
   262     // Now we have collected every part of the ADLC MEMORY_INTER.
   262     // Now we have collected every part of the ADLC MEMORY_INTER.
   263     // See if it adds up to a base + offset.
   263     // See if it adds up to a base + offset.
   264     if (index != NULL) {
   264     if (index != NULL) {
   265       if (!index->is_Con()) {
   265       if (!index->is_Con()) {
       
   266         const TypeNarrowOop* narrowoop = index->bottom_type()->isa_narrowoop();
       
   267         if (narrowoop != NULL) {
       
   268           // Memory references through narrow oops have a
       
   269           // funny base so grab the type from the index.
       
   270           adr_type = narrowoop->make_oopptr();
       
   271           return NULL;
       
   272         }
   266         disp = Type::OffsetBot;
   273         disp = Type::OffsetBot;
   267       } else if (disp != Type::OffsetBot) {
   274       } else if (disp != Type::OffsetBot) {
   268         const TypeX* ti = index->bottom_type()->isa_intptr_t();
   275         const TypeX* ti = index->bottom_type()->isa_intptr_t();
   269         if (ti == NULL) {
   276         if (ti == NULL) {
   270           disp = Type::OffsetBot;  // a random constant??
   277           disp = Type::OffsetBot;  // a random constant??