JDK-8244763: Update --release 8 symbol information after JSR 337 MR3

Jan Lahoda jan.lahoda at oracle.com
Mon May 18 14:55:07 UTC 2020


Some new APIs have been introduced in JSR 337 MR3 (JDK 8). We should 
update the historical data for JDK 8 with these new APIs.

As this was the first time we need to update data for a release that 
other release data use as a baseline, it was necessary to improve the 
CreateSymbols tool a little:
-adding ability to ignore synchronized and native flags for methods (as 
these don't affect the API)
-when analyzing a new entry (method/field/class), and multiple existing 
entries compatible with the new one exist, the existing entry that 
matches the baseline is chosen (this helps to eliminate unnecessary 
entries, esp. when the synchronized or native flag changes)
-when replacing/updating a release data, the original approach was to 
remove the data for the release, and read them from classfiles, and 
build the record again from scratch. This does not work well for 
baseline data, so the new approach is:
--keep all the existing data
--the new data are load into a new auxiliary slot, called "$"
--the old data for the given release are deleted
--the auxiliary release is renamed from "$" to the correct release name

Together these changes allow to minimize the updates to JDK 8 data, to 
mostly only changes in the MR3, with some extra changes like new/removed 
overrides (where the superclass has the method that is/was overridden).

The proposed changes to CreateSymbols are:

The proposed updates to the historical data are:

Note the changes only apply for JDK 8 historical data, so JDK 8 data are 
updated, and JDK 7 and 9 data undo the changes.

JBS: https://bugs.openjdk.java.net/browse/JDK-8244763

The intent is to backport to JDK 11u.

How does this look?



More information about the compiler-dev mailing list