< prev index next >

src/hotspot/share/classfile/classLoaderHierarchyDCmd.cpp

klass is_unloading no cache

452 
453       parent_info->add_child(info);                                                                                                  
454     }                                                                                                                                
455     return info;                                                                                                                     
456   }                                                                                                                                  
457 
458 
459 public:                                                                                                                              
460   LoaderInfoScanClosure(bool print_classes, bool verbose)                                                                            
461     : _print_classes(print_classes), _verbose(verbose), _root(NULL) {                                                                
462     _root = new LoaderTreeNode(NULL);                                                                                                
463   }                                                                                                                                  
464 
465   void print_results(outputStream* st) const {                                                                                       
466     _root->print_with_childs(st, _print_classes, _verbose);                                                                          
467   }                                                                                                                                  
468 
469   void do_cld (ClassLoaderData* cld) {                                                                                               
470 
471     // We do not display unloading loaders, for now.                                                                                 
472     if (cld->is_unloading()) {                                                                                                       
473       return;                                                                                                                        
474     }                                                                                                                                
475 
476     const oop loader_oop = cld->class_loader();                                                                                      
477 
478     LoaderTreeNode* info = find_node_or_add_empty_node(loader_oop);                                                                  
479     assert(info != NULL, "must be");                                                                                                 
480 
481     // Update CLD in node, but only if this is the primary CLD for this loader.                                                      
482     if (cld->is_unsafe_anonymous() == false) {                                                                                       
483       assert(info->cld() == NULL, "there should be only one primary CLD per loader");                                                
484       info->set_cld(cld);                                                                                                            
485     }                                                                                                                                
486 
487     // Add classes.                                                                                                                  
488     fill_in_classes(info, cld);                                                                                                      
489   }                                                                                                                                  
490 
491   void fold() {                                                                                                                      

452 
453       parent_info->add_child(info);
454     }
455     return info;
456   }
457 
458 
459 public:
460   LoaderInfoScanClosure(bool print_classes, bool verbose)
461     : _print_classes(print_classes), _verbose(verbose), _root(NULL) {
462     _root = new LoaderTreeNode(NULL);
463   }
464 
465   void print_results(outputStream* st) const {
466     _root->print_with_childs(st, _print_classes, _verbose);
467   }
468 
469   void do_cld (ClassLoaderData* cld) {
470 
471     // We do not display unloading loaders, for now.
472     if (!cld->is_alive()) {
473       return;
474     }
475 
476     const oop loader_oop = cld->class_loader();
477 
478     LoaderTreeNode* info = find_node_or_add_empty_node(loader_oop);
479     assert(info != NULL, "must be");
480 
481     // Update CLD in node, but only if this is the primary CLD for this loader.
482     if (cld->is_unsafe_anonymous() == false) {
483       assert(info->cld() == NULL, "there should be only one primary CLD per loader");
484       info->set_cld(cld);
485     }
486 
487     // Add classes.
488     fill_in_classes(info, cld);
489   }
490 
491   void fold() {
< prev index next >