On Tue, 9 May 2023 15:09:54 GMT, Chen Liang <li...@openjdk.org> wrote:
>> Add API to explore Class Hierarchy with a `ClassLoader` or a `Lookup` with >> proper privileges, with tests. >> >> This addition is useful in case classes at runtime are not loaded from the >> system class loader, such as Proxy. This is also useful to APIs that >> generate bytecode with a `Lookup` object, such as a custom >> single-abstract-method class implementations from a method handle. >> >> See >> https://mail.openjdk.org/pipermail/classfile-api-dev/2023-March/000249.html >> as well. >> >> Current questions, which I wish to discuss with @asotona: >> 1. Should the resolver fail fast on `IllegalAccessException` from the >> lookup? This usually indicates the hierarchy resolver is set up improperly, >> and proceeding may simply yield verification errors in class loading that >> are hard to track. For bytecode-generating APIs, throwing access errors for >> the Lookup eagerly is also more preferable than later silent generation >> failure. >> 2. Whether the default resolver should be reading from jrt alone, reflection >> alone, or jrt then reflection. I personally believe reflection alone is more >> reliable, for classes may redefined with instrumentation or jfr, which may >> not be reflected in the system resources. >> 3. In addition, I don't think chaining system class loader reflection after >> system resource retrieval is really meaningful: is there any case where >> reflection always works while the system resource retrieval always fails? > > Chen Liang has updated the pull request with a new target base due to a merge > or a rebase. The incremental webrev excludes the unrelated changes brought in > by the merge/rebase. The pull request contains 10 additional commits since > the last revision: > > - rename to ofClassLoading/ofResourceParsing > convert the default class provider to bypass security manager restrictions > - Merge branch 'master' into hierarchy-resolve > - Merge branch 'master' into hierarchy-resolve > - Test both cached and uncached resolvers > - Update the class hierarchy resolver api as per mailing list last week > - Merge branch 'master' into hierarchy-resolve > - Update > src/java.base/share/classes/jdk/internal/classfile/impl/ClassHierarchyImpl.java > > Co-authored-by: Andrey Turbanov <turban...@gmail.com> > - Make lookup based resolver throw on illegal access eagerly > - 8304425: ClassHierarchyResolver from Reflection > - ClassHierarchyResolver using Reflection src/java.base/share/classes/jdk/internal/classfile/impl/ClassHierarchyImpl.java line 143: > 141: var sm = System.getSecurityManager(); > 142: if (sm != null) { > 143: return AccessController.doPrivileged(new > PrivilegedAction<>() { This is out of my competency, need another reviewer for use of `PriviledgedAction` in this context. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/13082#discussion_r1188773857