--- old/src/hotspot/share/memory/filemap.hpp 2019-08-27 10:06:38.053052476 -0700 +++ new/src/hotspot/share/memory/filemap.hpp 2019-08-27 10:06:37.809043662 -0700 @@ -153,17 +153,12 @@ // size of the base archive name including NULL terminator int _base_archive_name_size; - // The following is a table of all the class path entries that were used - // during dumping. At run time, we require these files to exist and have the same - // size/modification time, or else the archive will refuse to load. - // - // All of these entries must be JAR files. The dumping process would fail if a non-empty - // directory was specified in the classpaths. If an empty directory was specified - // it is checked by the _paths_misc_info as described above. - // - // FIXME -- if JAR files in the tail of the list were specified but not used during dumping, - // they should be removed from this table, to save space and to avoid spurious - // loading failures during runtime. + // The following is a table of all the boot/app/module path entries that were used + // during dumping. At run time, we we validate these entries according to their + // SharedClassPathEntry::_type. See: + // check_nonempty_dir_in_shared_path_table() + // validate_shared_path_table() + // validate_non_existent_class_paths() SharedPathTable _shared_path_table; jshort _app_class_paths_start_index; // Index of first app classpath entry @@ -225,7 +220,6 @@ FileMapHeader * _header; const char* _full_path; - char* _paths_misc_info; char* _base_archive_name; static FileMapInfo* _current_info; @@ -353,7 +347,7 @@ static int add_shared_classpaths(int i, const char* which, ClassPathEntry *cpe, TRAPS); static void check_nonempty_dir_in_shared_path_table(); bool validate_shared_path_table(); - bool validate_non_existent_class_paths() const; + void validate_non_existent_class_paths(); static void update_jar_manifest(ClassPathEntry *cpe, SharedClassPathEntry* ent, TRAPS); static int num_non_existent_class_paths(); static void record_non_existent_class_path_entry(const char* path);