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(); |