Currently, the only way to archive an object subgraph is to call HeapShared::archive_reachable_objects_from_static_field, which requires the root to be in a static field of a Java class.
To support JDK-8198698 (Archive Lambda classes in CDS), we need to store subgraphs from other sources, such as objects stored in ConstantPool::resolved_references().
Therefore, we need to refactor archive_reachable_objects_from_static_field to move the functionality independent of static fields into a common function.