On 10/11/2020 2:34 am, Jorn Vernee wrote:
On Mon, 9 Nov 2020 12:11:56 GMT, Jorn Vernee <jver...@openjdk.org> wrote:

I agree with Coleen.

I'll give this another try, but I think last time I tried this resolution of 
the class failed when trying to build the JDK, seemingly since it exists in an 
incubator module, which is not always added to the module graph.

Ok, I can confirm that moving this to be a well-known class will result in a 
`java/lang/NoClassDefFoundError: 
jdk/internal/foreign/abi/ProgrammableUpcallHandler` error while trying to build 
the JDK. I think this is because the particular class is in an incubator 
module, which is not always present.

Right ... well-known classes appear to be limited to being in java.base module.

I think we'll have to stick with the lazy resolution instead.

I think this could still be done non-racily during VM startup, after module system initialization i.e. between:

 call_initPhase2()
 ...
 call_initPhase3()

in Threads::create_vm. And it could still use the mechanisms in systemDictionary to define a global accessor I think, even if not initialized with the other "well known" classes. I don't have a good mental picture of how all the pieces of this connect in terms of Java APIs and VM entry points so these structuring suggestions may, or may not make sense. Potentially this could be a future cleanup anyway.

Thanks,
David
-----

-------------

PR: https://git.openjdk.java.net/jdk/pull/634

Reply via email to