RFR: JEP 359: Records (Preview) (full code)

Vicente Romero vicente.romero at oracle.com
Thu Nov 28 16:05:52 UTC 2019

Hi again,

Sorry but I realized that I forgot to remove some code on the compiler 
side. The code removed is small, before we were issuing an error if some 
serialization methods were declared as record members. That section was 
removed from the spec. I have prepared another iteration with this 
change at [1]


[1] http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.01/

On 11/27/19 11:37 PM, Vicente Romero wrote:
> Hi,
> Please review the code for the records feature at [1]. This webrev 
> includes all: APIs, runtime, compiler, serialization, javadoc, and 
> more! Must of the code has been reviewed but there have been some 
> changes since reviewers saw it. Also this is the first time an 
> integral webrev is sent out for review. Last changes on top of my mind 
> since last review iterations:
> On the compiler implementation:
> - it has been adapted to the last version of the language spec [2], as 
> a reference the JVM spec is at [3]. This implied some changes in 
> determining if a user defined constructor is the canonical or not. Now 
> if a constructor is override-equivalent to a signature derived from 
> the record components, then it is considered the canonical 
> constructor. And any canonical constructor should satisfy a set of 
> restrictions, see section 8.10.4 Record Constructor Declarations of 
> the specification.
> - It was also added a check to make sure that accessors are not generic.
> - And that the canonical constructor, if user defined, is not 
> explicitly invoking any other constructor.
> - The list of forbidden record component names has also been updated.
> - new error messages have been added
> APIs:
> - there have been some API editing in java.lang.Record, 
> java.lang.runtime.ObjectMethods and java.lang.reflect.RecordComponent, 
> java.io.ObjectInputStream, javax.lang.model (some visitors were added)
> On the JVM implementation:
> - some logging capabilities have been added to classFileParser.cpp to 
> provide the reason for which the Record attribute has been ignored
> Reflection:
> - there are several new changes to the implementation of 
> java.lang.reflect.RecordComponent apart from the spec changes 
> mentioned before.
> bug fixes in
> - compiler
> - serialization,
> - JVM, etc
> As a reference the last iteration of the previous reviews can be found 
> at [4] under folders: compiler, hotspot_runtime, javadoc, reflection 
> and serialization,
> TIA,
> Vicente
> [1] 
> http://cr.openjdk.java.net/~vromero/records.review/all_code/webrev.00/
> [2] 
> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jls.html
> [3] 
> http://cr.openjdk.java.net/~gbierman/jep359/jep359-20191125/specs/records-jvms.html
> [4] http://cr.openjdk.java.net/~vromero/records.review/

More information about the compiler-dev mailing list