src/share/vm/opto/machnode.cpp

changeset 548
ba764ed4b6f2
parent 435
a61af66fc99e
child 631
d1605aabd0a1
child 651
8d191a7697e2
     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();

mercurial