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

Vicente Romero vicente.romero at oracle.com
Thu Nov 28 04:37:21 UTC 2019


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 amber-dev mailing list