equal
deleted
inserted
replaced
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; |