Re: RFR: 8265909 : build.tools.dtdbuilder.DTDBuilder.java failed detecting missing path of dtd_home

2021-06-07 Thread ScientificWare
On Thu, 22 Apr 2021 13:47:03 GMT, ScientificWare 
 wrote:

> This concerns [dtdbuilder 
> tools](https://github.com/openjdk/jdk/tree/master/make/jdk/src/classes/build/tools/dtdbuilder).
> 
> In jshell, try `System.getProperty("html32") + ""` you'll get a `String`.
> 
> So, in `DTDBuilder.java` when none `dtd_home` property is set, the `dtd_home` 
> string value is not `null`, causing an exception with the present test.
> 
> The expected value is `"Must set property 'dtd_home'"`
> 
> And in this case, should'nt we have a `System.exit(1)` too rather than a 
> simple `return` ?

>

-

PR: https://git.openjdk.java.net/jdk/pull/3626


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512 [v3]

2021-06-07 Thread Jatin Bhateja
On Tue, 8 Jun 2021 00:30:38 GMT, Scott Gibbons 
 wrote:

>> Add the Base64 Decode intrinsic for x86 to utilize AVX-512 for acceleration. 
>> Also allows for performance improvement for non-AVX-512 enabled platforms. 
>> Due to the nature of MIME-encoded inputs, modify the intrinsic signature to 
>> accept an additional parameter (isMIME) for fast-path MIME decoding.
>> 
>> A change was made to the signature of DecodeBlock in Base64.java to provide 
>> the intrinsic information as to whether MIME decoding was being done.  This 
>> allows for the intrinsic to bypass the expensive setup of zmm registers from 
>> AVX tables, knowing there may be invalid Base64 characters every 76 
>> characters or so.  A change was also made here removing the restriction that 
>> the intrinsic must return an even multiple of 3 bytes decoded.  This 
>> implementation handles the pad characters at the end of the string and will 
>> return the actual number of characters decoded.
>> 
>> The AVX portion of this code will decode in blocks of 256 bytes per loop 
>> iteration, then in chunks of 64 bytes, followed by end fixup decoding.  The 
>> non-AVX code is an assembly-optimized version of the java DecodeBlock and 
>> behaves identically.
>> 
>> Running the Base64Decode benchmark, this change increases decode performance 
>> by an average of 2.6x with a maximum 19.7x for buffers > ~20k.  The numbers 
>> are given in the table below.
>> 
>> **Base Score** is without intrinsic support, **Optimized Score** is using 
>> this intrinsic, and **Gain** is **Base** / **Optimized**.
>> 
>> 
>> Benchmark Name | Base Score | Optimized Score | Gain
>> -- | -- | -- | --
>> testBase64Decode size 1 | 15.36 | 15.32 | 1.00
>> testBase64Decode size 3 | 17.00 | 16.72 | 1.02
>> testBase64Decode size 7 | 20.60 | 18.82 | 1.09
>> testBase64Decode size 32 | 34.21 | 26.77 | 1.28
>> testBase64Decode size 64 | 54.43 | 38.35 | 1.42
>> testBase64Decode size 80 | 66.40 | 48.34 | 1.37
>> testBase64Decode size 96 | 73.16 | 52.90 | 1.38
>> testBase64Decode size 112 | 84.93 | 51.82 | 1.64
>> testBase64Decode size 512 | 288.81 | 32.04 | 9.01
>> testBase64Decode size 1000 | 560.48 | 40.79 | 13.74
>> testBase64Decode size 2 | 9530.28 | 483.37 | 19.72
>> testBase64Decode size 5 | 24552.24 | 1735.07 | 14.15
>> testBase64MIMEDecode size 1 | 22.87 | 21.36 | 1.07
>> testBase64MIMEDecode size 3 | 27.79 | 25.32 | 1.10
>> testBase64MIMEDecode size 7 | 44.74 | 43.81 | 1.02
>> testBase64MIMEDecode size 32 | 142.69 | 129.56 | 1.10
>> testBase64MIMEDecode size 64 | 256.90 | 243.80 | 1.05
>> testBase64MIMEDecode size 80 | 311.60 | 310.80 | 1.00
>> testBase64MIMEDecode size 96 | 364.00 | 346.66 | 1.05
>> testBase64MIMEDecode size 112 | 472.88 | 394.78 | 1.20
>> testBase64MIMEDecode size 512 | 1814.96 | 1671.28 | 1.09
>> testBase64MIMEDecode size 1000 | 3623.50 | 3227.61 | 1.12
>> testBase64MIMEDecode size 2 | 70484.09 | 64940.77 | 1.09
>> testBase64MIMEDecode size 5 | 191732.34 | 158158.95 | 1.21
>> testBase64WithErrorInputsDecode size 1 | 1531.02 | 1185.19 | 1.29
>> testBase64WithErrorInputsDecode size 3 | 1306.59 | 1170.99 | 1.12
>> testBase64WithErrorInputsDecode size 7 | 1238.11 | 1176.62 | 1.05
>> testBase64WithErrorInputsDecode size 32 | 1346.46 | 1138.47 | 1.18
>> testBase64WithErrorInputsDecode size 64 | 1195.28 | 1172.52 | 1.02
>> testBase64WithErrorInputsDecode size 80 | 1469.00 | 1180.94 | 1.24
>> testBase64WithErrorInputsDecode size 96 | 1434.48 | 1167.74 | 1.23
>> testBase64WithErrorInputsDecode size 112 | 1440.06 | 1162.56 | 1.24
>> testBase64WithErrorInputsDecode size 512 | 1362.79 | 1193.42 | 1.14
>> testBase64WithErrorInputsDecode size 1000 | 1426.07 | 1194.44 | 1.19
>> testBase64WithErrorInputsDecode size   2 | 1398.44 | 1138.17 | 1.23
>> testBase64WithErrorInputsDecode size   5 | 1409.41 | 1114.16 | 1.26
>
> Scott Gibbons has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Fixing review comments.  Adding notes about isMIME parameter for other 
> architectures; clarifying decodeBlock comments.

src/hotspot/cpu/x86/stubGenerator_x86_64.cpp line 6239:

> 6237: 
> 6238:   __ align(32);
> 6239:   __ BIND(L_bruteForce);

Is this alignment needed ? Given that brute force loop is already aligned.

-

PR: https://git.openjdk.java.net/jdk/pull/4368


Re: RFR: 8265440: IGV: make node selection more visible

2021-06-07 Thread Koichi Sakata
On Wed, 2 Jun 2021 06:22:44 GMT, Koichi Sakata  wrote:

> This pull request makes node selection more visible.
> 
> At present when selecting node, node name is bolder. In addition to that, 
> thickness of the border is bolder after applying this code.
> 
> I tested manually. Here are the images that I took before and after applying 
> this patch as follows.
> 
> ### After Applying the Code
>  src="https://user-images.githubusercontent.com/60008/120432008-425f3f00-c3b4-11eb-91ed-2f940279affd.png";>  width="300" alt="スクリーンショット 2021-06-02 14 40 43" 
> src="https://user-images.githubusercontent.com/60008/120432019-44c19900-c3b4-11eb-81ad-9412869e1c28.png";>
> 
> Left: "0 Root" and "3 Start" are selected.
> Right: "0 Root" and "3 Start" are selected. "3 Start" and "7 Parm" are 
> highlighted.
> 
>  src="https://user-images.githubusercontent.com/60008/120432028-468b5c80-c3b4-11eb-8673-9172761a15b2.png";>  width="200" alt="スクリーンショット 2021-06-02 14 44 11" 
> src="https://user-images.githubusercontent.com/60008/120432029-4723f300-c3b4-11eb-833e-f6cb8dd30129.png";>
> 
> Left: The upper right slot of "20 MergeMem" are selected.
> Right: The upper right slot of "20 MergeMem" are selected and highlighted.
> 
> ### Before Applying the Code
>  src="https://user-images.githubusercontent.com/60008/120432024-45f2c600-c3b4-11eb-879d-7977caaa0e39.png";>  width="300" alt="スクリーンショット 2021-06-02 14 42 29" 
> src="https://user-images.githubusercontent.com/60008/120432025-45f2c600-c3b4-11eb-85ed-6dd8a0c8ff60.png";>
> 
> Left: "0 Root" and "3 Start" are selected.
> Right: "0 Root" and "3 Start" are selected. "3 Start" and "7 Parm" are 
> highlighted.

Could someone possibly sponsor this pull request?

Thanks,
Koichi

-

PR: https://git.openjdk.java.net/jdk/pull/4298


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512 [v3]

2021-06-07 Thread Scott Gibbons
> Add the Base64 Decode intrinsic for x86 to utilize AVX-512 for acceleration. 
> Also allows for performance improvement for non-AVX-512 enabled platforms. 
> Due to the nature of MIME-encoded inputs, modify the intrinsic signature to 
> accept an additional parameter (isMIME) for fast-path MIME decoding.
> 
> A change was made to the signature of DecodeBlock in Base64.java to provide 
> the intrinsic information as to whether MIME decoding was being done.  This 
> allows for the intrinsic to bypass the expensive setup of zmm registers from 
> AVX tables, knowing there may be invalid Base64 characters every 76 
> characters or so.  A change was also made here removing the restriction that 
> the intrinsic must return an even multiple of 3 bytes decoded.  This 
> implementation handles the pad characters at the end of the string and will 
> return the actual number of characters decoded.
> 
> The AVX portion of this code will decode in blocks of 256 bytes per loop 
> iteration, then in chunks of 64 bytes, followed by end fixup decoding.  The 
> non-AVX code is an assembly-optimized version of the java DecodeBlock and 
> behaves identically.
> 
> Running the Base64Decode benchmark, this change increases decode performance 
> by an average of 2.6x with a maximum 19.7x for buffers > ~20k.  The numbers 
> are given in the table below.
> 
> **Base Score** is without intrinsic support, **Optimized Score** is using 
> this intrinsic, and **Gain** is **Base** / **Optimized**.
> 
> 
> Benchmark Name | Base Score | Optimized Score | Gain
> -- | -- | -- | --
> testBase64Decode size 1 | 15.36 | 15.32 | 1.00
> testBase64Decode size 3 | 17.00 | 16.72 | 1.02
> testBase64Decode size 7 | 20.60 | 18.82 | 1.09
> testBase64Decode size 32 | 34.21 | 26.77 | 1.28
> testBase64Decode size 64 | 54.43 | 38.35 | 1.42
> testBase64Decode size 80 | 66.40 | 48.34 | 1.37
> testBase64Decode size 96 | 73.16 | 52.90 | 1.38
> testBase64Decode size 112 | 84.93 | 51.82 | 1.64
> testBase64Decode size 512 | 288.81 | 32.04 | 9.01
> testBase64Decode size 1000 | 560.48 | 40.79 | 13.74
> testBase64Decode size 2 | 9530.28 | 483.37 | 19.72
> testBase64Decode size 5 | 24552.24 | 1735.07 | 14.15
> testBase64MIMEDecode size 1 | 22.87 | 21.36 | 1.07
> testBase64MIMEDecode size 3 | 27.79 | 25.32 | 1.10
> testBase64MIMEDecode size 7 | 44.74 | 43.81 | 1.02
> testBase64MIMEDecode size 32 | 142.69 | 129.56 | 1.10
> testBase64MIMEDecode size 64 | 256.90 | 243.80 | 1.05
> testBase64MIMEDecode size 80 | 311.60 | 310.80 | 1.00
> testBase64MIMEDecode size 96 | 364.00 | 346.66 | 1.05
> testBase64MIMEDecode size 112 | 472.88 | 394.78 | 1.20
> testBase64MIMEDecode size 512 | 1814.96 | 1671.28 | 1.09
> testBase64MIMEDecode size 1000 | 3623.50 | 3227.61 | 1.12
> testBase64MIMEDecode size 2 | 70484.09 | 64940.77 | 1.09
> testBase64MIMEDecode size 5 | 191732.34 | 158158.95 | 1.21
> testBase64WithErrorInputsDecode size 1 | 1531.02 | 1185.19 | 1.29
> testBase64WithErrorInputsDecode size 3 | 1306.59 | 1170.99 | 1.12
> testBase64WithErrorInputsDecode size 7 | 1238.11 | 1176.62 | 1.05
> testBase64WithErrorInputsDecode size 32 | 1346.46 | 1138.47 | 1.18
> testBase64WithErrorInputsDecode size 64 | 1195.28 | 1172.52 | 1.02
> testBase64WithErrorInputsDecode size 80 | 1469.00 | 1180.94 | 1.24
> testBase64WithErrorInputsDecode size 96 | 1434.48 | 1167.74 | 1.23
> testBase64WithErrorInputsDecode size 112 | 1440.06 | 1162.56 | 1.24
> testBase64WithErrorInputsDecode size 512 | 1362.79 | 1193.42 | 1.14
> testBase64WithErrorInputsDecode size 1000 | 1426.07 | 1194.44 | 1.19
> testBase64WithErrorInputsDecode size   2 | 1398.44 | 1138.17 | 1.23
> testBase64WithErrorInputsDecode size   5 | 1409.41 | 1114.16 | 1.26

Scott Gibbons has updated the pull request incrementally with one additional 
commit since the last revision:

  Fixing review comments.  Adding notes about isMIME parameter for other 
architectures; clarifying decodeBlock comments.

-

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/4368/files
  - new: https://git.openjdk.java.net/jdk/pull/4368/files/00fd5621..d66e32e3

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4368&range=02
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4368&range=01-02

  Stats: 19 lines in 3 files changed: 8 ins; 4 del; 7 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4368.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4368/head:pull/4368

PR: https://git.openjdk.java.net/jdk/pull/4368


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512 [v2]

2021-06-07 Thread Corey Ashford
On Tue, 8 Jun 2021 00:11:42 GMT, Scott Gibbons 
 wrote:

>> src/java.base/share/classes/java/util/Base64.java line 813:
>> 
>>> 811: while (sp < sl) {
>>> 812: if (shiftto == 18 && sp < sl - 4) {   // fast path
>>> 813: int dl = decodeBlock(src, sp, sl, dst, dp, isURL, 
>>> isMIME);
>> 
>> This new param is passed all the way down to the intrinsic.  I think 
>> existing intrinsics can safely ignore this parameter if it doesn't help the 
>> implementation (for example PPC64-LE has 16-byte vector registers, so isn't 
>> quite as seriously impacted by MIME).  However, in the code for the PPC64-LE 
>> intrinsic, this new parameter isn't mentioned.  I think if you're going to 
>> add a new parameter, it should be mentioned in the existing intrinsics as 
>> being present, but unused.
>
> Are you suggesting that I change *all* intrinsic implementations (aarch64, 
> ppc, etc.)?  I have no problem doing that - just checking if this is what's 
> desired.

Yes. I didn't realize that there's a decodeBlock intrinsic for aarch64 already, 
but yeah it should only be a couple of lines of comments for each.

-

PR: https://git.openjdk.java.net/jdk/pull/4368


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512 [v2]

2021-06-07 Thread Scott Gibbons
On Mon, 7 Jun 2021 22:34:33 GMT, Corey Ashford  wrote:

>> Scott Gibbons has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Update full name
>
> src/java.base/share/classes/java/util/Base64.java line 813:
> 
>> 811: while (sp < sl) {
>> 812: if (shiftto == 18 && sp < sl - 4) {   // fast path
>> 813: int dl = decodeBlock(src, sp, sl, dst, dp, isURL, 
>> isMIME);
> 
> This new param is passed all the way down to the intrinsic.  I think existing 
> intrinsics can safely ignore this parameter if it doesn't help the 
> implementation (for example PPC64-LE has 16-byte vector registers, so isn't 
> quite as seriously impacted by MIME).  However, in the code for the PPC64-LE 
> intrinsic, this new parameter isn't mentioned.  I think if you're going to 
> add a new parameter, it should be mentioned in the existing intrinsics as 
> being present, but unused.

Are you suggesting that I change *all* intrinsic implementations (aarch64, ppc, 
etc.)?  I have no problem doing that - just checking if this is what's desired.

> src/java.base/share/classes/java/util/Base64.java line 818:
> 
>> 816:  * bytes of data were returned.
>> 817:  */
>> 818: int chars_decoded = ((dl + 2) / 3) * 4;
> 
> In the PR comments, you say, "A change was also made here removing the 
> restriction that the intrinsic must return an even multiple of 3 bytes 
> decoded.", however there's still a comment in the code above that says:
> 
>  * If the intrinsic function does not process all of the bytes in
>  * src, it must process a multiple of four of them, making the
>  * returned destination length a multiple of three.
> 
> So this comment needs to be changed or removed to reflect your commit.

I will change the comment, and add verbage regarding the new parameter.  Thank 
you.

-

PR: https://git.openjdk.java.net/jdk/pull/4368


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512 [v2]

2021-06-07 Thread Corey Ashford
On Mon, 7 Jun 2021 13:20:20 GMT, Scott Gibbons 
 wrote:

>> Add the Base64 Decode intrinsic for x86 to utilize AVX-512 for acceleration. 
>> Also allows for performance improvement for non-AVX-512 enabled platforms. 
>> Due to the nature of MIME-encoded inputs, modify the intrinsic signature to 
>> accept an additional parameter (isMIME) for fast-path MIME decoding.
>> 
>> A change was made to the signature of DecodeBlock in Base64.java to provide 
>> the intrinsic information as to whether MIME decoding was being done.  This 
>> allows for the intrinsic to bypass the expensive setup of zmm registers from 
>> AVX tables, knowing there may be invalid Base64 characters every 76 
>> characters or so.  A change was also made here removing the restriction that 
>> the intrinsic must return an even multiple of 3 bytes decoded.  This 
>> implementation handles the pad characters at the end of the string and will 
>> return the actual number of characters decoded.
>> 
>> The AVX portion of this code will decode in blocks of 256 bytes per loop 
>> iteration, then in chunks of 64 bytes, followed by end fixup decoding.  The 
>> non-AVX code is an assembly-optimized version of the java DecodeBlock and 
>> behaves identically.
>> 
>> Running the Base64Decode benchmark, this change increases decode performance 
>> by an average of 2.6x with a maximum 19.7x for buffers > ~20k.  The numbers 
>> are given in the table below.
>> 
>> **Base Score** is without intrinsic support, **Optimized Score** is using 
>> this intrinsic, and **Gain** is **Base** / **Optimized**.
>> 
>> 
>> Benchmark Name | Base Score | Optimized Score | Gain
>> -- | -- | -- | --
>> testBase64Decode size 1 | 15.36 | 15.32 | 1.00
>> testBase64Decode size 3 | 17.00 | 16.72 | 1.02
>> testBase64Decode size 7 | 20.60 | 18.82 | 1.09
>> testBase64Decode size 32 | 34.21 | 26.77 | 1.28
>> testBase64Decode size 64 | 54.43 | 38.35 | 1.42
>> testBase64Decode size 80 | 66.40 | 48.34 | 1.37
>> testBase64Decode size 96 | 73.16 | 52.90 | 1.38
>> testBase64Decode size 112 | 84.93 | 51.82 | 1.64
>> testBase64Decode size 512 | 288.81 | 32.04 | 9.01
>> testBase64Decode size 1000 | 560.48 | 40.79 | 13.74
>> testBase64Decode size 2 | 9530.28 | 483.37 | 19.72
>> testBase64Decode size 5 | 24552.24 | 1735.07 | 14.15
>> testBase64MIMEDecode size 1 | 22.87 | 21.36 | 1.07
>> testBase64MIMEDecode size 3 | 27.79 | 25.32 | 1.10
>> testBase64MIMEDecode size 7 | 44.74 | 43.81 | 1.02
>> testBase64MIMEDecode size 32 | 142.69 | 129.56 | 1.10
>> testBase64MIMEDecode size 64 | 256.90 | 243.80 | 1.05
>> testBase64MIMEDecode size 80 | 311.60 | 310.80 | 1.00
>> testBase64MIMEDecode size 96 | 364.00 | 346.66 | 1.05
>> testBase64MIMEDecode size 112 | 472.88 | 394.78 | 1.20
>> testBase64MIMEDecode size 512 | 1814.96 | 1671.28 | 1.09
>> testBase64MIMEDecode size 1000 | 3623.50 | 3227.61 | 1.12
>> testBase64MIMEDecode size 2 | 70484.09 | 64940.77 | 1.09
>> testBase64MIMEDecode size 5 | 191732.34 | 158158.95 | 1.21
>> testBase64WithErrorInputsDecode size 1 | 1531.02 | 1185.19 | 1.29
>> testBase64WithErrorInputsDecode size 3 | 1306.59 | 1170.99 | 1.12
>> testBase64WithErrorInputsDecode size 7 | 1238.11 | 1176.62 | 1.05
>> testBase64WithErrorInputsDecode size 32 | 1346.46 | 1138.47 | 1.18
>> testBase64WithErrorInputsDecode size 64 | 1195.28 | 1172.52 | 1.02
>> testBase64WithErrorInputsDecode size 80 | 1469.00 | 1180.94 | 1.24
>> testBase64WithErrorInputsDecode size 96 | 1434.48 | 1167.74 | 1.23
>> testBase64WithErrorInputsDecode size 112 | 1440.06 | 1162.56 | 1.24
>> testBase64WithErrorInputsDecode size 512 | 1362.79 | 1193.42 | 1.14
>> testBase64WithErrorInputsDecode size 1000 | 1426.07 | 1194.44 | 1.19
>> testBase64WithErrorInputsDecode size   2 | 1398.44 | 1138.17 | 1.23
>> testBase64WithErrorInputsDecode size   5 | 1409.41 | 1114.16 | 1.26
>
> Scott Gibbons has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Update full name

Thanks for making this interesting update, which improves the flexibility of 
intrinsics to make use of isMIME.

src/java.base/share/classes/java/util/Base64.java line 813:

> 811: while (sp < sl) {
> 812: if (shiftto == 18 && sp < sl - 4) {   // fast path
> 813: int dl = decodeBlock(src, sp, sl, dst, dp, isURL, 
> isMIME);

This new param is passed all the way down to the intrinsic.  I think existing 
intrinsics can safely ignore this parameter if it doesn't help the 
implementation (for example PPC64-LE has 16-byte vector registers, so isn't 
quite as seriously impacted by MIME).  However, in the code for the PPC64-LE 
intrinsic, this new parameter isn't mentioned.  I think if you're going to add 
a new parameter, it should be mentioned in the existing intrinsics as being 
present, but unused.

src/java.base/share/classes/java/util/Base64.java line 818:

> 816:  * bytes of data were returned.
> 817:  */
> 818

Re: RFR: 8267630: Start of release updates for JDK 18 [v5]

2021-06-07 Thread Iris Clark
On Mon, 7 Jun 2021 19:38:58 GMT, Joe Darcy  wrote:

>> 8267630: Start of release updates for JDK 18
>
> Joe Darcy has updated the pull request with a new target base due to a merge 
> or a rebase. The incremental webrev excludes the unrelated changes brought in 
> by the merge/rebase. The pull request contains 17 additional commits since 
> the last revision:
> 
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - Update symbols for JDK 17 b25.
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - Merge branch 'master' into 8267630
>  - ... and 7 more: 
> https://git.openjdk.java.net/jdk/compare/41bce524...34480e50

Marked as reviewed by iris (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/4175


Re: RFR: JDK-8263468: New page for "recent" new API [v2]

2021-06-07 Thread Hannes Wallnöfer
On Mon, 7 Jun 2021 14:53:55 GMT, Jonathan Gibbons  wrote:

>> Hannes Wallnöfer has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   JDK-8263468: automate build integration
>
> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties
>  line 268:
> 
>> 266: doclet.help.new.body=\
>> 267: The {0} page lists APIs that have been added in recent releases. \
>> 268: The content of this page is based on information provided by 
>> Javadoc @since tags.
> 
> Either change to "JavaDoc" or (preferably?) just delete this word, or even 
> the sentence.
> 
> Is there any interaction with `-nosince`? Should there be?

I removed the second sentence. 

There is no interaction with `-nosince`. I one point I thought `-nosince` 
should disable this feature, but actually both features are just different ways 
of displaying the information stored in `@since` tags that don't depend on each 
other.

> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Extern.java
>  line 337:
> 
>> 335:  */
>> 336: public int getSourceVersionNumber() {
>> 337: return configuration.docEnv.getSourceVersion().ordinal();
> 
> As a general comment, I believe Joe does not encourage use of `ordinal`

I undid this change as it's not really part of the feature.

-

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: JDK-8263468: New page for "recent" new API [v3]

2021-06-07 Thread Hannes Wallnöfer
On Mon, 7 Jun 2021 15:27:21 GMT, Jonathan Gibbons  wrote:

>> Hannes Wallnöfer has updated the pull request with a new target base due to 
>> a merge or a rebase. The pull request now contains 16 commits:
>> 
>>  - Merge branch 'master' into JDK-8263468
>>  - JDK-8263468: automate build integration
>>  - JDK-8263468: make constant static
>>  - JDK-8263468: Remove unused DocPaths methods
>>  - JDK-8263468: Cleanup
>>  - JDK-8263468: Add tests
>>  - JDK-8263468: Update to new Table methods
>>  - Merge branch 'master' into JDK-8263468
>>
>># Conflicts:
>># 
>> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css
>>  - JDK-8263468: Fix tests
>>  - JDK-8263468: Update to latest CSR
>>  - ... and 6 more: 
>> https://git.openjdk.java.net/jdk/compare/3396b69f...3b13ae32
>
> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java
>  line 49:
> 
>> 47: /**
>> 48:  * Generate File to list all the new API elements with the
>> 49:  * appropriate links.
> 
> (minor) not standard form of comment, but it's "only" an internal class, so 
> could be fixed up later

This comment and the comment below was copied and adapter from another 
SummaryListWriter subclass. I took the liberty of rewriting both comments.

-

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: JDK-8263468: New page for "recent" new API [v2]

2021-06-07 Thread Hannes Wallnöfer
On Mon, 7 Jun 2021 14:52:57 GMT, Jonathan Gibbons  wrote:

>> Hannes Wallnöfer has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   JDK-8263468: automate build integration
>
> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties
>  line 112:
> 
>> 110: doclet.Deprecated_Tabs_Intro=(The leftmost tab "Deprecated ..." 
>> indicates all the \
>> 111: deprecated elements, regardless of the releases in which they were 
>> deprecated. \
>> 112: Each of the righthand tabs "Deprecated in ..." indicates the 
>> elements deprecated \
> 
> "Each of the righthand" doesn't read well.   Would "Each of the other" be 
> better?

Changed to "Each of the other".

-

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: JDK-8263468: New page for "recent" new API [v4]

2021-06-07 Thread Hannes Wallnöfer
> This adds a new kind of summary list for new API added in specific releases, 
> and adds information to the deprecated API list about elements that were 
> deprecated in the given releases.
> 
> The changes to the code are relatively minor thanks to the existing 
> infrastructure for summary list pages, which was extended by adding the 
> `getTableCaption` and `addTableTabs` methods to `SummaryListWriter.java` in 
> order to generate tabbed tables. 
> 
> One important area that needs to be reviewed is the addition of resources in 
> `standard.properties`. A relatively big share of discussion and effort went 
> into shaping the UI messages.
> 
> The build system change adds options to generate API changes for all releases 
> after JDK 11, with "New API since JDK 11" as page title for the new API page. 
> I uploaded the generated documentation here:
> 
> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/new-list.html
> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/deprecated-list.html

Hannes Wallnöfer has updated the pull request incrementally with one additional 
commit since the last revision:

  JDK-8263468: review comments

-

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/4209/files
  - new: https://git.openjdk.java.net/jdk/pull/4209/files/3b13ae32..c9c5f832

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4209&range=03
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4209&range=02-03

  Stats: 29 lines in 7 files changed: 6 ins; 2 del; 21 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4209.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4209/head:pull/4209

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: 8267630: Start of release updates for JDK 18 [v5]

2021-06-07 Thread Joe Darcy
> 8267630: Start of release updates for JDK 18

Joe Darcy has updated the pull request with a new target base due to a merge or 
a rebase. The incremental webrev excludes the unrelated changes brought in by 
the merge/rebase. The pull request contains 17 additional commits since the 
last revision:

 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - Update symbols for JDK 17 b25.
 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - Merge branch 'master' into 8267630
 - ... and 7 more: https://git.openjdk.java.net/jdk/compare/947ea6f5...34480e50

-

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/4175/files
  - new: https://git.openjdk.java.net/jdk/pull/4175/files/f926c1bc..34480e50

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4175&range=04
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4175&range=03-04

  Stats: 24229 lines in 300 files changed: 22483 ins; 936 del; 810 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4175.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4175/head:pull/4175

PR: https://git.openjdk.java.net/jdk/pull/4175


Integrated: 8268296: ScopedMemoryAccess build error with readonly filesystems

2021-06-07 Thread Liam Miller-Cushon
On Sun, 6 Jun 2021 20:09:32 GMT, Liam Miller-Cushon  wrote:

> This change fixes a build error during the generation of 
> `ScopedMemoryAccess.java` when the sources are readonly, by using `cat a > b` 
> instead of `cp a b` to avoid propagating the permissions to the generated 
> source.

This pull request has now been integrated.

Changeset: e546ae27
Author:Liam Miller-Cushon 
URL:   
https://git.openjdk.java.net/jdk/commit/e546ae27ffc6c19ae078a41ab6e1741a104958c1
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod

8268296: ScopedMemoryAccess build error with readonly filesystems

Reviewed-by: erikj

-

PR: https://git.openjdk.java.net/jdk/pull/4380


Re: RFR: 8268083: JDK-8267706 breaks bin/idea.sh on a Mac

2021-06-07 Thread Erik Joelsson
On Fri, 4 Jun 2021 21:23:27 GMT, Nikita Gubarkov 
 wrote:

> I got rid of `realpath` usage as discussed in 
> https://github.com/openjdk/jdk/pull/4190 and used `RelativePath` macro 
> instead, however there were quite a few problems with this macro, here's the 
> example:
> 
> $(call RelativePath,/foo/bar,/foo/bar/baz) -> "..//foo/bar"
> $(call RelativePath,/foo/bar/baz/,/foo/bar/baz) -> SEGFAULT
> $(call RelativePath,/foo/bar/baz/banan,/foo/bar/) -> "./baz/banan"
> $(call RelativePath,/foo/bar/baz,/foo/bar/banan) -> "../baz"
> 
> As you can see, 1st case is just plain wrong, 2nd crashes make because of 
> infinite loop, 3rd can be simplified and all of them have leading whitespaces
> First commit in this PR fixes all these issues and adds corresponding test 
> cases and second commit replaces usage of `realpath` in idea.sh with 
> `RelativePath` macro in idea.gmk and fixes problems, when paths are 
> incorrectly treated by IDEA

All builds passed, approved.

-

Marked as reviewed by erikj (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4369


Integrated: 8268299: jvms tag produces incorrect URL

2021-06-07 Thread Joe Darcy
On Sun, 6 Jun 2021 22:03:46 GMT, Joe Darcy  wrote:

> The @jls and @jvms taglet share most of their functionality.  A  JLS URL 
> looks like
> 
> https://docs.oracle.com/javase/specs/jls/se16/html/**jls**-8.html#jls-8.1
> 
> and a JVMS URL looks like
> 
> 
> https://docs.oracle.com/javase/specs/jvms/se16/html/**jvms**-4.html#jvms-4.3.2
> 
> The current taglet incorrectly uses "jls" in from the chapter for both JLS 
> and JVMS URLs. The patch corrects this to use "jvms" for JVMS URLs.

This pull request has now been integrated.

Changeset: e663ba96
Author:Joe Darcy 
URL:   
https://git.openjdk.java.net/jdk/commit/e663ba961f25c83758815bbfce97a58d9560c7a2
Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod

8268299: jvms tag produces incorrect URL

Reviewed-by: iris, erikj, jjg

-

PR: https://git.openjdk.java.net/jdk/pull/4381


Re: RFR: 8268299: jvms tag produces incorrect URL

2021-06-07 Thread Jonathan Gibbons
On Sun, 6 Jun 2021 22:03:46 GMT, Joe Darcy  wrote:

> The @jls and @jvms taglet share most of their functionality.  A  JLS URL 
> looks like
> 
> https://docs.oracle.com/javase/specs/jls/se16/html/**jls**-8.html#jls-8.1
> 
> and a JVMS URL looks like
> 
> 
> https://docs.oracle.com/javase/specs/jvms/se16/html/**jvms**-4.html#jvms-4.3.2
> 
> The current taglet incorrectly uses "jls" in from the chapter for both JLS 
> and JVMS URLs. The patch corrects this to use "jvms" for JVMS URLs.

Marked as reviewed by jjg (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/4381


Re: RFR: JDK-8263468: New page for "recent" new API [v3]

2021-06-07 Thread Jonathan Gibbons
On Mon, 7 Jun 2021 15:46:45 GMT, Jonathan Gibbons  wrote:

>> Hannes Wallnöfer has updated the pull request with a new target base due to 
>> a merge or a rebase. The pull request now contains 16 commits:
>> 
>>  - Merge branch 'master' into JDK-8263468
>>  - JDK-8263468: automate build integration
>>  - JDK-8263468: make constant static
>>  - JDK-8263468: Remove unused DocPaths methods
>>  - JDK-8263468: Cleanup
>>  - JDK-8263468: Add tests
>>  - JDK-8263468: Update to new Table methods
>>  - Merge branch 'master' into JDK-8263468
>>
>># Conflicts:
>># 
>> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css
>>  - JDK-8263468: Fix tests
>>  - JDK-8263468: Update to latest CSR
>>  - ... and 6 more: 
>> https://git.openjdk.java.net/jdk/compare/3396b69f...3b13ae32
>
> test/langtools/jdk/javadoc/doclet/testNewApiList/mdl/module-info.java line 30:
> 
>> 28: module mdl {
>> 29: exports pkg;
>> 30: }
> 
> final newline

For all these "sample API" source files, they are OK, but another time, 
consider the use of possibly-custom builders, to generate these files 
dynamically. and to make for more concise reading.

-

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: JDK-8263468: New page for "recent" new API [v3]

2021-06-07 Thread Jonathan Gibbons
On Mon, 7 Jun 2021 15:00:43 GMT, Hannes Wallnöfer  wrote:

>> This adds a new kind of summary list for new API added in specific releases, 
>> and adds information to the deprecated API list about elements that were 
>> deprecated in the given releases.
>> 
>> The changes to the code are relatively minor thanks to the existing 
>> infrastructure for summary list pages, which was extended by adding the 
>> `getTableCaption` and `addTableTabs` methods to `SummaryListWriter.java` in 
>> order to generate tabbed tables. 
>> 
>> One important area that needs to be reviewed is the addition of resources in 
>> `standard.properties`. A relatively big share of discussion and effort went 
>> into shaping the UI messages.
>> 
>> The build system change adds options to generate API changes for all 
>> releases after JDK 11, with "New API since JDK 11" as page title for the new 
>> API page. I uploaded the generated documentation here:
>> 
>> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/new-list.html
>> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/deprecated-list.html
>
> Hannes Wallnöfer has updated the pull request with a new target base due to a 
> merge or a rebase. The pull request now contains 16 commits:
> 
>  - Merge branch 'master' into JDK-8263468
>  - JDK-8263468: automate build integration
>  - JDK-8263468: make constant static
>  - JDK-8263468: Remove unused DocPaths methods
>  - JDK-8263468: Cleanup
>  - JDK-8263468: Add tests
>  - JDK-8263468: Update to new Table methods
>  - Merge branch 'master' into JDK-8263468
>
># Conflicts:
>#  
> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css
>  - JDK-8263468: Fix tests
>  - JDK-8263468: Update to latest CSR
>  - ... and 6 more: 
> https://git.openjdk.java.net/jdk/compare/3396b69f...3b13ae32

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java
 line 49:

> 47: /**
> 48:  * Generate File to list all the new API elements with the
> 49:  * appropriate links.

(minor) not standard form of comment, but it's "only" an internal class, so 
could be fixed up later

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NewAPIListWriter.java
 line 72:

> 70: /**
> 71:  * Get list of all the new elements.
> 72:  * Then instantiate NewAPIListWriter and generate File.

Comment. Looks like it may have been copied from elsewhere, I guess

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java
 line 726:

> 724:  */
> 725: deprecatedInReleasePage,
> 726: 

Note to self ... affects new "Output Generated " document

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java
 line 145:

> 143: public static final DocPath PACKAGE_USE = 
> DocPath.create("package-use.html");
> 144: 
> 145: /** The name of the fie for preview elements. */

typo: "fie"

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/DocPaths.java
 line 148:

> 146: public static final DocPath PREVIEW_LIST = 
> DocPath.create("preview-list.html");
> 147: 
> 148: /** The name of the fie for new elements. */

typo "fie"

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Utils.java
 line 1526:

> 1524: }
> 1525: 
> 1526: // Returns the Deprecated annotation element value of the given 
> element, or null.

Use `/**...*/`

test/langtools/jdk/javadoc/doclet/testNewApiList/mdl/module-info.java line 30:

> 28: module mdl {
> 29: exports pkg;
> 30: }

final newline

-

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: JDK-8263468: New page for "recent" new API [v2]

2021-06-07 Thread Jonathan Gibbons
On Fri, 28 May 2021 08:19:33 GMT, Hannes Wallnöfer  wrote:

>> This adds a new kind of summary list for new API added in specific releases, 
>> and adds information to the deprecated API list about elements that were 
>> deprecated in the given releases.
>> 
>> The changes to the code are relatively minor thanks to the existing 
>> infrastructure for summary list pages, which was extended by adding the 
>> `getTableCaption` and `addTableTabs` methods to `SummaryListWriter.java` in 
>> order to generate tabbed tables. 
>> 
>> One important area that needs to be reviewed is the addition of resources in 
>> `standard.properties`. A relatively big share of discussion and effort went 
>> into shaping the UI messages.
>> 
>> The build system change adds options to generate API changes for all 
>> releases after JDK 11, with "New API since JDK 11" as page title for the new 
>> API page. I uploaded the generated documentation here:
>> 
>> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/new-list.html
>> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/deprecated-list.html
>
> Hannes Wallnöfer has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   JDK-8263468: automate build integration

Some minor suggestions for your consideration

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties
 line 112:

> 110: doclet.Deprecated_Tabs_Intro=(The leftmost tab "Deprecated ..." 
> indicates all the \
> 111: deprecated elements, regardless of the releases in which they were 
> deprecated. \
> 112: Each of the righthand tabs "Deprecated in ..." indicates the 
> elements deprecated \

"Each of the righthand" doesn't read well.   Would "Each of the other" be 
better?

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties
 line 119:

> 117: doclet.New_Label=New
> 118: doclet.New_Tabs_Intro=(The leftmost tab "New ..." indicates all the new 
> elements, \
> 119: regardless of the releases in which they were added. Each of the 
> righthand \

ditto

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/resources/standard.properties
 line 268:

> 266: doclet.help.new.body=\
> 267: The {0} page lists APIs that have been added in recent releases. \
> 268: The content of this page is based on information provided by Javadoc 
> @since tags.

Either change to "JavaDoc" or (preferably?) just delete this word, or even the 
sentence.

Is there any interaction with `-nosince`? Should there be?

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/Extern.java
 line 337:

> 335:  */
> 336: public int getSourceVersionNumber() {
> 337: return configuration.docEnv.getSourceVersion().ordinal();

As a general comment, I believe Joe does not encourage use of `ordinal`

-

PR: https://git.openjdk.java.net/jdk/pull/4209


Re: RFR: 8268327: Upstream: 8268169: The system lookup can not find stdio functions such as printf on Windows 10

2021-06-07 Thread Athijegannathan Sundararajan
On Mon, 7 Jun 2021 13:23:46 GMT, Jorn Vernee  wrote:

> Hi,
> 
> The documentation of `CLinker::systemLookup` [1] says this: 
> 
> 
> * Obtains a system lookup which is suitable to find symbols in the standard C 
> libraries.
> 
> 
> However, currently it is not possible to look up common stdio.h symbols, such 
> as `printf`, using the system lookup on Windows 10. This is because the 
> backing library that is loaded, namely `ucrtbase.dll`, does not contain these 
> symbols, as they are implemented in the standard library as inline functions.
> 
> This patch changes the system lookup implementation on Windows 10 to make 
> these symbols findable as well, by using a fallback library that forces the 
> generation of the code for the inline functions, and exposes the missing 
> symbols as a table of function pointers.
> 
> See also the prior review of this patch for the panama-foreign repo: 
> https://github.com/openjdk/panama-foreign/pull/547
> 
> Since the exact set of symbols findable by the system lookup is unspecified, 
> and since the API in question (`CLinker::systemLookup`) was added only last 
> week [2], I've elected to not create a CSR for this patch, but please let me 
> know if one is needed).
> 
> Thanks,
> Jorn
> 
> [1] : 
> https://github.com/openjdk/jdk/blob/master/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java#L134-L151
> [2] : 
> https://github.com/openjdk/jdk/commit/a223189b069a7cfe49511d49b5b09e7107cb3cab

LGTM

-

Marked as reviewed by sundar (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4390


Re: RFR: JDK-8263468: New page for "recent" new API [v3]

2021-06-07 Thread Hannes Wallnöfer
> This adds a new kind of summary list for new API added in specific releases, 
> and adds information to the deprecated API list about elements that were 
> deprecated in the given releases.
> 
> The changes to the code are relatively minor thanks to the existing 
> infrastructure for summary list pages, which was extended by adding the 
> `getTableCaption` and `addTableTabs` methods to `SummaryListWriter.java` in 
> order to generate tabbed tables. 
> 
> One important area that needs to be reviewed is the addition of resources in 
> `standard.properties`. A relatively big share of discussion and effort went 
> into shaping the UI messages.
> 
> The build system change adds options to generate API changes for all releases 
> after JDK 11, with "New API since JDK 11" as page title for the new API page. 
> I uploaded the generated documentation here:
> 
> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/new-list.html
> http://cr.openjdk.java.net/~hannesw/8263468/api-pr.00/deprecated-list.html

Hannes Wallnöfer has updated the pull request with a new target base due to a 
merge or a rebase. The pull request now contains 16 commits:

 - Merge branch 'master' into JDK-8263468
 - JDK-8263468: automate build integration
 - JDK-8263468: make constant static
 - JDK-8263468: Remove unused DocPaths methods
 - JDK-8263468: Cleanup
 - JDK-8263468: Add tests
 - JDK-8263468: Update to new Table methods
 - Merge branch 'master' into JDK-8263468
   
   # Conflicts:
   #
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css
 - JDK-8263468: Fix tests
 - JDK-8263468: Update to latest CSR
 - ... and 6 more: https://git.openjdk.java.net/jdk/compare/3396b69f...3b13ae32

-

Changes: https://git.openjdk.java.net/jdk/pull/4209/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4209&range=02
  Stats: 1925 lines in 41 files changed: 1846 ins; 38 del; 41 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4209.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4209/head:pull/4209

PR: https://git.openjdk.java.net/jdk/pull/4209


Integrated: 8268267: Remove -Djavatest.security.noSecurityManager=true from jtreg runs

2021-06-07 Thread Weijun Wang
On Fri, 4 Jun 2021 15:53:42 GMT, Weijun Wang  wrote:

> Now that the default behavior of JDK 17 is still 
> `-Djava.security.manager=allow`, we can remove the 
> `-Djavatest.security.noSecurityManager=true` option from the jtreg command 
> line inside `RunTests.gmk`. Three problem-listed langtools tests can also be 
> liberated.

This pull request has now been integrated.

Changeset: a91f9712
Author:Weijun Wang 
URL:   
https://git.openjdk.java.net/jdk/commit/a91f97126646f89d8c5b81cfd40820338c769acd
Stats: 4 lines in 2 files changed: 0 ins; 3 del; 1 mod

8268267: Remove -Djavatest.security.noSecurityManager=true from jtreg runs

Reviewed-by: lancea, jjg, erikj

-

PR: https://git.openjdk.java.net/jdk/pull/4364


Re: RFR: 8268327: Upstream: 8268169: The system lookup can not find stdio functions such as printf on Windows 10

2021-06-07 Thread Erik Joelsson
On Mon, 7 Jun 2021 13:23:46 GMT, Jorn Vernee  wrote:

> Hi,
> 
> The documentation of `CLinker::systemLookup` [1] says this: 
> 
> 
> * Obtains a system lookup which is suitable to find symbols in the standard C 
> libraries.
> 
> 
> However, currently it is not possible to look up common stdio.h symbols, such 
> as `printf`, using the system lookup on Windows 10. This is because the 
> backing library that is loaded, namely `ucrtbase.dll`, does not contain these 
> symbols, as they are implemented in the standard library as inline functions.
> 
> This patch changes the system lookup implementation on Windows 10 to make 
> these symbols findable as well, by using a fallback library that forces the 
> generation of the code for the inline functions, and exposes the missing 
> symbols as a table of function pointers.
> 
> See also the prior review of this patch for the panama-foreign repo: 
> https://github.com/openjdk/panama-foreign/pull/547
> 
> Since the exact set of symbols findable by the system lookup is unspecified, 
> and since the API in question (`CLinker::systemLookup`) was added only last 
> week [2], I've elected to not create a CSR for this patch, but please let me 
> know if one is needed).
> 
> Thanks,
> Jorn
> 
> [1] : 
> https://github.com/openjdk/jdk/blob/master/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java#L134-L151
> [2] : 
> https://github.com/openjdk/jdk/commit/a223189b069a7cfe49511d49b5b09e7107cb3cab

Build change looks good.

-

Marked as reviewed by erikj (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4390


RFR: 8268327: Upstream: 8268169: The system lookup can not find stdio functions such as printf on Windows 10

2021-06-07 Thread Jorn Vernee
Hi,

The documentation of `CLinker::systemLookup` [1] says this: 


* Obtains a system lookup which is suitable to find symbols in the standard C 
libraries.


However, currently it is not possible to look up common stdio.h symbols, such 
as `printf`, using the system lookup on Windows 10. This is because the backing 
library that is loaded, namely `ucrtbase.dll`, does not contain these symbols, 
as they are implemented in the standard library as inline functions.

This patch changes the system lookup implementation on Windows 10 to make these 
symbols findable as well, by using a fallback library that forces the 
generation of the code for the inline functions, and exposes the missing 
symbols as a table of function pointers.

See also the prior review of this patch for the panama-foreign repo: 
https://github.com/openjdk/panama-foreign/pull/547

Since the exact set of symbols findable by the system lookup is unspecified, 
and since the API in question (`CLinker::systemLookup`) was added only last 
week [2], I've elected to not create a CSR for this patch, but please let me 
know if one is needed).

Thanks,
Jorn

[1] : 
https://github.com/openjdk/jdk/blob/master/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java#L134-L151
[2] : 
https://github.com/openjdk/jdk/commit/a223189b069a7cfe49511d49b5b09e7107cb3cab

-

Commit messages:
 - Upstream 8268169: The system lookup can not find stdio functions such as 
printf on Windows 10

Changes: https://git.openjdk.java.net/jdk/pull/4390/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=4390&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8268327
  Stats: 273 lines in 5 files changed: 203 ins; 58 del; 12 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4390.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4390/head:pull/4390

PR: https://git.openjdk.java.net/jdk/pull/4390


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512 [v2]

2021-06-07 Thread Scott Gibbons
> Add the Base64 Decode intrinsic for x86 to utilize AVX-512 for acceleration. 
> Also allows for performance improvement for non-AVX-512 enabled platforms. 
> Due to the nature of MIME-encoded inputs, modify the intrinsic signature to 
> accept an additional parameter (isMIME) for fast-path MIME decoding.
> 
> A change was made to the signature of DecodeBlock in Base64.java to provide 
> the intrinsic information as to whether MIME decoding was being done.  This 
> allows for the intrinsic to bypass the expensive setup of zmm registers from 
> AVX tables, knowing there may be invalid Base64 characters every 76 
> characters or so.  A change was also made here removing the restriction that 
> the intrinsic must return an even multiple of 3 bytes decoded.  This 
> implementation handles the pad characters at the end of the string and will 
> return the actual number of characters decoded.
> 
> The AVX portion of this code will decode in blocks of 256 bytes per loop 
> iteration, then in chunks of 64 bytes, followed by end fixup decoding.  The 
> non-AVX code is an assembly-optimized version of the java DecodeBlock and 
> behaves identically.
> 
> Running the Base64Decode benchmark, this change increases decode performance 
> by an average of 2.6x with a maximum 19.7x for buffers > ~20k.  The numbers 
> are given in the table below.
> 
> **Base Score** is without intrinsic support, **Optimized Score** is using 
> this intrinsic, and **Gain** is **Base** / **Optimized**.
> 
> 
> Benchmark Name | Base Score | Optimized Score | Gain
> -- | -- | -- | --
> testBase64Decode size 1 | 15.36 | 15.32 | 1.00
> testBase64Decode size 3 | 17.00 | 16.72 | 1.02
> testBase64Decode size 7 | 20.60 | 18.82 | 1.09
> testBase64Decode size 32 | 34.21 | 26.77 | 1.28
> testBase64Decode size 64 | 54.43 | 38.35 | 1.42
> testBase64Decode size 80 | 66.40 | 48.34 | 1.37
> testBase64Decode size 96 | 73.16 | 52.90 | 1.38
> testBase64Decode size 112 | 84.93 | 51.82 | 1.64
> testBase64Decode size 512 | 288.81 | 32.04 | 9.01
> testBase64Decode size 1000 | 560.48 | 40.79 | 13.74
> testBase64Decode size 2 | 9530.28 | 483.37 | 19.72
> testBase64Decode size 5 | 24552.24 | 1735.07 | 14.15
> testBase64MIMEDecode size 1 | 22.87 | 21.36 | 1.07
> testBase64MIMEDecode size 3 | 27.79 | 25.32 | 1.10
> testBase64MIMEDecode size 7 | 44.74 | 43.81 | 1.02
> testBase64MIMEDecode size 32 | 142.69 | 129.56 | 1.10
> testBase64MIMEDecode size 64 | 256.90 | 243.80 | 1.05
> testBase64MIMEDecode size 80 | 311.60 | 310.80 | 1.00
> testBase64MIMEDecode size 96 | 364.00 | 346.66 | 1.05
> testBase64MIMEDecode size 112 | 472.88 | 394.78 | 1.20
> testBase64MIMEDecode size 512 | 1814.96 | 1671.28 | 1.09
> testBase64MIMEDecode size 1000 | 3623.50 | 3227.61 | 1.12
> testBase64MIMEDecode size 2 | 70484.09 | 64940.77 | 1.09
> testBase64MIMEDecode size 5 | 191732.34 | 158158.95 | 1.21
> testBase64WithErrorInputsDecode size 1 | 1531.02 | 1185.19 | 1.29
> testBase64WithErrorInputsDecode size 3 | 1306.59 | 1170.99 | 1.12
> testBase64WithErrorInputsDecode size 7 | 1238.11 | 1176.62 | 1.05
> testBase64WithErrorInputsDecode size 32 | 1346.46 | 1138.47 | 1.18
> testBase64WithErrorInputsDecode size 64 | 1195.28 | 1172.52 | 1.02
> testBase64WithErrorInputsDecode size 80 | 1469.00 | 1180.94 | 1.24
> testBase64WithErrorInputsDecode size 96 | 1434.48 | 1167.74 | 1.23
> testBase64WithErrorInputsDecode size 112 | 1440.06 | 1162.56 | 1.24
> testBase64WithErrorInputsDecode size 512 | 1362.79 | 1193.42 | 1.14
> testBase64WithErrorInputsDecode size 1000 | 1426.07 | 1194.44 | 1.19
> testBase64WithErrorInputsDecode size   2 | 1398.44 | 1138.17 | 1.23
> testBase64WithErrorInputsDecode size   5 | 1409.41 | 1114.16 | 1.26

Scott Gibbons has updated the pull request incrementally with one additional 
commit since the last revision:

  Update full name

-

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/4368/files
  - new: https://git.openjdk.java.net/jdk/pull/4368/files/e527557a..00fd5621

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk&pr=4368&range=01
 - incr: https://webrevs.openjdk.java.net/?repo=jdk&pr=4368&range=00-01

  Stats: 0 lines in 0 files changed: 0 ins; 0 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/4368.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/4368/head:pull/4368

PR: https://git.openjdk.java.net/jdk/pull/4368


Re: RFR: 8268299: jvms tag produces incorrect URL

2021-06-07 Thread Erik Joelsson
On Sun, 6 Jun 2021 22:03:46 GMT, Joe Darcy  wrote:

> The @jls and @jvms taglet share most of their functionality.  A  JLS URL 
> looks like
> 
> https://docs.oracle.com/javase/specs/jls/se16/html/**jls**-8.html#jls-8.1
> 
> and a JVMS URL looks like
> 
> 
> https://docs.oracle.com/javase/specs/jvms/se16/html/**jvms**-4.html#jvms-4.3.2
> 
> The current taglet incorrectly uses "jls" in from the chapter for both JLS 
> and JVMS URLs. The patch corrects this to use "jvms" for JVMS URLs.

Marked as reviewed by erikj (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/4381


Re: RFR: 8268296: ScopedMemoryAccess build error with readonly filesystems

2021-06-07 Thread Erik Joelsson
On Sun, 6 Jun 2021 20:09:32 GMT, Liam Miller-Cushon  wrote:

> This change fixes a build error during the generation of 
> `ScopedMemoryAccess.java` when the sources are readonly, by using `cat a > b` 
> instead of `cp a b` to avoid propagating the permissions to the generated 
> source.

Looks good.

-

Marked as reviewed by erikj (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4380


Re: RFR: 8268276: Base64 Decoding optimization for x86 using AVX-512

2021-06-07 Thread Erik Joelsson
On Fri, 4 Jun 2021 20:55:51 GMT, Scott Gibbons 
 wrote:

> Add the Base64 Decode intrinsic for x86 to utilize AVX-512 for acceleration. 
> Also allows for performance improvement for non-AVX-512 enabled platforms. 
> Due to the nature of MIME-encoded inputs, modify the intrinsic signature to 
> accept an additional parameter (isMIME) for fast-path MIME decoding.
> 
> A change was made to the signature of DecodeBlock in Base64.java to provide 
> the intrinsic information as to whether MIME decoding was being done.  This 
> allows for the intrinsic to bypass the expensive setup of zmm registers from 
> AVX tables, knowing there may be invalid Base64 characters every 76 
> characters or so.  A change was also made here removing the restriction that 
> the intrinsic must return an even multiple of 3 bytes decoded.  This 
> implementation handles the pad characters at the end of the string and will 
> return the actual number of characters decoded.
> 
> The AVX portion of this code will decode in blocks of 256 bytes per loop 
> iteration, then in chunks of 64 bytes, followed by end fixup decoding.  The 
> non-AVX code is an assembly-optimized version of the java DecodeBlock and 
> behaves identically.
> 
> Running the Base64Decode benchmark, this change increases decode performance 
> by an average of 2.6x with a maximum 19.7x for buffers > ~20k.  The numbers 
> are given in the table below.
> 
> **Base Score** is without intrinsic support, **Optimized Score** is using 
> this intrinsic, and **Gain** is **Base** / **Optimized**.
> 
> 
> Benchmark Name | Base Score | Optimized Score | Gain
> -- | -- | -- | --
> testBase64Decode size 1 | 15.36 | 15.32 | 1.00
> testBase64Decode size 3 | 17.00 | 16.72 | 1.02
> testBase64Decode size 7 | 20.60 | 18.82 | 1.09
> testBase64Decode size 32 | 34.21 | 26.77 | 1.28
> testBase64Decode size 64 | 54.43 | 38.35 | 1.42
> testBase64Decode size 80 | 66.40 | 48.34 | 1.37
> testBase64Decode size 96 | 73.16 | 52.90 | 1.38
> testBase64Decode size 112 | 84.93 | 51.82 | 1.64
> testBase64Decode size 512 | 288.81 | 32.04 | 9.01
> testBase64Decode size 1000 | 560.48 | 40.79 | 13.74
> testBase64Decode size 2 | 9530.28 | 483.37 | 19.72
> testBase64Decode size 5 | 24552.24 | 1735.07 | 14.15
> testBase64MIMEDecode size 1 | 22.87 | 21.36 | 1.07
> testBase64MIMEDecode size 3 | 27.79 | 25.32 | 1.10
> testBase64MIMEDecode size 7 | 44.74 | 43.81 | 1.02
> testBase64MIMEDecode size 32 | 142.69 | 129.56 | 1.10
> testBase64MIMEDecode size 64 | 256.90 | 243.80 | 1.05
> testBase64MIMEDecode size 80 | 311.60 | 310.80 | 1.00
> testBase64MIMEDecode size 96 | 364.00 | 346.66 | 1.05
> testBase64MIMEDecode size 112 | 472.88 | 394.78 | 1.20
> testBase64MIMEDecode size 512 | 1814.96 | 1671.28 | 1.09
> testBase64MIMEDecode size 1000 | 3623.50 | 3227.61 | 1.12
> testBase64MIMEDecode size 2 | 70484.09 | 64940.77 | 1.09
> testBase64MIMEDecode size 5 | 191732.34 | 158158.95 | 1.21
> testBase64WithErrorInputsDecode size 1 | 1531.02 | 1185.19 | 1.29
> testBase64WithErrorInputsDecode size 3 | 1306.59 | 1170.99 | 1.12
> testBase64WithErrorInputsDecode size 7 | 1238.11 | 1176.62 | 1.05
> testBase64WithErrorInputsDecode size 32 | 1346.46 | 1138.47 | 1.18
> testBase64WithErrorInputsDecode size 64 | 1195.28 | 1172.52 | 1.02
> testBase64WithErrorInputsDecode size 80 | 1469.00 | 1180.94 | 1.24
> testBase64WithErrorInputsDecode size 96 | 1434.48 | 1167.74 | 1.23
> testBase64WithErrorInputsDecode size 112 | 1440.06 | 1162.56 | 1.24
> testBase64WithErrorInputsDecode size 512 | 1362.79 | 1193.42 | 1.14
> testBase64WithErrorInputsDecode size 1000 | 1426.07 | 1194.44 | 1.19
> testBase64WithErrorInputsDecode size   2 | 1398.44 | 1138.17 | 1.23
> testBase64WithErrorInputsDecode size   5 | 1409.41 | 1114.16 | 1.26

The gitignore change looks ok, but should maybe be a separate change.

-

Marked as reviewed by erikj (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/4368


Integrated: 8262891: Compiler implementation for Pattern Matching for switch (Preview)

2021-06-07 Thread Jan Lahoda
On Tue, 4 May 2021 16:41:44 GMT, Jan Lahoda  wrote:

> This is a preview of a patch implementing JEP 406: Pattern Matching for 
> switch (Preview):
> https://bugs.openjdk.java.net/browse/JDK-8213076
> 
> The current draft of the specification is here:
> http://cr.openjdk.java.net/~gbierman/jep406/jep406-20210430/specs/patterns-switch-jls.html
> 
> A summary of notable parts of the patch:
> -to support cases expressions and patterns in cases, there is a new common 
> superinterface for expressions and patterns, `CaseLabelTree`, which 
> expressions and patterns implement, and a list of case labels is returned 
> from `CaseTree.getLabels()`.
> -to support `case default`, there is an implementation of `CaseLabelTree` 
> that represents it (`DefaultCaseLabelTree`). It is used also to represent the 
> conventional `default` internally and in the newly added methods.
> -in the parser, parenthesized patterns and expressions need to be 
> disambiguated when parsing case labels.
> -Lower has been enhanced to handle `case null` for ordinary (boxed-primitive, 
> String, enum) switches. This is a bit tricky for boxed primitives, as there 
> is no value that is not part of the input domain so that could be used to 
> represent `case null`. Requires a bit shuffling with values.
> -TransPatterns has been enhanced to handle the pattern matching switch. It 
> produces code that delegates to a new bootstrap method, that will classify 
> the input value to the switch and return the case number, to which the switch 
> then jumps. To support guards, the switches (and the bootstrap method) are 
> restartable. The bootstrap method as such is written very simply so far, but 
> could be much more optimized later.
> -nullable type patterns are `case String s, null`/`case null, String s`/`case 
> null: case String s:`/`case String s: case null:`, handling of these required 
> a few tricks in `Attr`, `Flow` and `TransPatterns`.
> 
> The specdiff for the change is here (to be updated):
> http://cr.openjdk.java.net/~jlahoda/8265981/specdiff.preview.01/overview-summary.html

This pull request has now been integrated.

Changeset: 908aca29
Author:Jan Lahoda 
URL:   
https://git.openjdk.java.net/jdk/commit/908aca29ca60f5f251df8c6a31b2543929be12fc
Stats: 4940 lines in 79 files changed: 4621 ins; 118 del; 201 mod

8262891: Compiler implementation for Pattern Matching for switch (Preview)

Co-authored-by: Brian Goetz 
Co-authored-by: Mandy Chung 
Co-authored-by: Jan Lahoda 
Reviewed-by: mcimadamore, forax, godin, psandoz, mchung

-

PR: https://git.openjdk.java.net/jdk/pull/3863