hotspot/src/share/vm/oops/klass.cpp
changeset 14488 ab48109f7d1b
parent 14078 2b2b8833c422
child 14588 8ec26d2d9339
equal deleted inserted replaced
14486:7d079e0eedef 14488:ab48109f7d1b
    54 
    54 
    55   Klass* t = const_cast<Klass*>(this)->super();
    55   Klass* t = const_cast<Klass*>(this)->super();
    56 
    56 
    57   while (t != NULL) {
    57   while (t != NULL) {
    58     if (t == k) return true;
    58     if (t == k) return true;
    59     t = Klass::cast(t)->super();
    59     t = t->super();
    60   }
    60   }
    61   return false;
    61   return false;
    62 }
    62 }
    63 
    63 
    64 bool Klass::search_secondary_supers(Klass* k) const {
    64 bool Klass::search_secondary_supers(Klass* k) const {
   241 #ifdef ASSERT
   241 #ifdef ASSERT
   242     {
   242     {
   243       juint j = super_depth();
   243       juint j = super_depth();
   244       assert(j == my_depth, "computed accessor gets right answer");
   244       assert(j == my_depth, "computed accessor gets right answer");
   245       Klass* t = this;
   245       Klass* t = this;
   246       while (!Klass::cast(t)->can_be_primary_super()) {
   246       while (!t->can_be_primary_super()) {
   247         t = Klass::cast(t)->super();
   247         t = t->super();
   248         j = Klass::cast(t)->super_depth();
   248         j = t->super_depth();
   249       }
   249       }
   250       for (juint j1 = j+1; j1 < primary_super_limit(); j1++) {
   250       for (juint j1 = j+1; j1 < primary_super_limit(); j1++) {
   251         assert(primary_super_of_depth(j1) == NULL, "super list padding");
   251         assert(primary_super_of_depth(j1) == NULL, "super list padding");
   252       }
   252       }
   253       while (t != NULL) {
   253       while (t != NULL) {
   254         assert(primary_super_of_depth(j) == t, "super list initialization");
   254         assert(primary_super_of_depth(j) == t, "super list initialization");
   255         t = Klass::cast(t)->super();
   255         t = t->super();
   256         --j;
   256         --j;
   257       }
   257       }
   258       assert(j == (juint)-1, "correct depth count");
   258       assert(j == (juint)-1, "correct depth count");
   259     }
   259     }
   260 #endif
   260 #endif
   331   return NULL;
   331   return NULL;
   332 }
   332 }
   333 
   333 
   334 
   334 
   335 Klass* Klass::subklass() const {
   335 Klass* Klass::subklass() const {
   336   return _subklass == NULL ? NULL : Klass::cast(_subklass);
   336   return _subklass == NULL ? NULL : _subklass;
   337 }
   337 }
   338 
   338 
   339 InstanceKlass* Klass::superklass() const {
   339 InstanceKlass* Klass::superklass() const {
   340   assert(super() == NULL || super()->oop_is_instance(), "must be instance klass");
   340   assert(super() == NULL || super()->oop_is_instance(), "must be instance klass");
   341   return _super == NULL ? NULL : InstanceKlass::cast(_super);
   341   return _super == NULL ? NULL : InstanceKlass::cast(_super);
   342 }
   342 }
   343 
   343 
   344 Klass* Klass::next_sibling() const {
   344 Klass* Klass::next_sibling() const {
   345   return _next_sibling == NULL ? NULL : Klass::cast(_next_sibling);
   345   return _next_sibling == NULL ? NULL : _next_sibling;
   346 }
   346 }
   347 
   347 
   348 void Klass::set_subklass(Klass* s) {
   348 void Klass::set_subklass(Klass* s) {
   349   assert(s != this, "sanity check");
   349   assert(s != this, "sanity check");
   350   _subklass = s;
   350   _subklass = s;