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

Jan Lahoda jan.lahoda at oracle.com
Mon May 18 16:36:49 UTC 2020


I apologize, I used a wrong patch for the "data" webrev. The "class name 
java/util/jar/Attributes$Name" entry in java.base-7.sym.txt is first 
adding field descriptions, and then removing the old ones:
---
> class name java/util/jar/Attributes$Name
> field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name; flags 19
> field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name; flags 19
> field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name; flags 19
> -field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name;
> -field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name;
> -field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name;---

The correct order (and the order generated by the tool in the 
webrev.00-create-symbols/ webrev) is to first remove the field 
descriptions and then add the new ones:
---
> class name java/util/jar/Attributes$Name
> -field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name;
> -field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name;
> -field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name;
> field name EXTENSION_INSTALLATION descriptor Ljava/util/jar/Attributes$Name; flags 19
> field name IMPLEMENTATION_VENDOR_ID descriptor Ljava/util/jar/Attributes$Name; flags 19
> field name IMPLEMENTATION_URL descriptor Ljava/util/jar/Attributes$Name; flags 19
---

An updated webrev is the correct data is here:
http://cr.openjdk.java.net/~jlahoda/8244763/webrev.01-data/

The only change is the above difference in order of entries in 
Attributes$Name.

Sorry for trouble.

Jan

On 18. 05. 20 16:55, Jan Lahoda wrote:
> Hi,
> 
> 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:
> http://cr.openjdk.java.net/~jlahoda/8244763/webrev.00-create-symbols/
> 
> The proposed updates to the historical data are:
> http://cr.openjdk.java.net/~jlahoda/8244763/webrev.00-data/
> 
> 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?
> 
> Thanks!
> 
> Jan



More information about the build-dev mailing list