1.1 --- a/src/share/vm/opto/machnode.cpp Fri Apr 11 09:56:35 2008 -0400 1.2 +++ b/src/share/vm/opto/machnode.cpp Sun Apr 13 17:43:42 2008 -0400 1.3 @@ -263,6 +263,13 @@ 1.4 // See if it adds up to a base + offset. 1.5 if (index != NULL) { 1.6 if (!index->is_Con()) { 1.7 + const TypeNarrowOop* narrowoop = index->bottom_type()->isa_narrowoop(); 1.8 + if (narrowoop != NULL) { 1.9 + // Memory references through narrow oops have a 1.10 + // funny base so grab the type from the index. 1.11 + adr_type = narrowoop->make_oopptr(); 1.12 + return NULL; 1.13 + } 1.14 disp = Type::OffsetBot; 1.15 } else if (disp != Type::OffsetBot) { 1.16 const TypeX* ti = index->bottom_type()->isa_intptr_t();