JDK-8211723 removed the separate CDS runtime path check using SharedPathsMiscInfo and enhanced the shared path table validation to cover the additional checks. The the only usage now left for SharedPathsMiscInfo is to make sure the dump-time non-existing path components do not exist at runtime. However, SharedPathsMiscInfo::add_path() is still called to record all boot and app class paths and their types (separate from the shared path table). That adds unnecessary footprint overhead to the archive file. Also, runtime reads in all the recorded SharedPathsMiscInfo paths-string and types from the archive header. In most common use cases, all components end up just being skipped. That adds unnecessary runtime startup time overhead. The runtime processing of _paths_misc_info_size before the header validation can cause crashes in cases when the archive is invalid, JDK-8226406.
Additionally, the SharedPathsMiscInfo does not cover module path properly.
The RFE is created to further clean-up and remove SharedPathsMiscInfo completely. The non-existing path components can be recorded in the shared path table's SharedClassPathEntry::_type at dump time. The runtime non-existing path check should be done as part of the shared path table validation. That will allow us to remove SharedPathsMiscInfo and eliminate the memory and startup overhead caused by SharedPathsMiscInfo usage.
Currently, the CDS path recording and checking related code spreads in filemap.*, classLoader.*, classLoaderExt.*, and sharedPathsMiscInfo.*. With the removal of SharedPathsMiscInfo, it will allow us to further clean up the CDS code.