< prev index next >

src/hotspot/share/cds/heapShared.cpp

Print this page

1756     // aot-initialize classes that are "safe".
1757     //
1758     // TODO: we need an automatic tool that checks the safety of aot-initialized
1759     // classes (when we extend the set of aot-initialized classes beyond JEP 483)
1760     return;
1761   } else {
1762     // In this case, the special subgraph should contain a few specific types
1763     GrowableArray<Klass*>* klasses = _dump_time_special_subgraph->subgraph_object_klasses();
1764     int num = klasses->length();
1765     for (int i = 0; i < num; i++) {
1766       Klass* subgraph_k = klasses->at(i);
1767       Symbol* name = subgraph_k->name();
1768       if (subgraph_k->is_instance_klass() &&
1769           name != vmSymbols::java_lang_Class() &&
1770           name != vmSymbols::java_lang_String() &&
1771           name != vmSymbols::java_lang_ArithmeticException() &&
1772           name != vmSymbols::java_lang_ArrayIndexOutOfBoundsException() &&
1773           name != vmSymbols::java_lang_ArrayStoreException() &&
1774           name != vmSymbols::java_lang_ClassCastException() &&
1775           name != vmSymbols::java_lang_InternalError() &&
1776           name != vmSymbols::java_lang_NullPointerException()) {

1777         ResourceMark rm;
1778         fatal("special subgraph cannot have objects of type %s", subgraph_k->external_name());
1779       }
1780     }
1781   }
1782 }
1783 
1784 HeapShared::SeenObjectsTable* HeapShared::_seen_objects_table = nullptr;
1785 HeapShared::PendingOop HeapShared::_object_being_archived;
1786 int HeapShared::_num_new_walked_objs;
1787 int HeapShared::_num_new_archived_objs;
1788 int HeapShared::_num_old_recorded_klasses;
1789 
1790 int HeapShared::_num_total_subgraph_recordings = 0;
1791 int HeapShared::_num_total_walked_objs = 0;
1792 int HeapShared::_num_total_archived_objs = 0;
1793 int HeapShared::_num_total_recorded_klasses = 0;
1794 int HeapShared::_num_total_verifications = 0;
1795 
1796 bool HeapShared::has_been_seen_during_subgraph_recording(oop obj) {

1756     // aot-initialize classes that are "safe".
1757     //
1758     // TODO: we need an automatic tool that checks the safety of aot-initialized
1759     // classes (when we extend the set of aot-initialized classes beyond JEP 483)
1760     return;
1761   } else {
1762     // In this case, the special subgraph should contain a few specific types
1763     GrowableArray<Klass*>* klasses = _dump_time_special_subgraph->subgraph_object_klasses();
1764     int num = klasses->length();
1765     for (int i = 0; i < num; i++) {
1766       Klass* subgraph_k = klasses->at(i);
1767       Symbol* name = subgraph_k->name();
1768       if (subgraph_k->is_instance_klass() &&
1769           name != vmSymbols::java_lang_Class() &&
1770           name != vmSymbols::java_lang_String() &&
1771           name != vmSymbols::java_lang_ArithmeticException() &&
1772           name != vmSymbols::java_lang_ArrayIndexOutOfBoundsException() &&
1773           name != vmSymbols::java_lang_ArrayStoreException() &&
1774           name != vmSymbols::java_lang_ClassCastException() &&
1775           name != vmSymbols::java_lang_InternalError() &&
1776           name != vmSymbols::java_lang_NullPointerException() &&
1777           name != vmSymbols::jdk_internal_vm_PreemptedException()) {
1778         ResourceMark rm;
1779         fatal("special subgraph cannot have objects of type %s", subgraph_k->external_name());
1780       }
1781     }
1782   }
1783 }
1784 
1785 HeapShared::SeenObjectsTable* HeapShared::_seen_objects_table = nullptr;
1786 HeapShared::PendingOop HeapShared::_object_being_archived;
1787 int HeapShared::_num_new_walked_objs;
1788 int HeapShared::_num_new_archived_objs;
1789 int HeapShared::_num_old_recorded_klasses;
1790 
1791 int HeapShared::_num_total_subgraph_recordings = 0;
1792 int HeapShared::_num_total_walked_objs = 0;
1793 int HeapShared::_num_total_archived_objs = 0;
1794 int HeapShared::_num_total_recorded_klasses = 0;
1795 int HeapShared::_num_total_verifications = 0;
1796 
1797 bool HeapShared::has_been_seen_during_subgraph_recording(oop obj) {
< prev index next >