src/share/vm/opto/addnode.cpp

changeset 1082
bd441136a5ce
parent 1077
660978a2a31a
child 1279
bd02caa94611
     1.1 --- a/src/share/vm/opto/addnode.cpp	Wed Mar 18 11:37:48 2009 -0400
     1.2 +++ b/src/share/vm/opto/addnode.cpp	Thu Mar 19 09:13:24 2009 -0700
     1.3 @@ -756,7 +756,13 @@
     1.4        if ( eti == NULL ) {
     1.5          // there must be one pointer among the operands
     1.6          guarantee(tptr == NULL, "must be only one pointer operand");
     1.7 -        tptr = et->isa_oopptr();
     1.8 +        if (UseCompressedOops && Universe::narrow_oop_shift() == 0) {
     1.9 +          // 32-bits narrow oop can be the base of address expressions
    1.10 +          tptr = et->make_ptr()->isa_oopptr();
    1.11 +        } else {
    1.12 +          // only regular oops are expected here
    1.13 +          tptr = et->isa_oopptr();
    1.14 +        }
    1.15          guarantee(tptr != NULL, "non-int operand must be pointer");
    1.16          if (tptr->higher_equal(tp->add_offset(tptr->offset())))
    1.17            tp = tptr; // Set more precise type for bailout

mercurial