src/share/vm/memory/heapInspection.hpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 186,202 **** KlassInfoEntry* _next; Klass* _klass; long _instance_count; size_t _instance_words; long _index; ! long _super_index; GrowableArray<KlassInfoEntry*>* _subclasses; public: KlassInfoEntry(Klass* k, KlassInfoEntry* next) : _klass(k), _instance_count(0), _instance_words(0), _next(next), _index(-1), ! _super_index(-1), _subclasses(NULL) {} ~KlassInfoEntry(); KlassInfoEntry* next() const { return _next; } bool is_equal(const Klass* k) { return k == _klass; } Klass* klass() const { return _klass; } --- 186,202 ---- KlassInfoEntry* _next; Klass* _klass; long _instance_count; size_t _instance_words; long _index; ! bool _do_print; // True if we should print this class when printing the class hierarchy. GrowableArray<KlassInfoEntry*>* _subclasses; public: KlassInfoEntry(Klass* k, KlassInfoEntry* next) : _klass(k), _instance_count(0), _instance_words(0), _next(next), _index(-1), ! _do_print(false), _subclasses(NULL) {} ~KlassInfoEntry(); KlassInfoEntry* next() const { return _next; } bool is_equal(const Klass* k) { return k == _klass; } Klass* klass() const { return _klass; }
*** 204,235 **** void set_count(long ct) { _instance_count = ct; } size_t words() const { return _instance_words; } void set_words(size_t wds) { _instance_words = wds; } void set_index(long index) { _index = index; } long index() const { return _index; } - void set_super_index(long index) { _super_index = index; } - long super_index() const { return _super_index; } GrowableArray<KlassInfoEntry*>* subclasses() const { return _subclasses; } void add_subclass(KlassInfoEntry* cie); int compare(KlassInfoEntry* e1, KlassInfoEntry* e2); void print_on(outputStream* st) const; const char* name() const; }; - inline void KlassInfoEntry::add_subclass(KlassInfoEntry* cie) { - if (_subclasses == NULL) { - _subclasses = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<KlassInfoEntry*>(4, true); - } - _subclasses->append(cie); - } - - inline KlassInfoEntry::~KlassInfoEntry() { - if (_subclasses != NULL) { - delete _subclasses; - } - } - class KlassInfoClosure : public StackObj { public: // Called for each KlassInfoEntry. virtual void do_cinfo(KlassInfoEntry* cie) = 0; }; --- 204,222 ---- void set_count(long ct) { _instance_count = ct; } size_t words() const { return _instance_words; } void set_words(size_t wds) { _instance_words = wds; } void set_index(long index) { _index = index; } long index() const { return _index; } GrowableArray<KlassInfoEntry*>* subclasses() const { return _subclasses; } void add_subclass(KlassInfoEntry* cie); + void set_do_print(bool do_print) { _do_print = do_print; } + bool do_print() const { return _do_print; } int compare(KlassInfoEntry* e1, KlassInfoEntry* e2); void print_on(outputStream* st) const; const char* name() const; }; class KlassInfoClosure : public StackObj { public: // Called for each KlassInfoEntry. virtual void do_cinfo(KlassInfoEntry* cie) = 0; };
*** 282,296 **** class KlassHierarchy : public StackObj { public: KlassHierarchy(KlassInfoTable* cit, const char* title); ~KlassHierarchy(); ! static void print_class_hierarchy(outputStream* st); ! private: ! static void print_class(outputStream* st, KlassInfoEntry* cie, ! Stack <KlassInfoEntry*, mtClass> *super_stack); }; class KlassInfoHisto : public StackObj { private: static const int _histo_initial_size = 1000; --- 269,285 ---- class KlassHierarchy : public StackObj { public: KlassHierarchy(KlassInfoTable* cit, const char* title); ~KlassHierarchy(); ! static void print_class_hierarchy(outputStream* st, bool print_interfaces, bool print_subclasses, ! char* classname); ! private: ! static void set_do_print_for_class_hierarchy(KlassInfoEntry* cie, KlassInfoTable* cit, ! bool print_subclasse); ! static void print_class(outputStream* st, KlassInfoEntry* cie, bool print_subclasses); }; class KlassInfoHisto : public StackObj { private: static const int _histo_initial_size = 1000;