RFR: 8259839 SystemDictionary exports too much implementation [v3]
Coleen Phillimore
coleenp at openjdk.java.net
Tue Feb 2 12:20:39 UTC 2021
On Tue, 2 Feb 2021 02:30:52 GMT, David Holmes <dholmes at openjdk.org> wrote:
>> Non-parallel capable class loaders do NOT add placeholder entries for DEFINE_CLASS (capitalized because that's the enum). There are three kinds of placeholder entries for three phases of class loading, LOAD_INSTANCE, LOAD_SUPER (for ClassCircularityException testing), and DEFINE_CLASS. The latter is only used for parallel capable class loaders (which includes the bootstrap class loader) and is used to implement parallel class definition via AllowParallelDefindClass (except we always add them even when the option is false).
>
> Sorry I'm still not seeing why we only verify DEFINE_CLASS placeholder entries?
Actually, we call verify_constraints (where this verify_placeholder call is done) twice. Once it verifies that there's a LOAD_INSTANCE placeholder from resolve_instance_class_or_null, and one path verifies there's a DEFINE_CLASS placeholder which is only used for bootstrap and parallelCapable. The verify_placeholder function only verifies that there's a placeholder present, not which one. The code that was there was essentially a nop so I replaced it with something that does something in this change, but I think I want to eventually delete it.
-------------
PR: https://git.openjdk.java.net/jdk/pull/2247
More information about the hotspot-runtime-dev
mailing list