hotspot/src/share/vm/oops/klass.cpp
changeset 14078 2b2b8833c422
parent 13952 e3cf184080bc
child 14488 ab48109f7d1b
equal deleted inserted replaced
13963:e5b53c306fb5 14078:2b2b8833c422
   354   assert(s != this, "sanity check");
   354   assert(s != this, "sanity check");
   355   _next_sibling = s;
   355   _next_sibling = s;
   356 }
   356 }
   357 
   357 
   358 void Klass::append_to_sibling_list() {
   358 void Klass::append_to_sibling_list() {
   359   debug_only(if (!SharedSkipVerify) verify();)
   359   debug_only(verify();)
   360   // add ourselves to superklass' subklass list
   360   // add ourselves to superklass' subklass list
   361   InstanceKlass* super = superklass();
   361   InstanceKlass* super = superklass();
   362   if (super == NULL) return;        // special case: class Object
   362   if (super == NULL) return;        // special case: class Object
   363   assert(SharedSkipVerify ||
   363   assert((!super->is_interface()    // interfaces cannot be supers
   364          (!super->is_interface()    // interfaces cannot be supers
       
   365           && (super->superklass() == NULL || !is_interface())),
   364           && (super->superklass() == NULL || !is_interface())),
   366          "an interface can only be a subklass of Object");
   365          "an interface can only be a subklass of Object");
   367   Klass* prev_first_subklass = super->subklass_oop();
   366   Klass* prev_first_subklass = super->subklass_oop();
   368   if (prev_first_subklass != NULL) {
   367   if (prev_first_subklass != NULL) {
   369     // set our sibling to be the superklass' previous first subklass
   368     // set our sibling to be the superklass' previous first subklass
   370     set_next_sibling(prev_first_subklass);
   369     set_next_sibling(prev_first_subklass);
   371   }
   370   }
   372   // make ourselves the superklass' first subklass
   371   // make ourselves the superklass' first subklass
   373   super->set_subklass(this);
   372   super->set_subklass(this);
   374   debug_only(if (!SharedSkipVerify) verify();)
   373   debug_only(verify();)
   375 }
   374 }
   376 
   375 
   377 void Klass::remove_from_sibling_list() {
   376 void Klass::remove_from_sibling_list() {
   378   // remove receiver from sibling list
   377   // remove receiver from sibling list
   379   InstanceKlass* super = superklass();
   378   InstanceKlass* super = superklass();