Mercurial > hg > graal-compiler
comparison src/share/vm/services/heapDumper.cpp @ 12848:539144972c1e
8024425: VM_HeapDumper doesn't put anonymous classes in the heap dump
Summary: Switched from using SystemDictionary to using ClassLoaderDataGraph to get the anonymous classes included.
Reviewed-by: sla, sspitsyn
Contributed-by: fredrik.arvidsson@oracle.com
author | sla |
---|---|
date | Fri, 11 Oct 2013 14:08:02 +0200 |
parents | 190899198332 |
children | dcca80b5e7e7 78bbf4d43a14 |
comparison
equal
deleted
inserted
replaced
12846:e831448418ac | 12848:539144972c1e |
---|---|
1543 } while (k != NULL); | 1543 } while (k != NULL); |
1544 } | 1544 } |
1545 | 1545 |
1546 // writes a HPROF_GC_CLASS_DUMP record for the given class | 1546 // writes a HPROF_GC_CLASS_DUMP record for the given class |
1547 void VM_HeapDumper::do_class_dump(Klass* k) { | 1547 void VM_HeapDumper::do_class_dump(Klass* k) { |
1548 DumperSupport::dump_class_and_array_classes(writer(), k); | 1548 if (k->oop_is_instance()) { |
1549 DumperSupport::dump_class_and_array_classes(writer(), k); | |
1550 } | |
1549 } | 1551 } |
1550 | 1552 |
1551 // writes a HPROF_GC_CLASS_DUMP records for a given basic type | 1553 // writes a HPROF_GC_CLASS_DUMP records for a given basic type |
1552 // array (and each multi-dimensional array too) | 1554 // array (and each multi-dimensional array too) |
1553 void VM_HeapDumper::do_basic_type_array_class_dump(Klass* k) { | 1555 void VM_HeapDumper::do_basic_type_array_class_dump(Klass* k) { |
1720 // HPROF_UTF8 records | 1722 // HPROF_UTF8 records |
1721 SymbolTableDumper sym_dumper(writer()); | 1723 SymbolTableDumper sym_dumper(writer()); |
1722 SymbolTable::symbols_do(&sym_dumper); | 1724 SymbolTable::symbols_do(&sym_dumper); |
1723 | 1725 |
1724 // write HPROF_LOAD_CLASS records | 1726 // write HPROF_LOAD_CLASS records |
1725 SystemDictionary::classes_do(&do_load_class); | 1727 ClassLoaderDataGraph::classes_do(&do_load_class); |
1726 Universe::basic_type_classes_do(&do_load_class); | 1728 Universe::basic_type_classes_do(&do_load_class); |
1727 | 1729 |
1728 // write HPROF_FRAME and HPROF_TRACE records | 1730 // write HPROF_FRAME and HPROF_TRACE records |
1729 // this must be called after _klass_map is built when iterating the classes above. | 1731 // this must be called after _klass_map is built when iterating the classes above. |
1730 dump_stack_traces(); | 1732 dump_stack_traces(); |
1731 | 1733 |
1732 // write HPROF_HEAP_DUMP or HPROF_HEAP_DUMP_SEGMENT | 1734 // write HPROF_HEAP_DUMP or HPROF_HEAP_DUMP_SEGMENT |
1733 write_dump_header(); | 1735 write_dump_header(); |
1734 | 1736 |
1735 // Writes HPROF_GC_CLASS_DUMP records | 1737 // Writes HPROF_GC_CLASS_DUMP records |
1736 SystemDictionary::classes_do(&do_class_dump); | 1738 ClassLoaderDataGraph::classes_do(&do_class_dump); |
1737 Universe::basic_type_classes_do(&do_basic_type_array_class_dump); | 1739 Universe::basic_type_classes_do(&do_basic_type_array_class_dump); |
1738 check_segment_length(); | 1740 check_segment_length(); |
1739 | 1741 |
1740 // writes HPROF_GC_INSTANCE_DUMP records. | 1742 // writes HPROF_GC_INSTANCE_DUMP records. |
1741 // After each sub-record is written check_segment_length will be invoked. When | 1743 // After each sub-record is written check_segment_length will be invoked. When |