< prev index next >

src/hotspot/share/cds/heapShared.cpp

Print this page

1739     // aot-initialize classes that are "safe".
1740     //
1741     // TODO: we need an automatic tool that checks the safety of aot-initialized
1742     // classes (when we extend the set of aot-initialized classes beyond JEP 483)
1743     return;
1744   } else {
1745     // In this case, the special subgraph should contain a few specific types
1746     GrowableArray<Klass*>* klasses = _dump_time_special_subgraph->subgraph_object_klasses();
1747     int num = klasses->length();
1748     for (int i = 0; i < num; i++) {
1749       Klass* subgraph_k = klasses->at(i);
1750       Symbol* name = subgraph_k->name();
1751       if (subgraph_k->is_instance_klass() &&
1752           name != vmSymbols::java_lang_Class() &&
1753           name != vmSymbols::java_lang_String() &&
1754           name != vmSymbols::java_lang_ArithmeticException() &&
1755           name != vmSymbols::java_lang_ArrayIndexOutOfBoundsException() &&
1756           name != vmSymbols::java_lang_ArrayStoreException() &&
1757           name != vmSymbols::java_lang_ClassCastException() &&
1758           name != vmSymbols::java_lang_InternalError() &&
1759           name != vmSymbols::java_lang_NullPointerException()) {

1760         ResourceMark rm;
1761         fatal("special subgraph cannot have objects of type %s", subgraph_k->external_name());
1762       }
1763     }
1764   }
1765 }
1766 
1767 HeapShared::SeenObjectsTable* HeapShared::_seen_objects_table = nullptr;
1768 HeapShared::PendingOop HeapShared::_object_being_archived;
1769 int HeapShared::_num_new_walked_objs;
1770 int HeapShared::_num_new_archived_objs;
1771 int HeapShared::_num_old_recorded_klasses;
1772 
1773 int HeapShared::_num_total_subgraph_recordings = 0;
1774 int HeapShared::_num_total_walked_objs = 0;
1775 int HeapShared::_num_total_archived_objs = 0;
1776 int HeapShared::_num_total_recorded_klasses = 0;
1777 int HeapShared::_num_total_verifications = 0;
1778 
1779 bool HeapShared::has_been_seen_during_subgraph_recording(oop obj) {

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