equal
deleted
inserted
replaced
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?? |