6856025: assert(_base >= OopPtr && _base <= KlassPtr,"Not a Java pointer")

Wed, 01 Jul 2009 12:22:23 -0700

author
never
date
Wed, 01 Jul 2009 12:22:23 -0700
changeset 1262
bf3489cc0aa0
parent 1261
3f06f139ef53
child 1263
b64314863098

6856025: assert(_base >= OopPtr && _base <= KlassPtr,"Not a Java pointer")
Reviewed-by: kvn

src/share/vm/adlc/output_h.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/graphKit.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/library_call.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/parse2.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/parse3.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/type.cpp file | annotate | diff | comparison | revisions
src/share/vm/opto/type.hpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/adlc/output_h.cpp	Fri Jun 26 16:14:31 2009 -0700
     1.2 +++ b/src/share/vm/adlc/output_h.cpp	Wed Jul 01 12:22:23 2009 -0700
     1.3 @@ -1367,11 +1367,11 @@
     1.4          else if (!strcmp(oper->ideal_type(_globalNames), "ConN")) {
     1.5            // Access the locally stored constant
     1.6            fprintf(fp,"  virtual intptr_t       constant() const {");
     1.7 -          fprintf(fp,   " return _c0->make_oopptr()->get_con();");
     1.8 +          fprintf(fp,   " return _c0->get_ptrtype()->get_con();");
     1.9            fprintf(fp, " }\n");
    1.10            // Generate query to determine if this pointer is an oop
    1.11            fprintf(fp,"  virtual bool           constant_is_oop() const {");
    1.12 -          fprintf(fp,   " return _c0->make_oopptr()->isa_oop_ptr();");
    1.13 +          fprintf(fp,   " return _c0->get_ptrtype()->isa_oop_ptr();");
    1.14            fprintf(fp, " }\n");
    1.15          }
    1.16          else if (!strcmp(oper->ideal_type(_globalNames), "ConL")) {
     2.1 --- a/src/share/vm/opto/graphKit.cpp	Fri Jun 26 16:14:31 2009 -0700
     2.2 +++ b/src/share/vm/opto/graphKit.cpp	Wed Jul 01 12:22:23 2009 -0700
     2.3 @@ -1480,7 +1480,7 @@
     2.4        }
     2.5      }
     2.6    } else if (adr_type->isa_aryptr()) {
     2.7 -    val_type = adr_type->is_aryptr()->elem()->isa_oopptr();
     2.8 +    val_type = adr_type->is_aryptr()->elem()->make_oopptr();
     2.9    }
    2.10    if (val_type == NULL) {
    2.11      val_type = TypeInstPtr::BOTTOM;
     3.1 --- a/src/share/vm/opto/library_call.cpp	Fri Jun 26 16:14:31 2009 -0700
     3.2 +++ b/src/share/vm/opto/library_call.cpp	Wed Jul 01 12:22:23 2009 -0700
     3.3 @@ -2393,7 +2393,7 @@
     3.4    case T_OBJECT:
     3.5       // reference stores need a store barrier.
     3.6      // (They don't if CAS fails, but it isn't worth checking.)
     3.7 -    pre_barrier(control(), base, adr, alias_idx, newval, value_type->is_oopptr(), T_OBJECT);
     3.8 +    pre_barrier(control(), base, adr, alias_idx, newval, value_type->make_oopptr(), T_OBJECT);
     3.9  #ifdef _LP64
    3.10      if (adr->bottom_type()->is_ptr_to_narrowoop()) {
    3.11        Node *newval_enc = _gvn.transform(new (C, 2) EncodePNode(newval, newval->bottom_type()->make_narrowoop()));
     4.1 --- a/src/share/vm/opto/parse2.cpp	Fri Jun 26 16:14:31 2009 -0700
     4.2 +++ b/src/share/vm/opto/parse2.cpp	Wed Jul 01 12:22:23 2009 -0700
     4.3 @@ -1565,7 +1565,7 @@
     4.4      c = pop();                  // Oop to store
     4.5      b = pop();                  // index (already used)
     4.6      a = pop();                  // the array itself
     4.7 -    const TypeOopPtr* elemtype  = _gvn.type(a)->is_aryptr()->elem()->is_oopptr();
     4.8 +    const TypeOopPtr* elemtype  = _gvn.type(a)->is_aryptr()->elem()->make_oopptr();
     4.9      const TypeAryPtr* adr_type = TypeAryPtr::OOPS;
    4.10      Node* store = store_oop_to_array(control(), a, d, adr_type, c, elemtype, T_OBJECT);
    4.11      break;
     5.1 --- a/src/share/vm/opto/parse3.cpp	Fri Jun 26 16:14:31 2009 -0700
     5.2 +++ b/src/share/vm/opto/parse3.cpp	Wed Jul 01 12:22:23 2009 -0700
     5.3 @@ -361,7 +361,7 @@
     5.4      guarantee(length_con >= 0, "non-constant multianewarray");
     5.5      ciArrayKlass* array_klass_1 = array_klass->as_obj_array_klass()->element_klass()->as_array_klass();
     5.6      const TypePtr* adr_type = TypeAryPtr::OOPS;
     5.7 -    const TypeOopPtr*    elemtype = _gvn.type(array)->is_aryptr()->elem()->is_oopptr();
     5.8 +    const TypeOopPtr*    elemtype = _gvn.type(array)->is_aryptr()->elem()->make_oopptr();
     5.9      const intptr_t header   = arrayOopDesc::base_offset_in_bytes(T_OBJECT);
    5.10      for (jint i = 0; i < length_con; i++) {
    5.11        Node*    elem   = expand_multianewarray(array_klass_1, &lengths[1], ndimensions-1, nargs);
     6.1 --- a/src/share/vm/opto/type.cpp	Fri Jun 26 16:14:31 2009 -0700
     6.2 +++ b/src/share/vm/opto/type.cpp	Wed Jul 01 12:22:23 2009 -0700
     6.3 @@ -3484,27 +3484,27 @@
     6.4  //------------------------------hash-------------------------------------------
     6.5  // Type-specific hashing function.
     6.6  int TypeNarrowOop::hash(void) const {
     6.7 -  return _ooptype->hash() + 7;
     6.8 +  return _ptrtype->hash() + 7;
     6.9  }
    6.10  
    6.11  
    6.12  bool TypeNarrowOop::eq( const Type *t ) const {
    6.13    const TypeNarrowOop* tc = t->isa_narrowoop();
    6.14    if (tc != NULL) {
    6.15 -    if (_ooptype->base() != tc->_ooptype->base()) {
    6.16 +    if (_ptrtype->base() != tc->_ptrtype->base()) {
    6.17        return false;
    6.18      }
    6.19 -    return tc->_ooptype->eq(_ooptype);
    6.20 +    return tc->_ptrtype->eq(_ptrtype);
    6.21    }
    6.22    return false;
    6.23  }
    6.24  
    6.25  bool TypeNarrowOop::singleton(void) const {    // TRUE if type is a singleton
    6.26 -  return _ooptype->singleton();
    6.27 +  return _ptrtype->singleton();
    6.28  }
    6.29  
    6.30  bool TypeNarrowOop::empty(void) const {
    6.31 -  return _ooptype->empty();
    6.32 +  return _ptrtype->empty();
    6.33  }
    6.34  
    6.35  //------------------------------xmeet------------------------------------------
    6.36 @@ -3538,7 +3538,7 @@
    6.37      return this;
    6.38  
    6.39    case NarrowOop: {
    6.40 -    const Type* result = _ooptype->xmeet(t->make_ptr());
    6.41 +    const Type* result = _ptrtype->xmeet(t->make_ptr());
    6.42      if (result->isa_ptr()) {
    6.43        return TypeNarrowOop::make(result->is_ptr());
    6.44      }
    6.45 @@ -3554,13 +3554,13 @@
    6.46  }
    6.47  
    6.48  const Type *TypeNarrowOop::xdual() const {    // Compute dual right now.
    6.49 -  const TypePtr* odual = _ooptype->dual()->is_ptr();
    6.50 +  const TypePtr* odual = _ptrtype->dual()->is_ptr();
    6.51    return new TypeNarrowOop(odual);
    6.52  }
    6.53  
    6.54  const Type *TypeNarrowOop::filter( const Type *kills ) const {
    6.55    if (kills->isa_narrowoop()) {
    6.56 -    const Type* ft =_ooptype->filter(kills->is_narrowoop()->_ooptype);
    6.57 +    const Type* ft =_ptrtype->filter(kills->is_narrowoop()->_ptrtype);
    6.58      if (ft->empty())
    6.59        return Type::TOP;           // Canonical empty value
    6.60      if (ft->isa_ptr()) {
    6.61 @@ -3568,7 +3568,7 @@
    6.62      }
    6.63      return ft;
    6.64    } else if (kills->isa_ptr()) {
    6.65 -    const Type* ft = _ooptype->join(kills);
    6.66 +    const Type* ft = _ptrtype->join(kills);
    6.67      if (ft->empty())
    6.68        return Type::TOP;           // Canonical empty value
    6.69      return ft;
    6.70 @@ -3579,13 +3579,13 @@
    6.71  
    6.72  
    6.73  intptr_t TypeNarrowOop::get_con() const {
    6.74 -  return _ooptype->get_con();
    6.75 +  return _ptrtype->get_con();
    6.76  }
    6.77  
    6.78  #ifndef PRODUCT
    6.79  void TypeNarrowOop::dump2( Dict & d, uint depth, outputStream *st ) const {
    6.80    st->print("narrowoop: ");
    6.81 -  _ooptype->dump2(d, depth, st);
    6.82 +  _ptrtype->dump2(d, depth, st);
    6.83  }
    6.84  #endif
    6.85  
     7.1 --- a/src/share/vm/opto/type.hpp	Fri Jun 26 16:14:31 2009 -0700
     7.2 +++ b/src/share/vm/opto/type.hpp	Wed Jul 01 12:22:23 2009 -0700
     7.3 @@ -232,6 +232,11 @@
     7.4  
     7.5    // Returns this ptr type or the equivalent ptr type for this compressed pointer.
     7.6    const TypePtr* make_ptr() const;
     7.7 +
     7.8 +  // Returns this oopptr type or the equivalent oopptr type for this compressed pointer.
     7.9 +  // Asserts if the underlying type is not an oopptr or narrowoop.
    7.10 +  const TypeOopPtr* make_oopptr() const;
    7.11 +
    7.12    // Returns this compressed pointer or the equivalent compressed version
    7.13    // of this pointer type.
    7.14    const TypeNarrowOop* make_narrowoop() const;
    7.15 @@ -932,13 +937,13 @@
    7.16  // between the normal and the compressed form.
    7.17  class TypeNarrowOop : public Type {
    7.18  protected:
    7.19 -  const TypePtr* _ooptype; // Could be TypePtr::NULL_PTR
    7.20 +  const TypePtr* _ptrtype; // Could be TypePtr::NULL_PTR
    7.21  
    7.22 -  TypeNarrowOop( const TypePtr* ooptype): Type(NarrowOop),
    7.23 -    _ooptype(ooptype) {
    7.24 -    assert(ooptype->offset() == 0 ||
    7.25 -           ooptype->offset() == OffsetBot ||
    7.26 -           ooptype->offset() == OffsetTop, "no real offsets");
    7.27 +  TypeNarrowOop( const TypePtr* ptrtype): Type(NarrowOop),
    7.28 +    _ptrtype(ptrtype) {
    7.29 +    assert(ptrtype->offset() == 0 ||
    7.30 +           ptrtype->offset() == OffsetBot ||
    7.31 +           ptrtype->offset() == OffsetTop, "no real offsets");
    7.32    }
    7.33  public:
    7.34    virtual bool eq( const Type *t ) const;
    7.35 @@ -962,8 +967,8 @@
    7.36    }
    7.37  
    7.38    // returns the equivalent ptr type for this compressed pointer
    7.39 -  const TypePtr *make_oopptr() const {
    7.40 -    return _ooptype;
    7.41 +  const TypePtr *get_ptrtype() const {
    7.42 +    return _ptrtype;
    7.43    }
    7.44  
    7.45    static const TypeNarrowOop *BOTTOM;
    7.46 @@ -1150,10 +1155,14 @@
    7.47  }
    7.48  
    7.49  inline const TypePtr* Type::make_ptr() const {
    7.50 -  return (_base == NarrowOop) ? is_narrowoop()->make_oopptr() :
    7.51 +  return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype() :
    7.52                                  (isa_ptr() ? is_ptr() : NULL);
    7.53  }
    7.54  
    7.55 +inline const TypeOopPtr* Type::make_oopptr() const {
    7.56 +  return (_base == NarrowOop) ? is_narrowoop()->get_ptrtype()->is_oopptr() : is_oopptr();
    7.57 +}
    7.58 +
    7.59  inline const TypeNarrowOop* Type::make_narrowoop() const {
    7.60    return (_base == NarrowOop) ? is_narrowoop() :
    7.61                                  (isa_ptr() ? TypeNarrowOop::make(is_ptr()) : NULL);

mercurial