The current implementation of java.lang.Module requires the use of "archived oops" via the HeapShared::find_archived_heap_object API:
https://github.com/openjdk/jdk/blob/c7aca73177339f931f7dfb6627365548a32874f7/src/hotspot/share/classfile/moduleEntry.cpp#L474
oop m = HeapShared::find_archived_heap_object(module_obj);
assert(m != NULL, "sanity");
_archived_module_index = HeapShared::append_root(m);
This violates requirement [1] of JDK-8298600 and should be refactored.
******
Also, we should add verification code that all the archived java.lang.Module oops and their corresponding ModuleEntry objects (if any) must be in a consistent state. More comments should be added to explain how these objects are stored into, and loaded from, the CDS archive.