On Fri, 20 May 2022 18:22:47 GMT, liach <d...@openjdk.java.net> wrote:
>> Simplify calls `Class.forName(String, boolean, ClassLoader)` instead of >> `Class.forName(String)`. `make test >> TEST="jtreg:test/jdk/java/lang/reflect/Proxy"` passes, with the new >> `LazyInitializationTest` failing the eager initialization check on the >> baseline and passing with this patch. >> >> On a side note, this might reduce the number of methods that can be encoded >> in a proxy due to code attribute size restrictions; we probably would >> address that in another issue, as we never mandated a count of methods that >> the proxy must be able to implement. >> >> Mandy, would you mind review this? > > liach has updated the pull request incrementally with one additional commit > since the last revision: > > Move the try catch block as it doesn't throw checked exceptions src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java line 605: > 603: mv.visitLdcInsn(Type.getObjectType(dotToSlash(className))); > 604: mv.visitMethodInsn(INVOKEVIRTUAL, JL_CLASS, > 605: "getClassLoader", "()" + LJL_CLASSLOADER, false); Hello @liach, should this instead be using the (application supplied) `loader` returned by the call to `ProxyGenerator.getClassLoader()` or maybe the `loader` member in the `ProxyGenerator` itself? test/jdk/java/lang/reflect/Proxy/LazyInitializationTest.java line 56: > 54: > 55: value.m(new Parameter()); > 56: Assert.assertTrue(initialized, "parameter type initialized after > instantiation"); > "parameter type initialized after instantiation" Since this is the text that gets displayed/reported when the assertion fails, should this instead be "parameter type not initialized"? ------------- PR: https://git.openjdk.java.net/jdk/pull/8800