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