RFR: 8338526: Don't store abstract and interface Klasses in class metaspace

Chen Liang liach at openjdk.org
Wed Aug 21 21:35:04 UTC 2024


On Wed, 21 Aug 2024 21:17:14 GMT, Coleen Phillimore <coleenp at openjdk.org> wrote:

>> Note that JVMS 4.1 requires `ACC_ABSTRACT` to be also set when `ACC_INTERFACE` is set. Also note that some classes capture class data to refer to hidden classes and method handles or lambda forms, so those fields' generation need to add `ACC_PUBLIC` flag to be usable in interfaces.
>
> I feel like making it ACC_INTERFACE might cause some error if there are no public nonstatic methods, which is the case with this class. I don't know what @liach your comment means, but this code got more complicated than it was with the first version of this change.  When I talked to @rose00 he thought ACC_ABSTRACT would be okay for this.

Yes, you are right that we currently don't add ACC_PUBLIC flags on methods, which will fail if we add ACC_INTERFACE. Same for the fields; these LambdaForm classes use fields to store class data that's usually stored as condy, because LambdaForm is the infrastructure that condy uses (like LambdaMetafacotry cannot use lambdas). Those fields are my concerns for the interface migration.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/19157#discussion_r1725777710


More information about the core-libs-dev mailing list