+{"files":[{"patch":"@@ -27,0 +27,1 @@\n+#include \"cds\/dumpTimeClassInfo.hpp\"\n@@ -28,0 +29,1 @@\n+#include \"classfile\/systemDictionaryShared.hpp\"\n","filename":"src\/hotspot\/share\/cds\/runTimeClassInfo.cpp","additions":2,"deletions":0,"binary":false,"changes":2,"status":"modified"},{"patch":"@@ -27,0 +27,1 @@\n+\n@@ -29,1 +30,0 @@\n-#include \"classfile\/systemDictionaryShared.hpp\"\n@@ -39,0 +39,1 @@\n+class DumpTimeClassInfo;\n@@ -49,1 +50,1 @@\n- \/\/ This is different than DumpTimeClassInfo::DTVerifierConstraint. We use\n+ \/\/ This is different than DumpTimeClassInfo::DTVerifierConstraint. We use\n","filename":"src\/hotspot\/share\/cds\/runTimeClassInfo.hpp","additions":3,"deletions":2,"binary":false,"changes":5,"status":"modified"},{"patch":"@@ -76,0 +76,3 @@\n+SystemDictionaryShared::ArchiveInfo SystemDictionaryShared::_static_archive;\n+SystemDictionaryShared::ArchiveInfo SystemDictionaryShared::_dynamic_archive;\n+\n@@ -80,9 +83,0 @@\n-\/\/ SystemDictionaries in the base layer static archive\n-RunTimeSharedDictionary SystemDictionaryShared::_builtin_dictionary;\n-RunTimeSharedDictionary SystemDictionaryShared::_unregistered_dictionary;\n-\/\/ SystemDictionaries in the top layer dynamic archive\n-RunTimeSharedDictionary SystemDictionaryShared::_dynamic_builtin_dictionary;\n-RunTimeSharedDictionary SystemDictionaryShared::_dynamic_unregistered_dictionary;\n-\n-LambdaProxyClassDictionary SystemDictionaryShared::_lambda_proxy_class_dictionary;\n-LambdaProxyClassDictionary SystemDictionaryShared::_dynamic_lambda_proxy_class_dictionary;\n@@ -130,1 +124,3 @@\n- const RunTimeClassInfo* record = find_record(&_unregistered_dictionary, &_dynamic_unregistered_dictionary, class_name);\n+ const RunTimeClassInfo* record = find_record(&_static_archive._unregistered_dictionary,\n+ &_dynamic_archive._unregistered_dictionary,\n+ class_name);\n@@ -846,1 +842,1 @@\n- const RunTimeLambdaProxyClassInfo* info = _lambda_proxy_class_dictionary.lookup(&key, key.hash(), 0);\n+ const RunTimeLambdaProxyClassInfo* info = _static_archive.lookup_lambda_proxy_class(&key);\n@@ -848,2 +844,1 @@\n- \/\/ Try lookup from the dynamic lambda proxy class dictionary.\n- info = _dynamic_lambda_proxy_class_dictionary.lookup(&key, key.hash(), 0);\n+ info = _dynamic_archive.lookup_lambda_proxy_class(&key);\n@@ -1306,6 +1301,5 @@\n- if (is_static_archive) {\n- write_dictionary(&_builtin_dictionary, true);\n- write_dictionary(&_unregistered_dictionary, false);\n- } else {\n- write_dictionary(&_dynamic_builtin_dictionary, true);\n- write_dictionary(&_dynamic_unregistered_dictionary, false);\n+ ArchiveInfo* archive = get_archive(is_static_archive);\n+\n+ if (_dumptime_table != NULL) {\n+ write_dictionary(&archive->_builtin_dictionary, true);\n+ write_dictionary(&archive->_unregistered_dictionary, false);\n@@ -1314,1 +1308,1 @@\n- write_lambda_proxy_class_dictionary(&_lambda_proxy_class_dictionary);\n+ write_lambda_proxy_class_dictionary(&archive->_lambda_proxy_class_dictionary);\n@@ -1327,16 +1321,5 @@\n- FileMapInfo *dynamic_mapinfo = FileMapInfo::dynamic_info();\n- if (is_static_archive) {\n- _builtin_dictionary.serialize_header(soc);\n- _unregistered_dictionary.serialize_header(soc);\n- if (dynamic_mapinfo == NULL || DynamicDumpSharedSpaces || (dynamic_mapinfo != NULL && UseSharedSpaces)) {\n- _lambda_proxy_class_dictionary.serialize_header(soc);\n- }\n- } else {\n- _dynamic_builtin_dictionary.serialize_header(soc);\n- _dynamic_unregistered_dictionary.serialize_header(soc);\n- if (DynamicDumpSharedSpaces) {\n- _lambda_proxy_class_dictionary.serialize_header(soc);\n- } else {\n- _dynamic_lambda_proxy_class_dictionary.serialize_header(soc);\n- }\n- }\n+ ArchiveInfo* archive = get_archive(is_static_archive);\n+\n+ archive->_builtin_dictionary.serialize_header(soc);\n+ archive->_unregistered_dictionary.serialize_header(soc);\n+ archive->_lambda_proxy_class_dictionary.serialize_header(soc);\n@@ -1387,1 +1370,3 @@\n- const RunTimeClassInfo* record = find_record(&_builtin_dictionary, &_dynamic_builtin_dictionary, name);\n+ const RunTimeClassInfo* record = find_record(&_static_archive._builtin_dictionary,\n+ &_dynamic_archive._builtin_dictionary,\n+ name);\n@@ -1459,5 +1444,2 @@\n-void SystemDictionaryShared::print_on(const char* prefix,\n- RunTimeSharedDictionary* builtin_dictionary,\n- RunTimeSharedDictionary* unregistered_dictionary,\n- LambdaProxyClassDictionary* lambda_dictionary,\n- outputStream* st) {\n+void SystemDictionaryShared::ArchiveInfo::print_on(const char* prefix,\n+ outputStream* st) {\n@@ -1467,1 +1449,1 @@\n- builtin_dictionary->iterate(&p);\n+ _builtin_dictionary.iterate(&p);\n@@ -1469,2 +1451,2 @@\n- unregistered_dictionary->iterate(&p);\n- if (!lambda_dictionary->empty()) {\n+ _unregistered_dictionary.iterate(&p);\n+ if (!_lambda_proxy_class_dictionary.empty()) {\n@@ -1473,1 +1455,1 @@\n- lambda_dictionary->iterate(&ldp);\n+ _lambda_proxy_class_dictionary.iterate(&ldp);\n@@ -1477,0 +1459,8 @@\n+void SystemDictionaryShared::ArchiveInfo::print_table_statistics(const char* prefix,\n+ outputStream* st) {\n+ st->print_cr(\"%sArchve Statistics\", prefix);\n+ _builtin_dictionary.print_table_statistics(st, \"Builtin Shared Dictionary\");\n+ _unregistered_dictionary.print_table_statistics(st, \"Unregistered Shared Dictionary\");\n+ _lambda_proxy_class_dictionary.print_table_statistics(st, \"Lambda Shared Dictionary\");\n+}\n+\n@@ -1480,1 +1470,1 @@\n- print_on(\"\", &_builtin_dictionary, &_unregistered_dictionary, &_lambda_proxy_class_dictionary, st);\n+ _static_archive.print_on(\"\", st);\n@@ -1483,2 +1473,1 @@\n- print_on(\"\", &_dynamic_builtin_dictionary, &_dynamic_unregistered_dictionary,\n- &_dynamic_lambda_proxy_class_dictionary, st);\n+ _dynamic_archive.print_on(\"Dynamic \", st);\n@@ -1491,7 +1480,2 @@\n- if (UseSharedSpaces) {\n- print_on(\"\", &_builtin_dictionary, &_unregistered_dictionary, &_lambda_proxy_class_dictionary, st);\n- if (DynamicArchive::is_mapped()) {\n- print_on(\"\", &_dynamic_builtin_dictionary, &_dynamic_unregistered_dictionary,\n- &_dynamic_lambda_proxy_class_dictionary, st);\n- }\n- }\n+ print_shared_archive(st, true);\n+ print_shared_archive(st, false);\n@@ -1502,3 +1486,1 @@\n- _builtin_dictionary.print_table_statistics(st, \"Builtin Shared Dictionary\");\n- _unregistered_dictionary.print_table_statistics(st, \"Unregistered Shared Dictionary\");\n- _lambda_proxy_class_dictionary.print_table_statistics(st, \"Lambda Shared Dictionary\");\n+ _static_archive.print_table_statistics(\"Static \", st);\n@@ -1506,3 +1488,1 @@\n- _dynamic_builtin_dictionary.print_table_statistics(st, \"Dynamic Builtin Shared Dictionary\");\n- _dynamic_unregistered_dictionary.print_table_statistics(st, \"Unregistered Shared Dictionary\");\n- _dynamic_lambda_proxy_class_dictionary.print_table_statistics(st, \"Dynamic Lambda Shared Dictionary\");\n+ _dynamic_archive.print_table_statistics(\"Dynamic \", st);\n@@ -1683,3 +1663,4 @@\n- update_archived_mirror_native_pointers_for(&_builtin_dictionary);\n- update_archived_mirror_native_pointers_for(&_unregistered_dictionary);\n- update_archived_mirror_native_pointers_for(&_lambda_proxy_class_dictionary);\n+ \/\/ mirrors are not archived for the classes in the dynamic archive\n+ update_archived_mirror_native_pointers_for(&_static_archive._builtin_dictionary);\n+ update_archived_mirror_native_pointers_for(&_static_archive._unregistered_dictionary);\n+ update_archived_mirror_native_pointers_for(&_static_archive._lambda_proxy_class_dictionary);\n","filename":"src\/hotspot\/share\/classfile\/systemDictionaryShared.cpp","additions":46,"deletions":65,"binary":false,"changes":111,"status":"modified"},{"patch":"@@ -140,0 +140,14 @@\n+\n+ struct ArchiveInfo {\n+ RunTimeSharedDictionary _builtin_dictionary;\n+ RunTimeSharedDictionary _unregistered_dictionary;\n+ LambdaProxyClassDictionary _lambda_proxy_class_dictionary;\n+\n+ const RunTimeLambdaProxyClassInfo* lookup_lambda_proxy_class(LambdaProxyClassKey* key) {\n+ return _lambda_proxy_class_dictionary.lookup(key, key->hash(), 0);\n+ }\n+\n+ void print_on(const char* prefix, outputStream* st);\n+ void print_table_statistics(const char* prefix, outputStream* st);\n+ };\n+\n@@ -153,8 +167,7 @@\n- \/\/ SystemDictionaries in the base layer static archive\n- static RunTimeSharedDictionary _builtin_dictionary;\n- static RunTimeSharedDictionary _unregistered_dictionary;\n- static LambdaProxyClassDictionary _lambda_proxy_class_dictionary;\n- \/\/ SystemDictionaries in the top layer dynamic archive\n- static RunTimeSharedDictionary _dynamic_builtin_dictionary;\n- static RunTimeSharedDictionary _dynamic_unregistered_dictionary;\n- static LambdaProxyClassDictionary _dynamic_lambda_proxy_class_dictionary;\n+\n+ static ArchiveInfo _static_archive;\n+ static ArchiveInfo _dynamic_archive;\n+\n+ static ArchiveInfo* get_archive(bool is_static_archive) {\n+ return is_static_archive ? &_static_archive : &_dynamic_archive;\n+ }\n@@ -187,5 +200,0 @@\n- static void print_on(const char* prefix,\n- RunTimeSharedDictionary* builtin_dictionary,\n- RunTimeSharedDictionary* unregistered_dictionary,\n- LambdaProxyClassDictionary* lambda_dictionary,\n- outputStream* st) NOT_CDS_RETURN;\n","filename":"src\/hotspot\/share\/classfile\/systemDictionaryShared.hpp","additions":21,"deletions":13,"binary":false,"changes":34,"status":"modified"}]}
0 commit comments