inline record ref projection contains an empty record attribute

Srikanth srikanth.adayapalam at oracle.com
Mon Dec 7 07:27:39 UTC 2020


Hi Remi,

Thanks for the problem report. 
https://bugs.openjdk.java.net/browse/JDK-8251041 tracks the issues 
relating to inline records.
We know of quite a few issues. (including reported by you in the past) - 
Jim is looking into these.

Srikanth

On 02/12/20 5:48 pm, Remi Forax wrote:
> Hi all,
> using this inline record
>
> public @__inline__ record IntBox(int value) {}
>
> When the compiler generates the ref projection, IntBox$Ref, an empty attribute "Record" is generated which i believe is a mistake.
> The ref projection should not contains that attribute at all.
>
> regards,
> Rémi
>
> ---
> Classfile /home/forax/git/transmogrif/target/classes/fr/umlv/transmogrif/IntBox$ref.class
>    Last modified Dec 2, 2020; size 222 bytes
>    SHA-256 checksum 2ee826fe2e8735044ea2a7f9e766aa101a7786385b5d27291864e7e4d550d6e2
>    Compiled from "IntBox.java"
> public abstract class fr.umlv.transmogrif.IntBox$ref extends java.lang.Record
>    minor version: 0
>    major version: 60
>    flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
>    this_class: #1                          // fr/umlv/transmogrif/IntBox$ref
>    super_class: #3                         // java/lang/Record
>    interfaces: 0, fields: 0, methods: 0, attributes: 4
> Constant pool:
>     #1 = Class              #2             // fr/umlv/transmogrif/IntBox$ref
>     #2 = Utf8               fr/umlv/transmogrif/IntBox$ref
>     #3 = Class              #4             // java/lang/Record
>     #4 = Utf8               java/lang/Record
>     #5 = Utf8               SourceFile
>     #6 = Utf8               IntBox.java
>     #7 = Utf8               NestMembers
>     #8 = Class              #9             // fr/umlv/transmogrif/IntBox
>     #9 = Utf8               fr/umlv/transmogrif/IntBox
>    #10 = Utf8               Record                                     <------------ oops
>    #11 = Utf8               PermittedSubclasses
> {
> }
> SourceFile: "IntBox.java"
> NestMembers:
>    fr/umlv/transmogrif/IntBox
> PermittedSubclasses:
>    fr/umlv/transmogrif/IntBox
> Record:
> [forax at localhost transmogrif]$ javap -private -c -verbose target/classes/fr/umlv/transmogrif/IntBox\$ref.class
> Classfile /home/forax/git/transmogrif/target/classes/fr/umlv/transmogrif/IntBox$ref.class
>    Last modified Dec 2, 2020; size 222 bytes
>    SHA-256 checksum 2ee826fe2e8735044ea2a7f9e766aa101a7786385b5d27291864e7e4d550d6e2
>    Compiled from "IntBox.java"
> public abstract class fr.umlv.transmogrif.IntBox$ref extends java.lang.Record
>    minor version: 0
>    major version: 60
>    flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
>    this_class: #1                          // fr/umlv/transmogrif/IntBox$ref
>    super_class: #3                         // java/lang/Record
>    interfaces: 0, fields: 0, methods: 0, attributes: 4
> Constant pool:
>     #1 = Class              #2             // fr/umlv/transmogrif/IntBox$ref
>     #2 = Utf8               fr/umlv/transmogrif/IntBox$ref
>     #3 = Class              #4             // java/lang/Record
>     #4 = Utf8               java/lang/Record
>     #5 = Utf8               SourceFile
>     #6 = Utf8               IntBox.java
>     #7 = Utf8               NestMembers
>     #8 = Class              #9             // fr/umlv/transmogrif/IntBox
>     #9 = Utf8               fr/umlv/transmogrif/IntBox
>    #10 = Utf8               Record
>    #11 = Utf8               PermittedSubclasses
> {
> }
> SourceFile: "IntBox.java"
> NestMembers:
>    fr/umlv/transmogrif/IntBox
> PermittedSubclasses:
>    fr/umlv/transmogrif/IntBox
> Record:                                 <------------------------ oops
>



More information about the valhalla-dev mailing list