bool ClassLoaderData::is_alive(BoolObjectClosure* is_alive_closure) const {
  bool alive = keep_alive() // null class loader and incomplete anonymous klasses.
      || is_alive_closure->do_object_b(keep_alive_object());

#ifdef ASSERT
  if (alive) {
    AllAliveClosure all_alive_closure(is_alive_closure);
    KlassToOopClosure klass_closure(&all_alive_closure);
    const_cast<ClassLoaderData*>(this)->oops_do(&all_alive_closure, &klass_closure, false);
    assert(!all_alive_closure.found_dead(), err_msg("Found dead oop in alive cld: " PTR_FORMAT, p2i(this)));
  }
#endif

  return alive;
}
Example #2
0
bool ClassLoaderData::is_alive(BoolObjectClosure* is_alive_closure) const {
  bool alive = keep_alive() // null class loader and incomplete anonymous klasses.
      || is_alive_closure->do_object_b(keep_alive_object());

  return alive;
}