src/share/vm/opto/machnode.cpp

changeset 1108
fbc12e71c476
parent 1040
98cb887364d3
child 1279
bd02caa94611
child 1286
fc4be448891f
     1.1 --- a/src/share/vm/opto/machnode.cpp	Thu Mar 26 14:39:39 2009 -0700
     1.2 +++ b/src/share/vm/opto/machnode.cpp	Thu Mar 26 15:04:55 2009 -0700
     1.3 @@ -340,6 +340,10 @@
     1.4    if (base == NodeSentinel)  return TypePtr::BOTTOM;
     1.5  
     1.6    const Type* t = base->bottom_type();
     1.7 +  if (UseCompressedOops && Universe::narrow_oop_shift() == 0) {
     1.8 +    // 32-bit unscaled narrow oop can be the base of any address expression
     1.9 +    t = t->make_ptr();
    1.10 +  }
    1.11    if (t->isa_intptr_t() && offset != 0 && offset != Type::OffsetBot) {
    1.12      // We cannot assert that the offset does not look oop-ish here.
    1.13      // Depending on the heap layout the cardmark base could land
    1.14 @@ -353,6 +357,7 @@
    1.15  
    1.16    // be conservative if we do not recognize the type
    1.17    if (tp == NULL) {
    1.18 +    assert(false, "this path may produce not optimal code");
    1.19      return TypePtr::BOTTOM;
    1.20    }
    1.21    assert(tp->base() != Type::AnyPtr, "not a bare pointer");

mercurial