< prev index next >

src/hotspot/share/cds/heapShared.cpp

Print this page

1792     // aot-initialize classes that are "safe".
1793     //
1794     // TODO: we need an automatic tool that checks the safety of aot-initialized
1795     // classes (when we extend the set of aot-initialized classes beyond JEP 483)
1796     return;
1797   } else {
1798     // In this case, the special subgraph should contain a few specific types
1799     GrowableArray<Klass*>* klasses = _dump_time_special_subgraph->subgraph_object_klasses();
1800     int num = klasses->length();
1801     for (int i = 0; i < num; i++) {
1802       Klass* subgraph_k = klasses->at(i);
1803       Symbol* name = subgraph_k->name();
1804       if (subgraph_k->is_instance_klass() &&
1805           name != vmSymbols::java_lang_Class() &&
1806           name != vmSymbols::java_lang_String() &&
1807           name != vmSymbols::java_lang_ArithmeticException() &&
1808           name != vmSymbols::java_lang_ArrayIndexOutOfBoundsException() &&
1809           name != vmSymbols::java_lang_ArrayStoreException() &&
1810           name != vmSymbols::java_lang_ClassCastException() &&
1811           name != vmSymbols::java_lang_InternalError() &&
1812           name != vmSymbols::java_lang_NullPointerException()) {

1813         ResourceMark rm;
1814         fatal("special subgraph cannot have objects of type %s", subgraph_k->external_name());
1815       }
1816     }
1817   }
1818 }
1819 
1820 HeapShared::SeenObjectsTable* HeapShared::_seen_objects_table = nullptr;
1821 HeapShared::PendingOop HeapShared::_object_being_archived;
1822 int HeapShared::_num_new_walked_objs;
1823 int HeapShared::_num_new_archived_objs;
1824 int HeapShared::_num_old_recorded_klasses;
1825 
1826 int HeapShared::_num_total_subgraph_recordings = 0;
1827 int HeapShared::_num_total_walked_objs = 0;
1828 int HeapShared::_num_total_archived_objs = 0;
1829 int HeapShared::_num_total_recorded_klasses = 0;
1830 int HeapShared::_num_total_verifications = 0;
1831 
1832 bool HeapShared::has_been_seen_during_subgraph_recording(oop obj) {

1792     // aot-initialize classes that are "safe".
1793     //
1794     // TODO: we need an automatic tool that checks the safety of aot-initialized
1795     // classes (when we extend the set of aot-initialized classes beyond JEP 483)
1796     return;
1797   } else {
1798     // In this case, the special subgraph should contain a few specific types
1799     GrowableArray<Klass*>* klasses = _dump_time_special_subgraph->subgraph_object_klasses();
1800     int num = klasses->length();
1801     for (int i = 0; i < num; i++) {
1802       Klass* subgraph_k = klasses->at(i);
1803       Symbol* name = subgraph_k->name();
1804       if (subgraph_k->is_instance_klass() &&
1805           name != vmSymbols::java_lang_Class() &&
1806           name != vmSymbols::java_lang_String() &&
1807           name != vmSymbols::java_lang_ArithmeticException() &&
1808           name != vmSymbols::java_lang_ArrayIndexOutOfBoundsException() &&
1809           name != vmSymbols::java_lang_ArrayStoreException() &&
1810           name != vmSymbols::java_lang_ClassCastException() &&
1811           name != vmSymbols::java_lang_InternalError() &&
1812           name != vmSymbols::java_lang_NullPointerException() &&
1813           name != vmSymbols::jdk_internal_vm_PreemptedException()) {
1814         ResourceMark rm;
1815         fatal("special subgraph cannot have objects of type %s", subgraph_k->external_name());
1816       }
1817     }
1818   }
1819 }
1820 
1821 HeapShared::SeenObjectsTable* HeapShared::_seen_objects_table = nullptr;
1822 HeapShared::PendingOop HeapShared::_object_being_archived;
1823 int HeapShared::_num_new_walked_objs;
1824 int HeapShared::_num_new_archived_objs;
1825 int HeapShared::_num_old_recorded_klasses;
1826 
1827 int HeapShared::_num_total_subgraph_recordings = 0;
1828 int HeapShared::_num_total_walked_objs = 0;
1829 int HeapShared::_num_total_archived_objs = 0;
1830 int HeapShared::_num_total_recorded_klasses = 0;
1831 int HeapShared::_num_total_verifications = 0;
1832 
1833 bool HeapShared::has_been_seen_during_subgraph_recording(oop obj) {
< prev index next >