From aph at redhat.com Sun Aug 1 15:37:58 2021 From: aph at redhat.com (Andrew Haley) Date: Sun, 1 Aug 2021 16:37:58 +0100 Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases In-Reply-To: References: Message-ID: This is interesting. I'm looking at Apple M1, where I see ByteBufferVectorAccess.heapBuffers 1024 avgt 10 86.512 ? 0.041 ns/op which corresponds to about 23 Gigabytes/sec, when I do: ... -wi 5 -i 10 -p size=524288 -tu s -bm thrpt Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.heapBuffers 524288 thrpt 10 22921.655 ? 42.230 ops/s (We're moving half a megabyte from A to B, so ops/s is megabytes/s) This is pretty good. The code HotSpot generates looks like this: 0.49% sxtw x16, w14 52.13% ldr q16, [x13, x16] 0.39% sxtw x16, w14 0.23% str q16, [x15, x16] 20.37% add w14, w14, #0x10 0.17% cmp w14, w18 b.lt 0x0000fffface568b0 // b.tstop So, how well can C do with something similar? Here's a loop from the STREAM benchmark, which copies ten million doubles: for (j=0; j<10_000_000; j++) c[j] = a[j]; which generates (something like this code, I've edited it a bit): LBB0_7: ldp q0, q1, [x8, #-16] stp q0, q1, [x10, #-16] add x8, x8, #32 add x10, x10, #32 subs x9, x9, #4 b.ne LBB0_7 and runs at about 60 Gbytes/sec. The difference here, I suspect, might be not much more than using 32-byte accesses rather than 16-byte accesses. We're very close. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From ningsheng.jian at arm.com Mon Aug 2 03:03:31 2021 From: ningsheng.jian at arm.com (Ningsheng Jian) Date: Mon, 2 Aug 2021 11:03:31 +0800 Subject: CFV: New Panama Committer: Eric Liu In-Reply-To: <1491a1dc-32a3-bbe8-1f7e-9f3b928b9e80@arm.com> References: <1491a1dc-32a3-bbe8-1f7e-9f3b928b9e80@arm.com> Message-ID: Vote: yes On 7/30/21 5:42 PM, Ningsheng Jian wrote: > I hereby nominate Eric Liu (openjdk id: eliu) to Panama Committer. > > Eric Liu is a member of Arm JDK team and has contributed 3 patches in > panama project [1]. He has also contributed 3 Vector API related patches > in jdk mainline [2]. Eric will continue helping to improve Arm SVE and > vector masking support for Vector API. > > Votes are due by August 13, 2021. > > Only current panama Committers [3] are eligible to vote on this > nomination. Votes must be cast in the open by replying to this mailing > list. > > For Lazy Consensus voting instructions, see [4]. > > Thanks, > Ningsheng > > [1] > https://hg.openjdk.java.net/panama/dev/rev/9b0a0f3c0d4f > https://hg.openjdk.java.net/panama/dev/rev/dd02d7496a85 > https://github.com/openjdk/panama-vector/commit/a0f9d863f12c1a29e65d2d145fc2520b8ffcec41 > > [2] > https://github.com/openjdk/jdk/commit/d2144a5b9dcd4e6513f16dc6f3eda2987c8d763e > > https://github.com/openjdk/jdk/commit/9cfd560bb113b630e0ca28f9204afc079a87017b > > https://github.com/openjdk/jdk17/commit/1166ef25e9a119b1801f036eaea1d97fc2bb9329 > > [3] http://openjdk.java.net/census#panama > [4] http://openjdk.java.net/projects#committer-vote From Xiaohong.Gong at arm.com Mon Aug 2 03:19:03 2021 From: Xiaohong.Gong at arm.com (Xiaohong Gong) Date: Mon, 2 Aug 2021 03:19:03 +0000 Subject: CFV: New Panama Committer: Eric Liu Message-ID: Vote: yes Best Regards, Xiaohong Gong > Vote: yes > > On 7/30/21 5:42 PM, Ningsheng Jian wrote: > > I hereby nominate Eric Liu (openjdk id: eliu) to Panama Committer. > > > > Eric Liu is a member of Arm JDK team and has contributed 3 patches in > > panama project [1]. He has also contributed 3 Vector API related patches > > in jdk mainline [2]. Eric will continue helping to improve Arm SVE and > > vector masking support for Vector API. > > > > Votes are due by August 13, 2021. > > > > Only current panama Committers [3] are eligible to vote on this > > nomination. Votes must be cast in the open by replying to this mailing > > list. > > > > For Lazy Consensus voting instructions, see [4]. > > > > Thanks, > > Ningsheng > > > > [1] > > https://hg.openjdk.java.net/panama/dev/rev/9b0a0f3c0d4f > > https://hg.openjdk.java.net/panama/dev/rev/dd02d7496a85 > > https://github.com/openjdk/panama-vector/commit/a0f9d863f12c1a29e65d2d145fc2520b8ffcec41 > > > > [2] > > https://github.com/openjdk/jdk/commit/d2144a5b9dcd4e6513f16dc6f3eda2987c8d763e > > > > https://github.com/openjdk/jdk/commit/9cfd560bb113b630e0ca28f9204afc079a87017b > > > > https://github.com/openjdk/jdk17/commit/1166ef25e9a119b1801f036eaea1d97fc2bb9329 > > > > [3] http://openjdk.java.net/census#panama > > [4] http://openjdk.java.net/projects#committer-vote From xgong at openjdk.java.net Mon Aug 2 03:45:46 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 2 Aug 2021 03:45:46 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature In-Reply-To: References: Message-ID: On Fri, 30 Jul 2021 04:08:23 GMT, Jie Fu wrote: > So does the performance gain reasonable, especially for something like IntMaxVector.AND_NOTMasked? > Thanks. Hi @DamonFool thanks for looking at this PR and sorry for my late reply! Yes, it seems the performance for some of the `lanewise` operations does gain too much. But from the dumped assembly codes, it actually saves two instructions inside the loop. Currently we didn't spend too much time analyzing the exact performance benefit. And I think the showed performance data can just be treated as a reference to the result of the initial masking feature support project. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/105 From jbhateja at openjdk.java.net Mon Aug 2 13:29:23 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 2 Aug 2021 13:29:23 GMT Subject: [vectorIntrinsics+mask] RFR: 8271273: Java API and IR changes for masked compare operation [v2] In-Reply-To: References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> Message-ID: On Tue, 27 Jul 2021 10:37:27 GMT, Jatin Bhateja wrote: >> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. >> - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by performing vector AND b/w comparison result and explicit mask. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8271273: Review comments resolution. @Reviewers , please let me know if its good to integrate now. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/103 From jbhateja at openjdk.java.net Mon Aug 2 13:29:20 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 2 Aug 2021 13:29:20 GMT Subject: [vectorIntrinsics+mask] RFR: 8271273: Java API and IR changes for masked compare operation [v3] In-Reply-To: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> Message-ID: <7OBHVWB6wu2yZMOqHp5nwVa9wzLUeOcL1vEb8zd-cd0=.23ee6df6-01f7-462d-997e-3b76fabd7f0a@github.com> > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by performing vector AND b/w comparison result and explicit mask. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8271273: Review comments + compare(v1,v2).and(m) => compare(v1,v2,m) ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/103/files - new: https://git.openjdk.java.net/panama-vector/pull/103/files/f7a44224..b0b536de Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=103&range=02 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=103&range=01-02 Stats: 59 lines in 8 files changed: 9 ins; 36 del; 14 mod Patch: https://git.openjdk.java.net/panama-vector/pull/103.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/103/head:pull/103 PR: https://git.openjdk.java.net/panama-vector/pull/103 From jbhateja at openjdk.java.net Mon Aug 2 13:29:27 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 2 Aug 2021 13:29:27 GMT Subject: [vectorIntrinsics+mask] RFR: 8271273: Java API and IR changes for masked compare operation [v3] In-Reply-To: References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> Message-ID: On Wed, 28 Jul 2021 09:28:39 GMT, Xiaohong Gong wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8271273: Review comments + compare(v1,v2).and(m) => compare(v1,v2,m) > > src/hotspot/share/opto/vectorIntrinsics.cpp line 1706: > >> 1704: if (is_masked_op && !use_predicate && !arch_supports_vector(Op_AndV, num_elem, elem_bt, VecMaskUseLoad)) { >> 1705: if (C->print_intrinsics()) { >> 1706: tty->print_cr(" ** not supported: arity=2 op=comp/%d vlen=%d etype=%s ismask=usestore is_masked_op=1", > > What does `"ismask=usestore"` mean? Can this be removed? Its signifies an operation needing VectorStoreMask after it. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/103 From mail at smogura.eu Mon Aug 2 14:29:49 2021 From: mail at smogura.eu (=?iso-8859-2?Q?Rados=B3aw_Smogura?=) Date: Mon, 2 Aug 2021 14:29:49 +0000 Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases In-Reply-To: References: , Message-ID: Hi Andrew, Thank you for feedback. I'm not an expert at M1 (I think about testing it cloud), however, as I check ARM asm it looks like the C++ version use load instruction to load data into two registers at once, and M1 bit size for vecros is 128bits. I noticed, as well, that code does not do unrolling, and this already should be fixed [1], but looks like it waits merging to the branch. Probably with above change GB/s can go up. Kind regards, Rado [1] https://github.com/openjdk/panama-vector/commit/1f51e13ea763e642dac440142e9cb3a177df7959 ________________________________ From: panama-dev on behalf of Andrew Haley Sent: Sunday, August 1, 2021 17:37 To: 'panama-dev at openjdk.java.net' Subject: Re: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases This is interesting. I'm looking at Apple M1, where I see ByteBufferVectorAccess.heapBuffers 1024 avgt 10 86.512 ? 0.041 ns/op which corresponds to about 23 Gigabytes/sec, when I do: ... -wi 5 -i 10 -p size=524288 -tu s -bm thrpt Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.heapBuffers 524288 thrpt 10 22921.655 ? 42.230 ops/s (We're moving half a megabyte from A to B, so ops/s is megabytes/s) This is pretty good. The code HotSpot generates looks like this: 0.49% sxtw x16, w14 52.13% ldr q16, [x13, x16] 0.39% sxtw x16, w14 0.23% str q16, [x15, x16] 20.37% add w14, w14, #0x10 0.17% cmp w14, w18 b.lt 0x0000fffface568b0 // b.tstop So, how well can C do with something similar? Here's a loop from the STREAM benchmark, which copies ten million doubles: for (j=0; j<10_000_000; j++) c[j] = a[j]; which generates (something like this code, I've edited it a bit): LBB0_7: ldp q0, q1, [x8, #-16] stp q0, q1, [x10, #-16] add x8, x8, #32 add x10, x10, #32 subs x9, x9, #4 b.ne LBB0_7 and runs at about 60 Gbytes/sec. The difference here, I suspect, might be not much more than using 32-byte accesses rather than 16-byte accesses. We're very close. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From psandoz at openjdk.java.net Mon Aug 2 15:21:14 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Mon, 2 Aug 2021 15:21:14 GMT Subject: [vectorIntrinsics+mask] RFR: 8271273: Java API and IR changes for masked compare operation [v3] In-Reply-To: <7OBHVWB6wu2yZMOqHp5nwVa9wzLUeOcL1vEb8zd-cd0=.23ee6df6-01f7-462d-997e-3b76fabd7f0a@github.com> References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> <7OBHVWB6wu2yZMOqHp5nwVa9wzLUeOcL1vEb8zd-cd0=.23ee6df6-01f7-462d-997e-3b76fabd7f0a@github.com> Message-ID: On Mon, 2 Aug 2021 13:29:20 GMT, Jatin Bhateja wrote: >> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. >> - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by performing vector AND b/w comparison result and explicit mask. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8271273: Review comments + compare(v1,v2).and(m) => compare(v1,v2,m) > @reviewers , please let me know if its good to integrate now. Java changes look good (glad you found a few missing masked compare cases.) ------------- PR: https://git.openjdk.java.net/panama-vector/pull/103 From psandoz at openjdk.java.net Mon Aug 2 15:57:04 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Mon, 2 Aug 2021 15:57:04 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v2] In-Reply-To: <6YZ9F5nkI3QsG2zWyme_WbQdysmq5Ux-yiR0Y57c-3g=.737f65df-6eec-48a7-81ab-851f37b90ae4@github.com> References: <6YZ9F5nkI3QsG2zWyme_WbQdysmq5Ux-yiR0Y57c-3g=.737f65df-6eec-48a7-81ab-851f37b90ae4@github.com> Message-ID: On Sat, 31 Jul 2021 12:32:16 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with three additional commits since the last revision: > > - White space fix > - Remove buffer checks in ScopedMemoryAccess > > This checks right now do not bring anything useful (right now), > performance issues has to be addressd in different way. > - Refactor: use library access checks > > - extract access /decorators checks from library_call > - re-use extracted code to build fencing for vectors What if we use unsafe to read the BB read only field? we do that for VHs: @ForceInline static int indexRO(ByteBuffer bb, int index) { if (UNSAFE.getBoolean(bb, BYTE_BUFFER_IS_READ_ONLY)) throw new ReadOnlyBufferException(); return index(bb, index); } The virtual method call to `Buffer.isReadOnly` might be complicating matters. Logistically, having seen the scope of changes, perhaps it's best to first focus on a smaller changeset for the specific problem, then revisit with better use of the decorators? That way we could integrate this PR to `vectorIntrinsics` then bring into `jdk` then afterwards decide on a refactor, with input from the hotspot reviewers? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From mail at smogura.eu Mon Aug 2 16:30:22 2021 From: mail at smogura.eu (=?iso-8859-2?Q?Rados=B3aw_Smogura?=) Date: Mon, 2 Aug 2021 16:30:22 +0000 Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases In-Reply-To: References: , , Message-ID: Hi Andrew, Here are my results from cloud without unrolling fix and with unrolling fix cherry picked (1 fork, 0.5 sec test): Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.directBuffers 524288 thrpt 10 35105.776 ? 166.178 ops/s ByteBufferVectorAccess.heapBuffers 524288 thrpt 10 36401.373 ? 102.513 ops/s Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.directBuffers 524288 thrpt 10 70723.249 ? 548.895 ops/s ByteBufferVectorAccess.heapBuffers 524288 thrpt 10 69522.365 ? 891.461 ops/s I don't know capacity of this offering. Kind regards, Rado ________________________________ From: panama-dev on behalf of Rados?aw Smogura Sent: Monday, August 2, 2021 16:29 To: Andrew Haley ; 'panama-dev at openjdk.java.net' Subject: Re: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases Hi Andrew, Thank you for feedback. I'm not an expert at M1 (I think about testing it cloud), however, as I check ARM asm it looks like the C++ version use load instruction to load data into two registers at once, and M1 bit size for vecros is 128bits. I noticed, as well, that code does not do unrolling, and this already should be fixed [1], but looks like it waits merging to the branch. Probably with above change GB/s can go up. Kind regards, Rado [1] https://github.com/openjdk/panama-vector/commit/1f51e13ea763e642dac440142e9cb3a177df7959 ________________________________ From: panama-dev on behalf of Andrew Haley Sent: Sunday, August 1, 2021 17:37 To: 'panama-dev at openjdk.java.net' Subject: Re: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases This is interesting. I'm looking at Apple M1, where I see ByteBufferVectorAccess.heapBuffers 1024 avgt 10 86.512 ? 0.041 ns/op which corresponds to about 23 Gigabytes/sec, when I do: ... -wi 5 -i 10 -p size=524288 -tu s -bm thrpt Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.heapBuffers 524288 thrpt 10 22921.655 ? 42.230 ops/s (We're moving half a megabyte from A to B, so ops/s is megabytes/s) This is pretty good. The code HotSpot generates looks like this: 0.49% sxtw x16, w14 52.13% ldr q16, [x13, x16] 0.39% sxtw x16, w14 0.23% str q16, [x15, x16] 20.37% add w14, w14, #0x10 0.17% cmp w14, w18 b.lt 0x0000fffface568b0 // b.tstop So, how well can C do with something similar? Here's a loop from the STREAM benchmark, which copies ten million doubles: for (j=0; j<10_000_000; j++) c[j] = a[j]; which generates (something like this code, I've edited it a bit): LBB0_7: ldp q0, q1, [x8, #-16] stp q0, q1, [x10, #-16] add x8, x8, #32 add x10, x10, #32 subs x9, x9, #4 b.ne LBB0_7 and runs at about 60 Gbytes/sec. The difference here, I suspect, might be not much more than using 32-byte accesses rather than 16-byte accesses. We're very close. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From github.com+7535718+rsmogura at openjdk.java.net Mon Aug 2 16:29:42 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Mon, 2 Aug 2021 16:29:42 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v2] In-Reply-To: References: <6YZ9F5nkI3QsG2zWyme_WbQdysmq5Ux-yiR0Y57c-3g=.737f65df-6eec-48a7-81ab-851f37b90ae4@github.com> Message-ID: <5AbYd9oT6ZnwzmdIiYiwcBZ7EnO3Trh_RvJ6Av4gZPY=.8d6159a0-2938-40a6-8a41-8c0cdca9fdef@github.com> On Mon, 2 Aug 2021 15:51:30 GMT, Paul Sandoz wrote: > What if we use unsafe to read the BB read only field? we do that for VHs: > > ``` > @ForceInline > static int indexRO(ByteBuffer bb, int index) { > if (UNSAFE.getBoolean(bb, BYTE_BUFFER_IS_READ_ONLY)) > throw new ReadOnlyBufferException(); > return index(bb, index); > } > ``` > > The virtual method call to `Buffer.isReadOnly` might be complicating matters. > > Logistically, having seen the scope of changes, perhaps it's best to first focus on a smaller changeset for the specific problem, then revisit with better use of the decorators? That way we could integrate this PR to `vectorIntrinsics` then bring into `jdk` then afterwards decide on a refactor, with input from the hotspot reviewers? Yes, this change looks huge... a bit or even two bits... I think it's a very good idea to use unsafe with BB to check for read only, that's something I was missing. However, outermost "if" should be a check if a buffer is direct or not and it should take input from immutable memory this way we have more chances to unswitch loop on this what creates the biggest issue: splitting load/store to on-heap or off-heap (otherwise in polluted case, it can be problematic). Here, we should use instanceof, instead of isDirect, as isDirect is virtual call and in most polluted cases this can kick in (unless we can somehow optimize isDirect) ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From aph at redhat.com Mon Aug 2 16:38:02 2021 From: aph at redhat.com (Andrew Haley) Date: Mon, 2 Aug 2021 17:38:02 +0100 Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases In-Reply-To: References: Message-ID: <9667816a-77e5-769f-466d-8eccf339eaf2@redhat.com> On 8/2/21 5:30 PM, Rados?aw Smogura wrote: > > Here are my results from cloud without unrolling fix and with unrolling fix cherry picked (1 fork, 0.5 sec test): > > Benchmark ???????????????????????????????(size) ??Mode ?Cnt ?????Score ????Error ?Units > ByteBufferVectorAccess.directBuffers ????524288 ?thrpt ??10 ?35105.776 ? 166.178 ?ops/s > ByteBufferVectorAccess.heapBuffers ??????524288 ?thrpt ??10 ?36401.373 ? 102.513 ?ops/s > > > Benchmark ???????????????????????????????(size) ??Mode ?Cnt ?????Score ????Error ?Units > ByteBufferVectorAccess.directBuffers ????524288 ?thrpt ??10 ?70723.249 ? 548.895 ?ops/s > ByteBufferVectorAccess.heapBuffers ??????524288 ?thrpt ??10 ?69522.365 ? 891.461 ?ops/s > > I don't know capacity of this offering. That's fab. Looks like we're hitting the bandwidth of the memory system! Good job. -- Andrew Haley (he/him) Java Platform Lead Engineer Red Hat UK Ltd. https://keybase.io/andrewhaley EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671 From github.com+7535718+rsmogura at openjdk.java.net Mon Aug 2 19:23:04 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Mon, 2 Aug 2021 19:23:04 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v3] In-Reply-To: References: Message-ID: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: Revert "Refactor: use library access checks" This reverts commit 0caf08550d96a7630049946fcd49371f6b7d592c. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/4f44dbc8..ed6c744d Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=02 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=01-02 Stats: 345 lines in 5 files changed: 157 ins; 176 del; 12 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Mon Aug 2 21:02:24 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Mon, 2 Aug 2021 21:02:24 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v4] In-Reply-To: References: Message-ID: <0RuYBJQwcDnVYbesSo6v3aOEG05HB0T32DS8mWke1NQ=.72cc0e0a-bdc8-4f5e-8f9e-2349b1ac1f40@github.com> > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: Support polluted cases. Factor load and stores to supported polluted cases. Use more immutable memory and instance fields, to avoid virtual calls. Use immutable memory to help unswitching loops. This code works suspicousyly well (I see loop get unswitched 4 times). ``` Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.arrayCopy 1024 avgt 10 14.524 ? 0.356 ns/op ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.633 ? 0.137 ns/op ByteBufferVectorAccess.heapBuffers 1024 avgt 10 19.148 ? 0.505 ns/op ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 31.682 ? 0.762 ns/op ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 74.878 ? 1.127 ns/op ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 71.133 ? 1.822 ns/op ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 66.990 ? 1.323 ns/op ``` With loop unrolling ``` Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.arrayCopy 1024 avgt 10 14.517 ? 0.103 ns/op ByteBufferVectorAccess.directBuffers 1024 avgt 10 12.140 ? 0.134 ns/op ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 34.582 ? 0.250 ns/op ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 69.405 ? 0.845 ns/op ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 58.719 ? 0.491 ns/op ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 60.044 ? 0.338 ns/op ``` plus heap buff which sometimes executes slower... ``` ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.423 ns/op ``` ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/ed6c744d..4852ea23 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=03 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=02-03 Stats: 403 lines in 11 files changed: 287 ins; 0 del; 116 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 3 07:00:43 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 3 Aug 2021 07:00:43 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v5] In-Reply-To: References: Message-ID: <27Cs2W0SUMa0iBHIRgYtyNWov-iBcmMFuTzUCMPkTes=.f2b8fdec-f32f-4140-af21-0987bef2319d@github.com> > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: Remove some accidental line ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/4852ea23..fe190ec3 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=04 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=03-04 Stats: 1 line in 1 file changed: 0 ins; 1 del; 0 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From mcimadamore at openjdk.java.net Tue Aug 3 09:18:55 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Tue, 3 Aug 2021 09:18:55 GMT Subject: [foreign-memaccess+abi] RFR: 8270851: Logic for attaching/detaching native threads could be improved In-Reply-To: References: Message-ID: On Fri, 16 Jul 2021 15:59:18 GMT, Maurizio Cimadamore wrote: > For a complete description of the issue, please refer to: > > https://bugs.openjdk.java.net/browse/JDK-8270851 > > This patch makes the logic for detaching native threads more lazy - by only doing the detach when a native thread has completed. This is achieved by using some thread local storage, which is used to keep track of the Java thread associated to a given native thread. If, by the time the thread local storage is destroyed, we see that a Java thread has been attached, we do a detach operation. This trick effectively minimizes the number of Thread instances created when interacting with multi-threaded native code. > > This patch also tweaks the logic for attaching native threads to the VM by using the "daemon" attach variant. That is, native threads registered against the VM (because of Panama upcalls) should not prevent the JVM to shut down in an orderly fashion (in cases where the native threads might outlive the JVM). Thanks David - I think Jorn and I came up with a possible, different idea to handle this - which is to attach the lifecycle of the attached threads to the resource scope used to create an upcall. That way, when the upcall stub is destroyed, any threads that happened to call it would be deattached by the VM. We need to do some experiments, as this approach could be problematic in cases where the same native thread calls different upcall stubs - but it seems worthwhile exploring. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/570 From maurizio.cimadamore at oracle.com Tue Aug 3 09:24:22 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 3 Aug 2021 10:24:22 +0100 Subject: [foreign-memaccess+abi] RFR: Add var handle support for boolean and MemoryAddress carrier In-Reply-To: References: Message-ID: <62b80e2d-62bb-8321-e41f-403b8e6893ec@oracle.com> I've been away, I'll take a look. Thanks Maurizio On 24/07/2021 21:55, Ty Young wrote: > Can this be merged? > > > On 7/13/21 6:42 AM, Maurizio Cimadamore wrote: >> Add var handle support for boolean and MemoryAddress carrier >> >> ------------- >> >> Commit messages: >> ? - Merge branch 'foreign-memaccess+abi' into handle_address >> ? - Add support for C_BOOL layout in CLinker >> ? - Revert spurious changes >> ? - Drop support for bulk operations for boolean[] >> ? - Optimize bulk copy with booleans >> ? - Remove boolean[] segment views >> ? - Initial push >> >> Changes: https://git.openjdk.java.net/panama-foreign/pull/564/files >> ? Webrev: >> https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=564&range=00 >> ?? Stats: 245 lines in 23 files changed: 180 ins; 20 del; 45 mod >> ?? Patch: https://git.openjdk.java.net/panama-foreign/pull/564.diff >> ?? Fetch: git fetch https://git.openjdk.java.net/panama-foreign >> pull/564/head:pull/564 >> >> PR: https://git.openjdk.java.net/panama-foreign/pull/564 From paul.sandoz at oracle.com Tue Aug 3 16:53:35 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Tue, 3 Aug 2021 16:53:35 +0000 Subject: CFV: New Panama Committer: Eric Liu In-Reply-To: <1491a1dc-32a3-bbe8-1f7e-9f3b928b9e80@arm.com> References: <1491a1dc-32a3-bbe8-1f7e-9f3b928b9e80@arm.com> Message-ID: <445AEC5A-3CA2-47F3-B32B-90FACEBBD624@oracle.com> Vote: yes Paul. From duke at openjdk.java.net Tue Aug 3 18:04:32 2021 From: duke at openjdk.java.net (duke) Date: Tue, 3 Aug 2021 18:04:32 GMT Subject: git: openjdk/panama-foreign: foreign-jextract: 2 new changesets Message-ID: Changeset: ca701b8a Author: Maurizio Cimadamore Date: 2021-08-03 18:02:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ca701b8a67c3f10b8e279a5a45b628fe5c54c2aa Add var handle support for boolean and MemoryAddress carrier Reviewed-by: jvernee, psandoz ! src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/CLinker.java ! src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryAccess.java ! src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryHandles.java ! src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java ! src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayouts.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/LayoutPath.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/PlatformLayouts.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/Utils.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/Binding.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/SharedUtils.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/aarch64/TypeClass.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/aarch64/linux/LinuxAArch64VaList.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/aarch64/macos/MacOsAArch64VaList.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/x64/sysv/SysVVaList.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/x64/sysv/TypeClass.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/x64/windows/TypeClass.java ! src/jdk.incubator.foreign/share/classes/jdk/internal/foreign/abi/x64/windows/WinVaList.java ! test/jdk/java/foreign/TestIllegalLink.java ! test/jdk/java/foreign/TestIntrinsics.java ! test/jdk/java/foreign/TestMemoryAccess.java ! test/jdk/java/foreign/TestMemoryAccessStatics.java ! test/jdk/java/foreign/TestVarHandleCombinators.java ! test/jdk/java/foreign/libIntrinsics.c Changeset: 227f12c9 Author: duke Date: 2021-08-03 18:03:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/227f12c93a0f122f77fca9578e8a262c367a7205 Automatic merge of foreign-memaccess+abi into foreign-jextract From mcimadamore at openjdk.java.net Tue Aug 3 18:05:59 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Tue, 3 Aug 2021 18:05:59 GMT Subject: [foreign-memaccess+abi] Integrated: Add var handle support for boolean and MemoryAddress carrier In-Reply-To: References: Message-ID: On Tue, 29 Jun 2021 12:24:52 GMT, Maurizio Cimadamore wrote: > Add var handle support for boolean and MemoryAddress carrier This pull request has now been integrated. Changeset: ca701b8a Author: Maurizio Cimadamore URL: https://git.openjdk.java.net/panama-foreign/commit/ca701b8a67c3f10b8e279a5a45b628fe5c54c2aa Stats: 251 lines in 23 files changed: 178 ins; 26 del; 47 mod Add var handle support for boolean and MemoryAddress carrier Reviewed-by: jvernee, psandoz ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/564 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 3 18:52:15 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 3 Aug 2021 18:52:15 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v6] In-Reply-To: References: Message-ID: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: Benchamk fixes ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/fe190ec3..dc5ef5a1 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=05 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=04-05 Stats: 4 lines in 1 file changed: 0 ins; 0 del; 4 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 3 18:57:45 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 3 Aug 2021 18:57:45 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v6] In-Reply-To: References: Message-ID: On Tue, 3 Aug 2021 18:52:15 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: > > Benchamk fixes Hi all, I think that for this PR, I rather don't want to push more changes. It already stepped out from the original concern of optimizing mem-bars, to optimizing polluted cases. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From psandoz at openjdk.java.net Tue Aug 3 19:22:44 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Tue, 3 Aug 2021 19:22:44 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v6] In-Reply-To: References: Message-ID: On Tue, 3 Aug 2021 18:54:24 GMT, Radoslaw Smogura wrote: > Hi all, I think that for this PR, I rather don't want to push more changes. It already stepped out from the original concern of optimizing mem-bars, to optimizing polluted cases. Yeah, I am inclined to dial back to focus this PR on just the non-polluted cases. AFAICT I think we can get a set of minimal changes using casting and unsafe for accessing buffer state with no need to modify byte buffer code or branch on heao/direct. WDYT? We can then expand later with further experiments for polluted cases, evaluating the costs and benefits. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 3 19:55:58 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 3 Aug 2021 19:55:58 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v6] In-Reply-To: References: Message-ID: On Tue, 3 Aug 2021 19:19:23 GMT, Paul Sandoz wrote: > > Hi all, I think that for this PR, I rather don't want to push more changes. It already stepped out from the original concern of optimizing mem-bars, to optimizing polluted cases. > > Yeah, I am inclined to dial back to focus this PR on just the non-polluted cases. > AFAICT I think we can get a set of minimal changes using casting and unsafe for accessing buffer state with no need to modify byte buffer code or branch on heao/direct. WDYT? > > We can then expand later with further experiments for polluted cases, evaluating the costs and benefits. Definitely, to all of the above (branching actually was added for polluted cases) - this went too big. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 3 20:49:07 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 3 Aug 2021 20:49:07 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v7] In-Reply-To: References: Message-ID: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with two additional commits since the last revision: - Put barrier when accessing on-heap types which may not be an array - Revert: polluted case support This is not something we want to fix with this PR, and can be moved to other PR. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/dc5ef5a1..b315eafa Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=06 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=05-06 Stats: 398 lines in 11 files changed: 20 ins; 253 del; 125 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 3 21:19:15 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 3 Aug 2021 21:19:15 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v8] In-Reply-To: References: Message-ID: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: Minor stylistic fixes. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/b315eafa..472f0a17 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=07 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=06-07 Stats: 3 lines in 1 file changed: 0 ins; 0 del; 3 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From xgong at openjdk.java.net Wed Aug 4 01:16:46 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Wed, 4 Aug 2021 01:16:46 GMT Subject: [vectorIntrinsics+mask] RFR: 8271273: Java API and IR changes for masked compare operation [v3] In-Reply-To: <7OBHVWB6wu2yZMOqHp5nwVa9wzLUeOcL1vEb8zd-cd0=.23ee6df6-01f7-462d-997e-3b76fabd7f0a@github.com> References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> <7OBHVWB6wu2yZMOqHp5nwVa9wzLUeOcL1vEb8zd-cd0=.23ee6df6-01f7-462d-997e-3b76fabd7f0a@github.com> Message-ID: On Mon, 2 Aug 2021 13:29:20 GMT, Jatin Bhateja wrote: >> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. >> - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by performing vector AND b/w comparison result and explicit mask. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8271273: Review comments + compare(v1,v2).and(m) => compare(v1,v2,m) Marked as reviewed by xgong (Committer). LGTM, thanks! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/103 From xgong at openjdk.java.net Wed Aug 4 01:26:05 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Wed, 4 Aug 2021 01:26:05 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer Message-ID: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> This patch adds the predicate support for the following masked vector load/store operations: - fromByteArray/fromByteBuffer - intoByteArray/intoByteBuffer The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. Note that this patch doesn't contain any backend changes. ------------- Commit messages: - 8271539: Add masking support for load/store from/into byte array/buffer Changes: https://git.openjdk.java.net/panama-vector/pull/107/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=107&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8271539 Stats: 1668 lines in 41 files changed: 1536 ins; 78 del; 54 mod Patch: https://git.openjdk.java.net/panama-vector/pull/107.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/107/head:pull/107 PR: https://git.openjdk.java.net/panama-vector/pull/107 From xgong at openjdk.java.net Wed Aug 4 01:26:05 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Wed, 4 Aug 2021 01:26:05 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 01:20:30 GMT, Xiaohong Gong wrote: > This patch adds the predicate support for the following masked vector load/store operations: > - fromByteArray/fromByteBuffer > - intoByteArray/intoByteBuffer > > The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. > > Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. > > Note that this patch doesn't contain any backend changes. Hi @PaulSandoz @jatin-bhateja , could you please do me a favor to kindly take a look at this PR? Thanks in advance! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From psandoz at openjdk.java.net Wed Aug 4 15:42:44 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Wed, 4 Aug 2021 15:42:44 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v8] In-Reply-To: References: Message-ID: On Tue, 3 Aug 2021 21:19:15 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: > > Minor stylistic fixes. Appreciate all your efforts and explorations. We have been at this for a few rounds and it looks like we are getting close. Two things: 1. Did you ever get the `VectorMemoryAlias` test to fail e.g. by deliberately disabling the barriers? 2. I think we should use unsafe to test for a read only buffer. We can follow up with another PR. (My hope is this might can also resolve the issue with tiered compilation and heap buffers i was observing.) src/hotspot/share/opto/vectorIntrinsics.cpp line 781: > 779: const TypeAryPtr* arr_type = addr_type->isa_aryptr(); > 780: > 781: if (arr_type == NULL && !off_heap_access) { Not sure this case can occur, since we only pass array instances or `null` and we cannot pollute with different types of array. Might need some guidance from a HotSpot expert? Perhaps we can remove this code or place in an assert? We do have a form of mismatched access between `char[]` and `ShortVector` and `boolean[]` and `ByteVector` but that's a different case. src/java.base/share/classes/jdk/internal/misc/X-ScopedMemoryAccess.java.template line 421: > 419: bb, offset, s, > 420: defaultImpl); > 421: } Can we try collapsing that to: Suggestion: return VectorSupport.load(vmClass, e, length, base, BufferAccess.bufferAddress(bb, offset), bb, offset, s, defaultImpl); ? That appeared to be ok when i ran the benchmark for the non-polluted cases. test/hotspot/jtreg/compiler/vectorapi/VectorMemoryAlias.java line 58: > 56: final var bb = ByteBuffer.wrap(arr); > 57: final var vs = VectorSpecies.ofLargestShape(byte.class); > 58: final var ones = ByteVector.broadcast(vs, 1); Make these static finals (or at least the former)? test/micro/org/openjdk/bench/jdk/incubator/vector/ByteBufferVectorAccess.java line 146: > 144: > 145: @CompilerControl(CompilerControl.Mode.DONT_INLINE) > 146: protected void copyMemory(ByteBuffer in, ByteBuffer out) { We may want to create a wrapping method that is not inlined just for the polluted cases e.g. `copyIntoNotInlined` calling `copyMemory`? Thereby we avoid the measurement of a method call in the non-polluted cases so as to compare more fairly with `arrayCopy`? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From psandoz at openjdk.java.net Wed Aug 4 16:01:51 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Wed, 4 Aug 2021 16:01:51 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 01:20:30 GMT, Xiaohong Gong wrote: > This patch adds the predicate support for the following masked vector load/store operations: > - fromByteArray/fromByteBuffer > - intoByteArray/intoByteBuffer > > The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. > > Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. > > Note that this patch doesn't contain any backend changes. I browsed through but need to go through in more detail, but i have a question. You fixed an issue with `AbstractMask.checkIndexByLane`. I am wondering if our tests are insufficient or that this change exposed a bug and the tests previously passed because the fallback correctly failed when accessing out-of-bounds? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From github.com+7535718+rsmogura at openjdk.java.net Wed Aug 4 16:45:47 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Wed, 4 Aug 2021 16:45:47 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v8] In-Reply-To: References: Message-ID: On Wed, 4 Aug 2021 15:12:35 GMT, Paul Sandoz wrote: >> Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: >> >> Minor stylistic fixes. > > src/java.base/share/classes/jdk/internal/misc/X-ScopedMemoryAccess.java.template line 421: > >> 419: bb, offset, s, >> 420: defaultImpl); >> 421: } > > Can we try collapsing that to: > Suggestion: > > return VectorSupport.load(vmClass, e, length, > base, BufferAccess.bufferAddress(bb, offset), > bb, offset, s, > defaultImpl); > > ? That appeared to be ok when i ran the benchmark for the non-polluted cases. When I reverted changes I took base as `Object`, from `BufferAccess`, and did not work. Looks like cast to byte[] implies some kind of null checks, and we can use this. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From jbhateja at openjdk.java.net Wed Aug 4 17:54:47 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Wed, 4 Aug 2021 17:54:47 GMT Subject: [vectorIntrinsics+mask] RFR: 8271273: Java API and IR changes for masked compare operation [v3] In-Reply-To: References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> <7OBHVWB6wu2yZMOqHp5nwVa9wzLUeOcL1vEb8zd-cd0=.23ee6df6-01f7-462d-997e-3b76fabd7f0a@github.com> Message-ID: On Mon, 2 Aug 2021 15:17:26 GMT, Paul Sandoz wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8271273: Review comments + compare(v1,v2).and(m) => compare(v1,v2,m) > >> @reviewers , please let me know if its good to integrate now. > > Java changes look good (glad you found a few missing masked compare cases.) Thanks @PaulSandoz @XiaohongGong , integrating the patch. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/103 From jbhateja at openjdk.java.net Wed Aug 4 17:54:48 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Wed, 4 Aug 2021 17:54:48 GMT Subject: [vectorIntrinsics+mask] Integrated: 8271273: Java API and IR changes for masked compare operation In-Reply-To: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> References: <_Egacg0DSynsRLZ68sBxIKKkKnaM14DYRXoM6fP4OlI=.544ff6dd-65c5-4031-a2d4-71ee3171b953@github.com> Message-ID: On Mon, 26 Jul 2021 09:33:38 GMT, Jatin Bhateja wrote: > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by performing vector AND b/w comparison result and explicit mask. This pull request has now been integrated. Changeset: df552629 Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/df552629eea3a01d201bc3f2d2b26549936e13a2 Stats: 534 lines in 41 files changed: 403 ins; 98 del; 33 mod 8271273: Java API and IR changes for masked compare operation Reviewed-by: xgong ------------- PR: https://git.openjdk.java.net/panama-vector/pull/103 From github.com+7535718+rsmogura at openjdk.java.net Wed Aug 4 21:00:14 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Wed, 4 Aug 2021 21:00:14 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v9] In-Reply-To: References: Message-ID: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: Code review changes: * make specied final static in test * use Unsafe to check if ByteBuffer is readOnly * remove if in X-ScopedMemory when loading / storing vectors, stay with byte[] cast * inline copyMemory in micro benchmark ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/472f0a17..ccb7e68f Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=08 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=07-08 Stats: 70 lines in 11 files changed: 13 ins; 23 del; 34 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Wed Aug 4 21:08:53 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Wed, 4 Aug 2021 21:08:53 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v6] In-Reply-To: References: Message-ID: <-mapkbZ4DdLLlT3Sz327_VuCmnBw8AgvkY3_XvQCI2o=.a170be81-68c1-4f9b-ac46-327c0e68419a@github.com> On Tue, 3 Aug 2021 19:19:23 GMT, Paul Sandoz wrote: >> Hi all, I think that for this PR, I rather don't want to push more changes. It already stepped out from the original concern of optimizing mem-bars, to optimizing polluted cases. > >> Hi all, I think that for this PR, I rather don't want to push more changes. It already stepped out from the original concern of optimizing mem-bars, to optimizing polluted cases. > > Yeah, I am inclined to dial back to focus this PR on just the non-polluted cases. > AFAICT I think we can get a set of minimal changes using casting and unsafe for accessing buffer state with no need to modify byte buffer code or branch on heao/direct. WDYT? > > We can then expand later with further experiments for polluted cases, evaluating the costs and benefits. Hi @PaulSandoz, thank you for your suggestions and please check a new revision. The test `VectorMemoryAlias` will fail if barriers will be removed in C++ code (and we have as well drop changes in `X-ScopedMemoryAccess` to avoid null checks). --- I'm checking as well another approach, which I came out with today. The purpose of barriers is to "refresh" memory in case of mixed access. However what if in case of mixed access, we would do: * for a store we could assign result of StoreVector to two slices raw, and byte[] in a memory merge node, * for a load, we could consume the whole memory as input, instead of a single slice. Do you think this makes sense? [1] https://github.com/rsmogura/panama-vector/commits/merege-mem-instead-of-barier ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From vlivanov at openjdk.java.net Wed Aug 4 21:19:50 2021 From: vlivanov at openjdk.java.net (Vladimir Ivanov) Date: Wed, 4 Aug 2021 21:19:50 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v9] In-Reply-To: References: Message-ID: <9QAshoCbwk8z3gYufbl7_iu7uWfknPZE7yjYJcMLzTM=.79c1f2d5-a13c-4fad-9177-b7161ddc96c1@github.com> On Wed, 4 Aug 2021 21:00:14 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: > > Code review changes: > * make specied final static in test > * use Unsafe to check if ByteBuffer is readOnly > * remove if in X-ScopedMemory when loading / storing vectors, > stay with byte[] cast > * inline copyMemory in micro benchmark `.gitignore` changes are unrelated. You reverted mismatched access checks. Please, bring them back. src/hotspot/share/opto/vectorIntrinsics.cpp line 837: > 835: const TypeInstPtr* vbox_type = TypeInstPtr::make_exact(TypePtr::NotNull, vbox_klass); > 836: > 837: if (mixed_access) { I suggest the following shapes for the checks: const bool in_native = (TypePtr::NULL_PTR == base_type); // base always null const bool in_heap = !TypePtr::NULL_PTR->higher_equal(base_type); // base never null const bool is_mixed_access = !in_heap && !in_native; const bool is_mismatched_access = in_heap && (addr_type->isa_aryptr() == NULL); const bool needs_cpu_membar = is_mixed_access || is_mismatched_access; ------------- Changes requested by vlivanov (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/104 From vlivanov at openjdk.java.net Wed Aug 4 21:42:41 2021 From: vlivanov at openjdk.java.net (Vladimir Ivanov) Date: Wed, 4 Aug 2021 21:42:41 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v6] In-Reply-To: <-mapkbZ4DdLLlT3Sz327_VuCmnBw8AgvkY3_XvQCI2o=.a170be81-68c1-4f9b-ac46-327c0e68419a@github.com> References: <-mapkbZ4DdLLlT3Sz327_VuCmnBw8AgvkY3_XvQCI2o=.a170be81-68c1-4f9b-ac46-327c0e68419a@github.com> Message-ID: On Wed, 4 Aug 2021 21:06:07 GMT, Radoslaw Smogura wrote: > for a store we could assign result of StoreVector to two slices raw, and byte[] in a memory merge node, I don't see how it could work with the alias analysis (as it is implemented now). Every memory slice is "flattened" into a unique slice which doesn't alias with anything except the one represented with `TypePtr::BOTTOM`. What you suggest implies that some slices start to alias with raw memory. It will break the existing logic unless you find a smart way to fix it. > for a load, we could consume the whole memory as input, instead of a single slice. Still, you need to be very cautious about the alias index being assigned to the "wide" memory slice of mixed/mismatched access. Also, the logic which inserts anti-dependencies in the graph has to be taught about the aliasing slices. Overall, it looks error-prone and it wouldn't necessarily lead to a simpler IR (and better generated code) compared to CPU membars. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Wed Aug 4 22:44:09 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Wed, 4 Aug 2021 22:44:09 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v10] In-Reply-To: References: Message-ID: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op Radoslaw Smogura has updated the pull request incrementally with two additional commits since the last revision: - Revert: gitignore(s) - CR changes: * reformat checks * bring array mismatched access back ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/104/files - new: https://git.openjdk.java.net/panama-vector/pull/104/files/ccb7e68f..542ce4c1 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=09 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=104&range=08-09 Stats: 18 lines in 2 files changed: 1 ins; 8 del; 9 mod Patch: https://git.openjdk.java.net/panama-vector/pull/104.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/104/head:pull/104 PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Wed Aug 4 22:44:13 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Wed, 4 Aug 2021 22:44:13 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v9] In-Reply-To: <9QAshoCbwk8z3gYufbl7_iu7uWfknPZE7yjYJcMLzTM=.79c1f2d5-a13c-4fad-9177-b7161ddc96c1@github.com> References: <9QAshoCbwk8z3gYufbl7_iu7uWfknPZE7yjYJcMLzTM=.79c1f2d5-a13c-4fad-9177-b7161ddc96c1@github.com> Message-ID: <6d8g6UTHb6TU045RAtBHVsEocG_uW5-q6FVC5psaja8=.dd76be36-1c39-478b-bd7e-28fa087e009e@github.com> On Wed, 4 Aug 2021 21:16:19 GMT, Vladimir Ivanov wrote: >> Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision: >> >> Code review changes: >> * make specied final static in test >> * use Unsafe to check if ByteBuffer is readOnly >> * remove if in X-ScopedMemory when loading / storing vectors, >> stay with byte[] cast >> * inline copyMemory in micro benchmark > > src/hotspot/share/opto/vectorIntrinsics.cpp line 837: > >> 835: const TypeInstPtr* vbox_type = TypeInstPtr::make_exact(TypePtr::NotNull, vbox_klass); >> 836: >> 837: if (mixed_access) { > > I suggest the following shapes for the checks: > > const bool in_native = (TypePtr::NULL_PTR == base_type); // base always null > const bool in_heap = !TypePtr::NULL_PTR->higher_equal(base_type); // base never null > > const bool is_mixed_access = !in_heap && !in_native; > > const bool is_mismatched_access = in_heap && (addr_type->isa_aryptr() == NULL); > > const bool needs_cpu_membar = is_mixed_access || is_mismatched_access; Thank you, fixed, we were not sure if mismatched access should be there. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From xgong at openjdk.java.net Thu Aug 5 01:22:45 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Thu, 5 Aug 2021 01:22:45 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 15:58:44 GMT, Paul Sandoz wrote: > I browsed through but need to go through in more detail, but i have a question. You fixed an issue with `AbstractMask.checkIndexByLane`. I am wondering if our tests are insufficient or that this change exposed a bug and the tests previously passed because the fallback correctly failed when accessing out-of-bounds? Yes, I think this change exposed this issue and the tests previously passed because the default java implementation could throw the expected IOOB exception. The original masked ` intoByteArray/intoByteBuffer` APIs are not vectorized. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From sundar at openjdk.java.net Thu Aug 5 06:14:00 2021 From: sundar at openjdk.java.net (Athijegannathan Sundararajan) Date: Thu, 5 Aug 2021 06:14:00 GMT Subject: [foreign-jextract] RFR: 8271922: After var handle support for boolean and MemoryAddress carrier jextract fails to compile Message-ID: added BOOL case ------------- Commit messages: - 8271922: After var handle support for boolean and MemoryAddress carrier jextract fails to compile Changes: https://git.openjdk.java.net/panama-foreign/pull/574/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=574&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8271922 Stats: 1 line in 1 file changed: 1 ins; 0 del; 0 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/574.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/574/head:pull/574 PR: https://git.openjdk.java.net/panama-foreign/pull/574 From sundar at openjdk.java.net Thu Aug 5 07:16:14 2021 From: sundar at openjdk.java.net (Athijegannathan Sundararajan) Date: Thu, 5 Aug 2021 07:16:14 GMT Subject: [foreign-jextract] RFR: 8271922: After var handle support for boolean and MemoryAddress carrier jextract fails to compile [v2] In-Reply-To: References: Message-ID: > added BOOL case Athijegannathan Sundararajan has updated the pull request incrementally with one additional commit since the last revision: simplifying CLinker.TypeKind enum to generated layout mapping ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/574/files - new: https://git.openjdk.java.net/panama-foreign/pull/574/files/da8e3b81..0e8e9c00 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=574&range=01 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=574&range=00-01 Stats: 11 lines in 1 file changed: 0 ins; 10 del; 1 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/574.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/574/head:pull/574 PR: https://git.openjdk.java.net/panama-foreign/pull/574 From mcimadamore at openjdk.java.net Thu Aug 5 10:17:57 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Thu, 5 Aug 2021 10:17:57 GMT Subject: [foreign-jextract] RFR: 8271922: After var handle support for boolean and MemoryAddress carrier jextract fails to compile [v2] In-Reply-To: References: Message-ID: <9QASQHi9GerYn1X5U5EwJwI0wYhhhgNcdrNWYXanf-A=.031413e8-26ad-4797-b347-a4deba362a49@github.com> On Thu, 5 Aug 2021 07:16:14 GMT, Athijegannathan Sundararajan wrote: >> added BOOL case > > Athijegannathan Sundararajan has updated the pull request incrementally with one additional commit since the last revision: > > simplifying CLinker.TypeKind enum to generated layout mapping Looks good ------------- Marked as reviewed by mcimadamore (Committer). PR: https://git.openjdk.java.net/panama-foreign/pull/574 From sundar at openjdk.java.net Thu Aug 5 10:39:50 2021 From: sundar at openjdk.java.net (Athijegannathan Sundararajan) Date: Thu, 5 Aug 2021 10:39:50 GMT Subject: [foreign-jextract] Integrated: 8271922: After var handle support for boolean and MemoryAddress carrier jextract fails to compile In-Reply-To: References: Message-ID: On Thu, 5 Aug 2021 06:07:52 GMT, Athijegannathan Sundararajan wrote: > added BOOL case This pull request has now been integrated. Changeset: 4e47b211 Author: Athijegannathan Sundararajan URL: https://git.openjdk.java.net/panama-foreign/commit/4e47b2112372903406c24bfc6287eb83ef9e7614 Stats: 10 lines in 1 file changed: 0 ins; 9 del; 1 mod 8271922: After var handle support for boolean and MemoryAddress carrier jextract fails to compile Reviewed-by: mcimadamore ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/574 From mcimadamore at openjdk.java.net Thu Aug 5 10:44:16 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Thu, 5 Aug 2021 10:44:16 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v6] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore 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 12 additional commits since the last revision: - Fix javadoc - Address review comments - Merge branch 'foreign-memaccess+abi' into memorycopy_finalize - Update test/jdk/java/foreign/TestCopyFrom.java Co-authored-by: Jorn Vernee - Make `copyFrom` a default method - Drop memory copy primitive using Object, but keep internal centralized implementation Move MemorySegment copy methods as static methods in MemorySegment - Fix whitespaces - Consolidate copy to/from array methods to reuse same underlying implementation. - Fix jaavdoc warning - Remove comments from StdLibTest - ... and 2 more: https://git.openjdk.java.net/panama-foreign/compare/ca84f911...342d1c82 ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/49e3cfbd..342d1c82 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=05 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=04-05 Stats: 16570 lines in 655 files changed: 9824 ins; 3052 del; 3694 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From vlivanov at openjdk.java.net Thu Aug 5 11:16:48 2021 From: vlivanov at openjdk.java.net (Vladimir Ivanov) Date: Thu, 5 Aug 2021 11:16:48 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v10] In-Reply-To: References: Message-ID: On Wed, 4 Aug 2021 22:44:09 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with two additional commits since the last revision: > > - Revert: gitignore(s) > - CR changes: > * reformat checks > * bring array mismatched access back Looks good. ------------- Marked as reviewed by vlivanov (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/104 From psandoz at openjdk.java.net Thu Aug 5 15:18:48 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Thu, 5 Aug 2021 15:18:48 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v10] In-Reply-To: References: Message-ID: On Wed, 4 Aug 2021 22:44:09 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with two additional commits since the last revision: > > - Revert: gitignore(s) > - CR changes: > * reformat checks > * bring array mismatched access back Very good. After integration i think we can provide a PR to the jdk repository. ------------- Marked as reviewed by psandoz (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Thu Aug 5 18:16:45 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Thu, 5 Aug 2021 18:16:45 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v10] In-Reply-To: References: Message-ID: <_aUddpAO9nye8jUXNy4MdaSDXG-AEjASwOCsR0iUfCg=.ae361922-3838-420c-a82e-fa2a3bf47e68@github.com> On Wed, 4 Aug 2021 22:44:09 GMT, Radoslaw Smogura wrote: >> # Description >> This change tries to remove mem bars for byte buffer cases. >> >> Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). >> >> # Testing >> Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded >> >> # Notes >> Polluted cases to be addressed later >> >> # Benchmarks >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op >> >> Before >> >> Benchmark (size) Mode Cnt Score Error Units >> ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op >> ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op >> ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op >> ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op >> ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op > > Radoslaw Smogura has updated the pull request incrementally with two additional commits since the last revision: > > - Revert: gitignore(s) > - CR changes: > * reformat checks > * bring array mismatched access back > > for a store we could assign result of StoreVector to two slices raw, and byte[] in a memory merge node, > > I don't see how it could work with the alias analysis (as it is implemented now). > Every memory slice is "flattened" into a unique slice which doesn't alias with anything except the one represented with `TypePtr::BOTTOM`. What you suggest implies that some slices start to alias with raw memory. It will break the existing logic unless you find a smart way to fix it. > > > for a load, we could consume the whole memory as input, instead of a single slice. > > Still, you need to be very cautious about the alias index being assigned to the "wide" memory slice of mixed/mismatched access. Also, the logic which inserts anti-dependencies in the graph has to be taught about the aliasing slices. > > Overall, it looks error-prone and it wouldn't necessarily lead to a simpler IR (and better generated code) compared to CPU members. There was a comment in memnode.cpp: "A merge can take a "wide" memory state as one of its narrow inputs. This simply means that the merge observes out only the relevant parts of the wide input (...) (This is rare.)" So, I thought we could mark mixed store / load as delivering wide memory and assign it to only two slices which can be potentially modified (we know that only one slice will be physically modified). That was more or less one of the reasons I thought we could do this. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Thu Aug 5 18:19:43 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Thu, 5 Aug 2021 18:19:43 GMT Subject: [vectorIntrinsics] RFR: Optimize mem barriers for ByteBuffer cases [v10] In-Reply-To: References: Message-ID: On Thu, 5 Aug 2021 15:16:05 GMT, Paul Sandoz wrote: > Very good. After integration i think we can provide a PR to the jdk repository. Thank you all. And sorry for causing maybe too much bother. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From github.com+7535718+rsmogura at openjdk.java.net Thu Aug 5 18:23:46 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Thu, 5 Aug 2021 18:23:46 GMT Subject: [vectorIntrinsics] Integrated: Optimize mem barriers for ByteBuffer cases In-Reply-To: References: Message-ID: On Tue, 27 Jul 2021 20:42:13 GMT, Radoslaw Smogura wrote: > # Description > This change tries to remove mem bars for byte buffer cases. > > Previously mem bars were inserted almost unconditionally if attemp to native memory acees where detected. This patch tries to follow up inline_unsafe_access and insert bar only if can't determine if it's heap or off-heap (type missmatch cases are not ported). > > # Testing > Memory tests should include rollbacking JDK changes, and leaving only hotspot, as intrinsics should be well guarded > > # Notes > Polluted cases to be addressed later > > # Benchmarks > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 12.585 ? 0.409 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 19.962 ? 0.080 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 15.878 ? 0.187 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 123.702 ? 0.723 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 223.928 ? 1.906 ns/op > > Before > > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.arrays 1024 avgt 10 14.730 ? 0.061 ns/op > ByteBufferVectorAccess.directBuffers 1024 avgt 10 77.707 ? 4.867 ns/op > ByteBufferVectorAccess.heapBuffers 1024 avgt 10 76.530 ? 1.076 ns/op > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 143.331 ? 1.096 ns/op > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 286.645 ? 3.444 ns/op This pull request has now been integrated. Changeset: 18eda964 Author: Rado Smogura Committer: Paul Sandoz URL: https://git.openjdk.java.net/panama-vector/commit/18eda964a6eaaabd060492e371b1475ec2e9531b Stats: 265 lines in 11 files changed: 247 ins; 0 del; 18 mod Optimize mem barriers for ByteBuffer cases Reviewed-by: psandoz, vlivanov ------------- PR: https://git.openjdk.java.net/panama-vector/pull/104 From duke at openjdk.java.net Fri Aug 6 11:06:34 2021 From: duke at openjdk.java.net (duke) Date: Fri, 6 Aug 2021 11:06:34 GMT Subject: git: openjdk/panama-foreign: master: 97 new changesets Message-ID: Changeset: 9856ace8 Author: Christian Hagedorn Date: 2021-07-30 12:28:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9856ace828617d3f2f9a6282e650009d3af65749 8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java ! test/hotspot/jtreg/compiler/lib/ir_framework/Test.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/TestVMProcess.java ! test/hotspot/jtreg/compiler/lib/ir_framework/shared/TestFrameworkSocket.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/TestVM.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java Changeset: 89f5c96d Author: Sean Mullan Date: 2021-07-30 12:43:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/89f5c96d63a7a08e0b4145eee83a946fc99141e4 8232066: Remove outdated code/methods from PKIX implementation Reviewed-by: weijun ! src/java.base/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.base/share/classes/sun/security/provider/certpath/PKIX.java ! src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java ! src/java.base/share/classes/sun/security/validator/EndEntityChecker.java ! src/java.base/share/classes/sun/security/validator/PKIXValidator.java ! src/java.base/share/classes/sun/security/validator/Validator.java ! test/jdk/sun/security/validator/ConstructorTest.java Changeset: baf7797b Author: Prasanta Sadhukhan Date: 2021-07-30 15:37:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/baf7797b092704d7dc9401db8b3dda19b91be303 8049301: Suspicious use of string identity checks in JComponent.setUIProperty Reviewed-by: azvegint ! src/java.desktop/share/classes/javax/swing/JComponent.java Changeset: 5b3c4182 Author: Sergey Chernyshev Committer: Alexander Scherbatiy Date: 2021-07-30 16:10:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5b3c418249cfb53ae2ba530bcbbcdb5e509e4775 8270321: Startup regressions in 18-b5 caused by JDK-8266310 Reviewed-by: mchung, alanb ! src/java.base/share/classes/jdk/internal/loader/NativeLibraries.java Changeset: cd7e30ef Author: Thomas Stuefe Date: 2021-07-30 16:42:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd7e30ef84165722c2128471231b6000b1c46fb8 8271242: Add Arena regression tests Reviewed-by: mseledtsov, coleenp ! test/hotspot/gtest/memory/test_arena.cpp + test/hotspot/gtest/testutils.cpp + test/hotspot/gtest/testutils.hpp + test/hotspot/jtreg/gtest/ArenaGtests.java Changeset: 6c68ce2d Author: Andrew Haley Date: 2021-07-30 18:02:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c68ce2d396c6fe02201daf2bdb8c164de807cc1 8270947: AArch64: C1: use zero_words to initialize all objects Reviewed-by: ngasson, adinn ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp + test/micro/org/openjdk/bench/vm/gc/RawAllocationRate.java Changeset: 71ca0c08 Author: Jatin Bhateja Date: 2021-07-30 18:28:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/71ca0c08f09e87673f1cf3f918a0802961359166 8270848: Redundant unsafe opmask register allocation in some instruction patterns. Reviewed-by: sviswanathan, kvn ! src/hotspot/cpu/x86/matcher_x86.hpp ! src/hotspot/cpu/x86/x86_32.ad ! src/hotspot/cpu/x86/x86_64.ad Changeset: d6bb8461 Author: Rajan Halade Date: 2021-07-30 20:16:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d6bb846159be7e46fba0c3ca2915617f945e0b42 8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked Reviewed-by: mullan ! test/jdk/ProblemList.txt ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java Changeset: 4bc9b049 Author: Rajan Halade Date: 2021-07-30 20:29:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4bc9b049846bd59f5c41bd62a59b567b52c9efc5 8263059: security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java fails due to revoked cert Reviewed-by: mullan ! test/jdk/ProblemList.txt ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java Changeset: a1b5b818 Author: Chris Plummer Date: 2021-07-30 00:56:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a1b5b818c5e276c21c05bce71ca01c18c35aef40 8271507: ProblemList SA tests that are failing with ZGC due to JDK-8248912 Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 6180cf1f Author: Chris Plummer Date: 2021-07-30 01:01:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6180cf1f0d868052709cd55cee53f37f0fc42e21 8271512: ProblemList serviceability/sa/sadebugd/DebugdConnectTest.java due to 8270326 Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList.txt Changeset: e351de3b Author: Roland Westrelin Date: 2021-07-30 07:28:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e351de3bd67773109607db7f4648c173140cb024 8271272: C2: assert(!had_error) failed: bad dominance Reviewed-by: kvn, thartmann, chagedorn ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopopts/TestMainNeverExecuted.java Changeset: 7cc1eb3e Author: Jesper Wilhelmsson Date: 2021-07-30 22:30:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7cc1eb3e571e00f1cbfd62eb843df96ba8e88199 Merge ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt Changeset: 72145f3b Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:46:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/72145f3b9472c8f5f64f9b9ac93e3331e646f15a 8269665: Clean-up toString() methods of some primitive wrappers Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Boolean.java ! src/java.base/share/classes/java/lang/Byte.java ! src/java.base/share/classes/java/lang/Character.java ! src/java.base/share/classes/java/lang/Short.java Changeset: 6c4c48fa Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:47:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c4c48faea8a8309a71d7a5d261f776031014881 8266972: Use String.concat() in j.l.Class where invokedynamic-based String concatenation is not available Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Class.java Changeset: 2536e434 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:48:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2536e4342e6c33c16685c9983b09f83a9c7ea869 8270160: Remove redundant bounds check from AbstractStringBuilder.charAt() Reviewed-by: redestad ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java ! src/java.base/share/classes/java/lang/StringLatin1.java Changeset: 6a3f8343 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:49:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6a3f8343bc0e92c29a87c5840cbef9ab2988f153 8268113: Re-use Long.hashCode() where possible Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Double.java ! src/java.base/share/classes/java/time/LocalTime.java ! src/java.base/share/classes/java/time/temporal/ValueRange.java ! src/java.desktop/macosx/classes/apple/laf/JRSUIConstants.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/DoubleDV.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/Selector.java Changeset: 249d6418 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:50:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/249d641889c6f9aed6957502d5fca9c74c9baceb 8263561: Re-examine uses of LinkedList Reviewed-by: redestad ! src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java ! src/java.base/share/classes/java/util/ResourceBundle.java ! src/java.base/share/classes/jdk/internal/loader/URLClassPath.java ! src/java.base/share/classes/jdk/internal/util/jar/JarIndex.java ! src/java.base/share/classes/sun/nio/ch/MembershipRegistry.java ! src/java.base/share/classes/sun/nio/fs/AbstractPoller.java ! src/java.base/share/classes/sun/util/locale/provider/TimeZoneNameUtility.java ! src/java.base/unix/classes/sun/net/dns/ResolverConfigurationImpl.java ! test/jdk/sun/misc/JarIndex/JarIndexMergeTest.java Changeset: e74537f9 Author: Aleksey Shipilev Date: 2021-08-02 15:05:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e74537f9241e57b4668ff542364220936e920330 8271605: Update JMH devkit to 1.32 Reviewed-by: redestad, ecaspole ! make/devkit/createJMHBundle.sh Changeset: 7a4c754e Author: Claes Redestad Date: 2021-08-02 15:34:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7a4c754e5db374a7bc3dd36bb1ccf7e8e7821d3b 8271611: Use SecurityConstants.ACCESS_PERMISSION in MethodHandles Reviewed-by: rriggs ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java Changeset: 3e3051e2 Author: Lance Andersen Date: 2021-08-02 15:47:16 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3e3051e2ee93142983e9a3edee038e4f7b5ac0f2 8251329: (zipfs) Files.walkFileTree walks infinitely if zip has dir named "." inside Reviewed-by: alanb, naoto ! src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java ! src/jdk.zipfs/share/classes/module-info.java + test/jdk/jdk/nio/zipfs/HasDotDotTest.java Changeset: db950ca4 Author: Daniel D. Daugherty Date: 2021-08-02 16:00:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/db950ca41f3ab7823fa221e8e3f63caf3dd51ea3 8271348: Add stronger sanity check of thread state when polling for safepoint/handshakes Co-authored-by: Patricio Chilano Mateo Reviewed-by: dholmes, pchilanomate ! src/hotspot/share/runtime/safepoint.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/safepointMechanism.cpp Changeset: 0a852363 Author: Daniel D. Daugherty Date: 2021-08-02 16:01:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a85236396c667c8d2c890e4384c623b39455075 8193559: ugly DO_JAVA_THREADS macro should be replaced Co-authored-by: Kim Barrett Reviewed-by: eosterlund, ayang, kbarrett, dholmes ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp Changeset: e621cffa Author: Claes Redestad Date: 2021-08-02 22:37:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e621cffa4fee0b403a8650519c70e0a6cb76b03c 8271627: Use local field access in favor of Class.getClassLoader0 Reviewed-by: mchung ! src/java.base/share/classes/java/lang/Class.java Changeset: 0b953940 Author: Claes Redestad Date: 2021-08-02 22:59:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0b9539405d764670a1a6dca5a6552b58c3edd7a3 8271624: Avoid unnecessary ThreadGroup.checkAccess calls when creating Threads Reviewed-by: rriggs ! src/java.base/share/classes/java/lang/Thread.java Changeset: 84f02310 Author: Yumin Qi Date: 2021-08-02 23:07:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/84f02310310293163130dde24e30563d39f1610a 8271419: Refactor test code for modifying CDS archive contents Reviewed-by: iklam, ccheung ! test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java + test/lib/jdk/test/lib/cds/CDSArchiveUtils.java Changeset: f8fb5713 Author: Saravana Kumar Vijayasekaran Committer: Mikael Vidstedt Date: 2021-08-02 18:42:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f8fb5713074b8960f5530d7aca954f84d57c1f30 8271150: Remove EA from JDK 17 version string starting with Initial RC promotion on Aug 5, 2021(B34) Reviewed-by: iris, mikael ! make/conf/version-numbers.conf Changeset: ada58d13 Author: Igor Ignatyev Date: 2021-08-02 20:44:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ada58d13f78eb8a240220c45c573335eeb47cf07 8067223: [TESTBUG] Rename Whitebox API package Reviewed-by: dholmes, kvn ! src/hotspot/share/prims/nativeLookup.cpp ! src/hotspot/share/prims/wbtestmethods/parserTests.cpp ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/TEST.ROOT ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java ! test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java ! test/hotspot/jtreg/serviceability/ParserTest.java ! test/hotspot/jtreg/testlibrary/ctw/Makefile ! test/jdk/TEST.ROOT ! test/jtreg-ext/requires/VMProps.java = test/lib-test/jdk/test/whitebox/BlobSanityTest.java = test/lib-test/jdk/test/whitebox/CPUInfoTest.java = test/lib-test/jdk/test/whitebox/MismatchedWhiteBox/WhiteBox.java + test/lib-test/jdk/test/whitebox/OldWhiteBox.java = test/lib-test/jdk/test/whitebox/WBApi.java = test/lib-test/jdk/test/whitebox/vm_flags/BooleanTest.java = test/lib-test/jdk/test/whitebox/vm_flags/DoubleTest.java = test/lib-test/jdk/test/whitebox/vm_flags/IntxTest.java = test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java = test/lib-test/jdk/test/whitebox/vm_flags/StringTest.java = test/lib-test/jdk/test/whitebox/vm_flags/Uint64Test.java = test/lib-test/jdk/test/whitebox/vm_flags/UintxTest.java = test/lib-test/jdk/test/whitebox/vm_flags/VmFlagTest.java ! test/lib/jdk/test/lib/helpers/ClassFileInstaller.java = test/lib/jdk/test/whitebox/WhiteBox.java + test/lib/jdk/test/whitebox/code/BlobType.java = test/lib/jdk/test/whitebox/code/CodeBlob.java + test/lib/jdk/test/whitebox/code/Compiler.java = test/lib/jdk/test/whitebox/code/NMethod.java = test/lib/jdk/test/whitebox/cpuinfo/CPUInfo.java + test/lib/jdk/test/whitebox/gc/GC.java = test/lib/jdk/test/whitebox/parser/DiagnosticCommand.java ! test/lib/sun/hotspot/WhiteBox.java ! test/lib/sun/hotspot/code/CodeBlob.java ! test/lib/sun/hotspot/code/NMethod.java ! test/lib/sun/hotspot/cpuinfo/CPUInfo.java Changeset: c8add223 Author: Jesper Wilhelmsson Date: 2021-08-03 01:01:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c8add223a10030e40ccef42e081fd0d8f00e0593 Merge Reviewed-by: mikael ! src/hotspot/share/prims/whitebox.cpp ! test/lib/sun/hotspot/WhiteBox.java ! src/hotspot/share/prims/whitebox.cpp ! test/lib/sun/hotspot/WhiteBox.java Changeset: b217a6ca Author: Albert Mingkun Yang Date: 2021-08-03 11:43:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b217a6ca0f920eddc1d4596ce8c6445423f1d15d 8271609: Misleading message for AbortVMOnVMOperationTimeoutDelay Reviewed-by: dholmes ! src/hotspot/share/runtime/vmThread.cpp Changeset: bdb50cab Author: Xiaowei Lu Committer: Per Liden Date: 2021-08-03 12:23:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bdb50cab79056bb2ac9fe1ba0cf0f237317052da 8270347: ZGC: Adopt release-acquire ordering for forwarding table access Co-authored-by: Hao Tang Reviewed-by: eosterlund, pliden ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: f15d6cbc Author: Coleen Phillimore Date: 2021-08-03 17:20:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f15d6cbcaf191b9718ab51b1e8b72938c0abdd6b 8271506: Add ResourceHashtable support for deleting selected entries Reviewed-by: iklam, stuefe ! src/hotspot/share/utilities/resourceHash.hpp ! test/hotspot/gtest/utilities/test_resourceHash.cpp Changeset: 6594d3a3 Author: Joe Darcy Date: 2021-08-03 18:13:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6594d3a3ef175a71ea34c7698ab96537c761f022 8271711: Remove WorkArounds.isSynthetic Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java Changeset: 0199b03e Author: Andy Herrick Date: 2021-08-03 18:51:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0199b03eb3bd9ffe79b5193ff1792144b5c488f1 8271344: Windows product version issue Reviewed-by: asemenyuk, almatvee ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/MsiVersion.java ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources.properties ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties ! test/jdk/tools/jpackage/junit/jdk/jpackage/internal/PlatformVersionTest.java Changeset: a8408708 Author: Weijun Wang Date: 2021-08-04 00:02:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a8408708b065a877278acc6b007ad6a9baaf2561 8271616: oddPart in MutableBigInteger::mutableModInverse contains info on final result Reviewed-by: bpb, darcy, valeriep ! src/java.base/share/classes/java/math/MutableBigInteger.java Changeset: 43a6ba96 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-04 01:35:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/43a6ba9677551762c1bc1dc2f994dde7d6d9f1a5 8271726: JFR: should use equal() to check event fields in tests Reviewed-by: egahlin ! test/jdk/jdk/jfr/event/diagnostics/TestHeapDump.java Changeset: 3435d299 Author: Calvin Cheung Date: 2021-08-04 01:38:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3435d299f76ada66e7b7cb42d9f0265cf99a30ca 8271003: hs_err improvement: handle CLASSPATH env setting longer than O_BUFLEN Reviewed-by: dholmes, stuefe, iklam, minqi ! src/hotspot/share/runtime/os.cpp + test/hotspot/jtreg/runtime/ErrorHandling/ClassPathEnvVar.java Changeset: d3b40cb6 Author: Igor Ignatyev Date: 2021-08-04 01:49:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d3b40cb68323a1b0efa461b4a415793415a2deef 8271826: mark hotspot runtime/condy tests which ignore external VM flags Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/condy/BadBSMUseTest.java ! test/hotspot/jtreg/runtime/condy/CondyLDCTest.java ! test/hotspot/jtreg/runtime/condy/CondyNewInvokeSpecialTest.java ! test/hotspot/jtreg/runtime/condy/escapeAnalysis/TestEscapeCondy.java ! test/hotspot/jtreg/runtime/condy/staticInit/TestInitException.java Changeset: 659498a0 Author: Igor Ignatyev Date: 2021-08-04 01:59:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/659498a07f5be0feae26c1772a6b4e8ad2dec103 8271829: mark hotspot runtime/Throwable tests which ignore external VM flags Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/Throwable/StackTraceLogging.java ! test/hotspot/jtreg/runtime/Throwable/TestCatchThrowableOOM.java ! test/hotspot/jtreg/runtime/Throwable/TestMaxJavaStackTraceDepth.java Changeset: 7e518f42 Author: David Holmes Date: 2021-08-04 02:08:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7e518f42c9346abdf0c8059b45d3dfef95ed69bb 8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status Reviewed-by: stuefe, dcubed, sspitsyn ! src/hotspot/share/services/threadService.cpp Changeset: 34ba70a7 Author: Igor Ignatyev Date: 2021-08-04 02:19:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/34ba70a71ba414a6d8cfc5c667d556d4d6072793 8269037: jsig/Testjsig.java doesn't have to be restricted to linux only Reviewed-by: mseledtsov, dholmes ! make/test/JtregNativeHotspot.gmk ! test/hotspot/jtreg/runtime/jsig/Testjsig.java Changeset: 68dd8280 Author: Igor Ignatyev Date: 2021-08-04 02:22:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/68dd8280886ede7f5cd8d34811ad0f9ffac440f3 8271224: runtime/EnclosingMethodAttr/EnclMethodAttr.java doesn't check exit code Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/runtime/EnclosingMethodAttr/EnclMethodAttr.java Changeset: 66c653c5 Author: Thomas Stuefe Date: 2021-08-04 04:11:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/66c653c561b3b5e904579af62e23ff94952bca05 8271721: Split gc/g1/TestMixedGCLiveThreshold into separate tests Reviewed-by: tschatzl, rrich ! test/hotspot/jtreg/gc/g1/TestMixedGCLiveThreshold.java Changeset: b48f31d3 Author: Igor Ignatyev Date: 2021-08-04 04:51:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b48f31d381e68a5de0925704bd22ce63d7363c4f 8271743: mark hotspot runtime/jni tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/jni/CalleeSavedRegisters/FPRegs.java ! test/hotspot/jtreg/runtime/jni/checked/TestCheckedReleaseArrayElements.java Changeset: 33ec3a4d Author: Igor Ignatyev Date: 2021-08-04 04:53:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/33ec3a4d95fc81cc60c8a66380947111cb966aa7 8271744: mark hotspot runtime/getSysPackage tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/getSysPackage/GetPackageXbootclasspath.java ! test/hotspot/jtreg/runtime/getSysPackage/GetSysPkgTest.java Changeset: 3d40cac8 Author: Igor Ignatyev Date: 2021-08-04 05:16:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3d40cac8ce3cb087788cdaa04d567eee4a1d8052 8271821: mark hotspot runtime/MinimalVM tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/MinimalVM/CDS.java ! test/hotspot/jtreg/runtime/MinimalVM/CheckJNI.java ! test/hotspot/jtreg/runtime/MinimalVM/Instrumentation.java ! test/hotspot/jtreg/runtime/MinimalVM/JMX.java ! test/hotspot/jtreg/runtime/MinimalVM/JVMTI.java ! test/hotspot/jtreg/runtime/MinimalVM/NMT.java Changeset: 68f78477 Author: Igor Ignatyev Date: 2021-08-04 05:17:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/68f784778ce24a26d768b62b979fd587f131d332 8271825: mark hotspot runtime/LoadClass tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/LoadClass/LoadClassNegative.java ! test/hotspot/jtreg/runtime/LoadClass/LongBCP.java ! test/hotspot/jtreg/runtime/LoadClass/TestResize.java Changeset: e49b7d95 Author: Igor Ignatyev Date: 2021-08-04 05:18:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e49b7d958c1db70c452cb6c47c885b7e6264b822 8271828: mark hotspot runtime/classFileParserBug tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/classFileParserBug/ClassFileParserBug.java ! test/hotspot/jtreg/runtime/classFileParserBug/TestBadPackageWithInterface.java ! test/hotspot/jtreg/runtime/classFileParserBug/TestEmptyBootstrapMethodsAttr.java Changeset: 9e769090 Author: Igor Ignatyev Date: 2021-08-04 05:19:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9e769090a020d58f2488dd77fb0681aa2d3856db 8271824: mark hotspot runtime/CompressedOops tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassPointers.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassSpaceSize.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedKlassPointerAndOops.java ! test/hotspot/jtreg/runtime/CompressedOops/ObjectAlignment.java ! test/hotspot/jtreg/runtime/CompressedOops/UseCompressedOops.java Changeset: 04134fcd Author: Xubo Zhang Committer: David Holmes Date: 2021-08-04 05:43:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/04134fcdaaf058429fc4ab109a98005ddce4636d 8264543: Cross modify fence optimization for x86 Reviewed-by: dholmes, tschatzl, sviswanathan ! src/hotspot/cpu/x86/vm_version_ext_x86.hpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp ! src/hotspot/os_cpu/bsd_x86/orderAccess_bsd_x86.hpp ! src/hotspot/os_cpu/linux_x86/orderAccess_linux_x86.hpp ! src/hotspot/os_cpu/windows_x86/orderAccess_windows_x86.hpp ! src/hotspot/share/runtime/orderAccess.hpp ! src/hotspot/share/runtime/vm_version.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.amd64/src/jdk/vm/ci/amd64/AMD64.java Changeset: 977b8c4e Author: Jie Fu Date: 2021-08-04 07:25:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/977b8c4e16b02421de8bf78dc60a3866ce25fc1f 8271836: runtime/ErrorHandling/ClassPathEnvVar.java fails with release VMs Reviewed-by: stuefe ! test/hotspot/jtreg/runtime/ErrorHandling/ClassPathEnvVar.java Changeset: efcdcc7f Author: Jayathirth D V Date: 2021-08-04 09:16:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/efcdcc7fb792c77aef1da69b1fcc652b401115f7 8270893: IndexOutOfBoundsException while reading large TIFF file Reviewed-by: prr, serb ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java + test/jdk/javax/imageio/plugins/tiff/LargeTIFFTagTest.java Changeset: 4df1bc4b Author: Prasanta Sadhukhan Date: 2021-08-04 11:38:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4df1bc4bc6ec19f9a5bb0e85ee34fb746011e1fa 6350025: API documentation for JOptionPane using deprecated methods. Reviewed-by: jdv ! src/java.desktop/share/classes/javax/swing/JOptionPane.java Changeset: eec64f55 Author: Thomas Stuefe Date: 2021-08-04 12:19:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/eec64f55870cf51746755d8fa59098a82109e826 8256844: Make NMT late-initializable Reviewed-by: coleenp, zgu ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/services/memTracker.cpp ! src/hotspot/share/services/memTracker.hpp ! src/hotspot/share/services/nmtCommon.cpp ! src/hotspot/share/services/nmtCommon.hpp + src/hotspot/share/services/nmtPreInit.cpp + src/hotspot/share/services/nmtPreInit.hpp ! src/hotspot/share/services/threadStackTracker.cpp ! src/hotspot/share/services/threadStackTracker.hpp ! src/hotspot/share/services/virtualMemoryTracker.cpp ! src/hotspot/share/services/virtualMemoryTracker.hpp ! src/java.base/share/native/libjli/java.c ! src/java.base/share/native/libjli/jli_util.h + test/hotspot/gtest/nmt/test_nmtpreinit.cpp + test/hotspot/gtest/nmt/test_nmtpreinitmap.cpp ! test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp ! test/hotspot/gtest/runtime/test_os.cpp ! test/hotspot/gtest/runtime/test_virtualMemoryTracker.cpp ! test/hotspot/jtreg/TEST.groups + test/hotspot/jtreg/gtest/NMTGtests.java + test/hotspot/jtreg/runtime/NMT/NMTForOtherLaunchersTest.java + test/hotspot/jtreg/runtime/NMT/NMTInitializationTest.java ! test/jdk/tools/launcher/TestSpecialArgs.java Changeset: 0a27f264 Author: Ivan Walulya Date: 2021-08-04 13:04:39 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a27f264da5a21d581e099573e48485bdeea7790 8265057: G1: Investigate removal of maintenance of two BOT thresholds Reviewed-by: ayang, tschatzl ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp Changeset: 221e4b9c Author: Weijun Wang Date: 2021-08-04 13:37:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/221e4b9c61cd1c9c3f4c037589ba639541532910 8270797: ShortECDSA.java test is not complete Reviewed-by: mullan ! test/jdk/com/sun/org/apache/xml/internal/security/ShortECDSA.java Changeset: 452f7d76 Author: Kim Barrett Date: 2021-08-04 15:04:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/452f7d764fc0112cabf0be944e4233173d63f933 8271217: Fix race between G1PeriodicGCTask checks and GC request Reviewed-by: iwalulya, tschatzl, lkorinth ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp + src/hotspot/share/gc/g1/g1GCCounters.cpp + src/hotspot/share/gc/g1/g1GCCounters.hpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.cpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.hpp ! src/hotspot/share/gc/g1/g1VMOperations.cpp ! src/hotspot/share/gc/g1/g1VMOperations.hpp Changeset: 9f1edafa Author: Raffaello Giulietti Committer: Brian Burkhalter Date: 2021-08-04 17:16:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9f1edafac4f096977ea6ce075ae7a6b0c2112b7d 8271599: Javadoc of floorDiv() and floorMod() families is inaccurate in some places Reviewed-by: darcy, bpb ! src/java.base/share/classes/java/lang/Math.java ! src/java.base/share/classes/java/lang/StrictMath.java Changeset: 392fcc9d Author: Jatin Bhateja Date: 2021-08-04 17:49:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/392fcc9df7e1547672f727e8fdc8de73ffdfe534 8271589: fatal error with variable shift count integer rotate operation. Reviewed-by: kvn, sviswanathan ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectornode.cpp ! test/hotspot/jtreg/compiler/c2/cr6340864/TestIntVectRotate.java Changeset: 6b55ef3b Author: Sergey Bylokhov Date: 2021-08-04 18:44:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6b55ef3b58ae405c46f440e06b5adb03cec3a500 8271456: Avoid looking up standard charsets in "java.desktop" module Reviewed-by: jdv, azvegint, aivanov ! src/java.desktop/macosx/classes/com/apple/laf/AquaFileView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/COMMarkerSegment.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFImageWriter.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/wbmp/WBMPMetadata.java ! src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java ! src/java.desktop/share/classes/com/sun/media/sound/DLSSoundbank.java ! src/java.desktop/share/classes/com/sun/media/sound/RIFFReader.java ! src/java.desktop/share/classes/com/sun/media/sound/RIFFWriter.java ! src/java.desktop/share/classes/com/sun/media/sound/SF2Soundbank.java ! src/java.desktop/share/classes/com/sun/media/sound/SoftTuning.java ! src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java ! src/java.desktop/share/classes/javax/swing/text/rtf/RTFReader.java ! src/java.desktop/share/classes/sun/awt/FontDescriptor.java ! src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java ! src/java.desktop/share/classes/sun/font/Type1Font.java ! src/java.desktop/share/classes/sun/print/PageableDoc.java ! src/java.desktop/unix/classes/sun/awt/X11/XAtom.java ! src/java.desktop/unix/classes/sun/awt/X11/XNETProtocol.java ! src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java ! src/java.desktop/unix/classes/sun/awt/XSettings.java ! src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java ! src/java.desktop/unix/classes/sun/font/NativeFont.java ! src/java.desktop/unix/classes/sun/print/AttributeClass.java ! src/java.desktop/unix/classes/sun/print/IPPPrintService.java ! src/java.desktop/windows/classes/sun/awt/windows/WDataTransferer.java Changeset: 91bbe2fc Author: Joe Darcy Date: 2021-08-04 18:48:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/91bbe2fcbda008a9adc8aa77149a4f2156e1b46b 8271888: build error after JDK-8271599 Reviewed-by: psandoz, bpb ! src/java.base/share/classes/java/lang/Math.java Changeset: cdf3d55c Author: Igor Ignatyev Date: 2021-08-04 19:39:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cdf3d55c82844a3c8817f8cc33e85ca15a5ad930 8271890: mark hotspot runtime/Dictionary tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/Dictionary/CleanProtectionDomain.java ! test/hotspot/jtreg/runtime/Dictionary/ProtectionDomainCacheTest.java Changeset: ff7431ea Author: Igor Ignatyev Date: 2021-08-04 19:40:05 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ff7431eafea8bd763250f929aa35edcaae2fbc58 8271886: mark hotspot runtime/InvocationTests tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/InvocationTests/invocationC1Tests.java ! test/hotspot/jtreg/runtime/InvocationTests/invocationOldCHATests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokeinterfaceTests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokespecialTests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokevirtualTests.java Changeset: 6c17e6de Author: Igor Ignatyev Date: 2021-08-04 19:46:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c17e6deb2ab36c3db8577fb6bb2cf2738b58dd4 8271891: mark hotspot runtime/Safepoint tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/Safepoint/TestAbortOnVMOperationTimeout.java ! test/hotspot/jtreg/runtime/Safepoint/TestAbortVMOnSafepointTimeout.java Changeset: a3b01439 Author: Igor Ignatyev Date: 2021-08-04 19:49:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a3b01439701c1e01f9095a51b4f1048282956623 8271887: mark hotspot runtime/CDSCompressedKPtrs tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/XShareAuto.java Changeset: 359c7084 Author: Igor Ignatyev Date: 2021-08-04 19:50:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/359c7084a1bc3a568c9b815debe3c1786eca9d1e 8271893: mark hotspot runtime/PerfMemDestroy/PerfMemDestroy.java test as ignoring external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/PerfMemDestroy/PerfMemDestroy.java Changeset: d62fbea7 Author: Daniel D. Daugherty Date: 2021-08-04 21:06:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d62fbea7b41f150f25ed3a9a037c081cfdc217b6 8271898: disable os.release_multi_mappings_vm on macOS-X64 Reviewed-by: kbarrett ! test/hotspot/gtest/runtime/test_os.cpp Changeset: a007cb1a Author: Yasumasa Suenaga Date: 2021-08-04 23:42:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a007cb1a1dd6a716555031c271cb11f4980813e7 8271863: ProblemList serviceability/sa/TestJmapCore.java on linux-x64 with ZGC Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 181483b9 Author: Erik ?sterlund Date: 2021-08-04 10:28:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/181483b90bcc7d4e44109a14213d4ee2804f7f32 8271064: ZGC several jvm08 perf regressions after JDK-8268372 Reviewed-by: ayang, pliden, tschatzl ! src/hotspot/share/gc/z/zDirector.cpp Changeset: 5f547e8c Author: Daniel D. Daugherty Date: 2021-08-04 16:43:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5f547e8c119e9c0f6a000d2fdc2a693a4e601ba0 8271877: ProblemList jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java in JDK17 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: cebcc07b Author: Daniel D. Daugherty Date: 2021-08-04 19:23:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cebcc07b1b0572e63b420ff86eef78c6aee36393 8271894: ProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK17 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: cd6b54ec Author: Jesper Wilhelmsson Date: 2021-08-05 01:02:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd6b54ec40f1d60fbdb6c8aee1e6ba662daca58c Merge ! test/jdk/ProblemList.txt ! test/jdk/ProblemList.txt Changeset: 7728423f Author: Jesper Wilhelmsson Date: 2021-08-05 01:41:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7728423f8a4cf2b60d9774405b18a28ee498f268 8271895: UnProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK18 Reviewed-by: dholmes ! test/jdk/ProblemList.txt Changeset: 6c8441f0 Author: Jesper Wilhelmsson Date: 2021-08-05 01:42:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c8441f075b349d95ef26f51e8b9fd473748ac64 8271878: UnProblemList jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java in JDK18 Reviewed-by: dholmes ! test/jdk/ProblemList.txt Changeset: 64d18d45 Author: Prasanta Sadhukhan Date: 2021-08-05 04:56:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/64d18d45ef885d5cdd893b7f56236d3f22b4b84c 4819544: SwingSet2 JTable Demo throws NullPointerException Reviewed-by: pbansal, aivanov ! src/demo/share/jfc/SwingSet2/TableDemo.java Changeset: ea9a5952 Author: Yi Yang Date: 2021-08-05 06:39:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ea9a59520de45fe1c2a6706b2a924cbc856a06c6 8270058: Use Objects.check{Index,FromIndexSize} for java.desktop Reviewed-by: psadhukhan, pbansal, jdv ! src/java.desktop/share/classes/com/sun/media/sound/AudioFloatInputStream.java ! src/java.desktop/share/classes/javax/swing/JTabbedPane.java ! test/jdk/java/awt/print/PrinterJob/ImagePrinting/ClippedImages.java ! test/jdk/javax/imageio/AppletResourceTest.java ! test/jdk/javax/imageio/ImageReaderReadAll.java ! test/jdk/javax/imageio/metadata/IIOMetadataFormat/UserPluginMetadataFormatTest.java Changeset: 4abe5311 Author: Richard Reingruber Date: 2021-08-05 07:31:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4abe5311407c68d04fb0babb87fa279e35d5fabc 8271722: [TESTBUG] gc/g1/TestMixedGCLiveThreshold.java can fail if G1 Full GC uses >1 workers Reviewed-by: ayang, tschatzl ! test/hotspot/jtreg/gc/g1/TestMixedGCLiveThreshold.java Changeset: 685fc3c6 Author: Julia Boes Date: 2021-08-05 09:42:16 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/685fc3c677cd0e71ef4443214ae14c7eed355140 8270903: sun.net.httpserver.HttpConnection: Improve toString Reviewed-by: chegar, vtewari ! src/jdk.httpserver/share/classes/sun/net/httpserver/HttpConnection.java Changeset: 18dd4d46 Author: Per Liden Date: 2021-08-05 12:40:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/18dd4d469d120276d05e74607d780f01056f1a8b 8271121: ZGC: stack overflow (segv) when -Xlog:gc+start=debug Reviewed-by: ayang, eosterlund ! src/hotspot/share/gc/z/zStat.cpp Changeset: 55bd52a1 Author: Claes Redestad Date: 2021-08-05 14:46:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/55bd52a14283033d66cd7bf1deadb31c040b09c7 8271840: Add simple Integer.toString microbenchmarks Reviewed-by: shade ! test/micro/org/openjdk/bench/java/lang/Integers.java ! test/micro/org/openjdk/bench/java/lang/Longs.java Changeset: d7fc9e41 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-05 14:55:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d7fc9e4171efa4154951cf353df10f9bacbed7ab 8267840: Improve URLStreamHandler.parseURL() Reviewed-by: dfuchs, redestad ! src/java.base/share/classes/java/net/URLStreamHandler.java Changeset: 7234a433 Author: Daniel D. Daugherty Date: 2021-08-05 14:55:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7234a433f8ba13d8a4b696a77653b441163d2afa 8271953: fix mis-merge in JDK-8271878 Reviewed-by: jwilhelm, ctornqvi ! test/jdk/ProblemList.txt Changeset: e2c5bfe0 Author: Brian Burkhalter Date: 2021-08-05 16:10:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e2c5bfe083adb82c0d99ba3cb05a9d5cdb8a05cc 8271308: (fc) FileChannel.transferTo() transfers no more than Integer.MAX_VALUE bytes in one call Reviewed-by: alanb, vtewari ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/unix/native/libnio/ch/FileChannelImpl.c ! src/java.base/windows/native/libnio/ch/FileChannelImpl.c + test/jdk/java/nio/channels/FileChannel/Transfer2GPlus.java Changeset: 3ab95d19 Author: Igor Ignatyev Date: 2021-08-05 16:32:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3ab95d19174100f440e2274d5b2c3119fb55e9e1 8271905: mark hotspot runtime/Metaspace tests which ignore external VM flags Reviewed-by: stuefe ! test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeEnvVarTest.java ! test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeTest.java Changeset: cb368802 Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2021-08-05 17:41:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cb368802815c465f8eef7aa930d6cbb6540d0fa8 8270116: Expand ButtonGroupLayoutTraversalTest.java to run in all LaFs, including Aqua on macOS Reviewed-by: psadhukhan, aivanov ! test/jdk/java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java Changeset: 62e72adf Author: Patricio Chilano Mateo Date: 2021-08-05 19:16:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/62e72adfa7bcc8e2a70c1346f3051deb2488affc 8271293: Monitor class should use ThreadBlockInVMPreprocess Reviewed-by: dholmes, dcubed ! src/hotspot/share/prims/jvmtiRawMonitor.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/objectMonitor.cpp Changeset: f312f28b Author: Daniel D. Daugherty Date: 2021-08-05 01:00:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f312f28b8b92949cc8da276c255a746f8098e741 8271863: ProblemList serviceability/sa/TestJmapCore.java on linux-x64 with ZGC Backport-of: a007cb1a1dd6a716555031c271cb11f4980813e7 ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 90f85ff7 Author: Markus Gr?nlund Date: 2021-08-05 09:13:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/90f85ff70fe6b54ecc08794269422364f2128bfb 8271588: JFR Recorder Thread crashed with SIGSEGV in write_klass Reviewed-by: egahlin ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdEpoch.hpp ! src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp ! src/hotspot/share/jfr/utilities/jfrSignal.hpp Changeset: dfacda48 Author: Jonathan Gibbons Date: 2021-08-05 22:12:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/dfacda488bfbe2e11e8d607a6d08527710286982 8270872: Final nroff manpage update for JDK 17 Reviewed-by: darcy, mr, iris, naoto ! src/java.base/share/man/java.1 ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 ! src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 ! src/jdk.jfr/share/man/jfr.1 ! src/jdk.jlink/share/man/jlink.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jpackage/share/man/jpackage.1 ! src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: 14692d5e Author: Jesper Wilhelmsson Date: 2021-08-06 01:21:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/14692d5ed0652b867fcf28baafa498a9441683ac Merge ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/java.base/share/man/java.1 ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/java.base/share/man/java.1 Changeset: e38e365c Author: Jaikiran Pai Date: 2021-08-06 01:30:45 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e38e365c70197f7e45d8bdc7d6c2e3c59717369e 8271208: Typo in ModuleDescriptor.read javadoc Reviewed-by: alanb, iris ! src/java.base/share/classes/java/lang/module/ModuleDescriptor.java Changeset: adb0ae56 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-06 02:11:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/adb0ae56ab9efec12526433927c15308902535f7 8261441: JFR: Filename expansion Reviewed-by: jbachorik, egahlin ! src/java.base/share/man/java.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStop.java ! test/jdk/jdk/jfr/jcmd/JcmdHelper.java + test/jdk/jdk/jfr/jcmd/TestFilenameExpansion.java ! test/jdk/jdk/jfr/jcmd/TestJcmdDumpGeneratedFilename.java Changeset: ea02dade Author: David Holmes Date: 2021-08-06 03:49:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ea02dade43409444b7c9f8b5065fded535b64f3f 8272067: Initial nroff manpage generation for JDK 18 Reviewed-by: darcy ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 ! src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 ! src/jdk.jfr/share/man/jfr.1 ! src/jdk.jlink/share/man/jlink.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jpackage/share/man/jpackage.1 ! src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: e7b6f481 Author: Ioi Lam Date: 2021-08-06 05:58:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e7b6f48182bb541741cb1465cd676d1749a028f8 8265602: -XX:DumpLoadedClassList should support custom loaders Reviewed-by: ccheung, minqi ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/archiveUtils.cpp + src/hotspot/share/cds/classListWriter.cpp ! src/hotspot/share/cds/classListWriter.hpp ! src/hotspot/share/cds/metaspaceShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java + test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomClassListDump.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomLoaderApp.java + test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee4WithLambda.java - test/hotspot/jtreg/runtime/cds/appcds/test-classes/ArrayListTest.java + test/hotspot/jtreg/runtime/cds/appcds/test-classes/DumpClassListApp.java Changeset: c2b7face Author: Albert Mingkun Yang Date: 2021-08-06 08:27:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c2b7facea442eda470913546001c9a5e35d18929 8271896: Remove unnecessary top address checks in BOT Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp Changeset: b6a19f17 Author: Christoph G?ttschkes Committer: Aleksey Shipilev Date: 2021-08-06 10:23:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b6a19f173bc6c07622633c9d6757d96a95b43398 8271128: InlineIntrinsics support for 32-bit ARM Reviewed-by: shade ! src/hotspot/cpu/arm/c1_globals_arm.hpp ! src/hotspot/cpu/arm/c2_globals_arm.hpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/share/interpreter/templateInterpreterGenerator.hpp Changeset: 4abe5f73 Author: duke Date: 2021-08-06 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4abe5f733e3db5db87a3c8abe0df87977dabe0f1 Automatic merge of jdk:master into master From duke at openjdk.java.net Fri Aug 6 11:13:17 2021 From: duke at openjdk.java.net (duke) Date: Fri, 6 Aug 2021 11:13:17 GMT Subject: git: openjdk/panama-foreign: foreign-jextract: 99 new changesets Message-ID: <76f27882-454b-4aef-90d5-39464d97e467@openjdk.org> Changeset: 9856ace8 Author: Christian Hagedorn Date: 2021-07-30 12:28:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9856ace828617d3f2f9a6282e650009d3af65749 8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java ! test/hotspot/jtreg/compiler/lib/ir_framework/Test.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/TestVMProcess.java ! test/hotspot/jtreg/compiler/lib/ir_framework/shared/TestFrameworkSocket.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/TestVM.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java Changeset: 89f5c96d Author: Sean Mullan Date: 2021-07-30 12:43:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/89f5c96d63a7a08e0b4145eee83a946fc99141e4 8232066: Remove outdated code/methods from PKIX implementation Reviewed-by: weijun ! src/java.base/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.base/share/classes/sun/security/provider/certpath/PKIX.java ! src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java ! src/java.base/share/classes/sun/security/validator/EndEntityChecker.java ! src/java.base/share/classes/sun/security/validator/PKIXValidator.java ! src/java.base/share/classes/sun/security/validator/Validator.java ! test/jdk/sun/security/validator/ConstructorTest.java Changeset: baf7797b Author: Prasanta Sadhukhan Date: 2021-07-30 15:37:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/baf7797b092704d7dc9401db8b3dda19b91be303 8049301: Suspicious use of string identity checks in JComponent.setUIProperty Reviewed-by: azvegint ! src/java.desktop/share/classes/javax/swing/JComponent.java Changeset: 5b3c4182 Author: Sergey Chernyshev Committer: Alexander Scherbatiy Date: 2021-07-30 16:10:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5b3c418249cfb53ae2ba530bcbbcdb5e509e4775 8270321: Startup regressions in 18-b5 caused by JDK-8266310 Reviewed-by: mchung, alanb ! src/java.base/share/classes/jdk/internal/loader/NativeLibraries.java Changeset: cd7e30ef Author: Thomas Stuefe Date: 2021-07-30 16:42:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd7e30ef84165722c2128471231b6000b1c46fb8 8271242: Add Arena regression tests Reviewed-by: mseledtsov, coleenp ! test/hotspot/gtest/memory/test_arena.cpp + test/hotspot/gtest/testutils.cpp + test/hotspot/gtest/testutils.hpp + test/hotspot/jtreg/gtest/ArenaGtests.java Changeset: 6c68ce2d Author: Andrew Haley Date: 2021-07-30 18:02:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c68ce2d396c6fe02201daf2bdb8c164de807cc1 8270947: AArch64: C1: use zero_words to initialize all objects Reviewed-by: ngasson, adinn ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp + test/micro/org/openjdk/bench/vm/gc/RawAllocationRate.java Changeset: 71ca0c08 Author: Jatin Bhateja Date: 2021-07-30 18:28:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/71ca0c08f09e87673f1cf3f918a0802961359166 8270848: Redundant unsafe opmask register allocation in some instruction patterns. Reviewed-by: sviswanathan, kvn ! src/hotspot/cpu/x86/matcher_x86.hpp ! src/hotspot/cpu/x86/x86_32.ad ! src/hotspot/cpu/x86/x86_64.ad Changeset: d6bb8461 Author: Rajan Halade Date: 2021-07-30 20:16:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d6bb846159be7e46fba0c3ca2915617f945e0b42 8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked Reviewed-by: mullan ! test/jdk/ProblemList.txt ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java Changeset: 4bc9b049 Author: Rajan Halade Date: 2021-07-30 20:29:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4bc9b049846bd59f5c41bd62a59b567b52c9efc5 8263059: security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java fails due to revoked cert Reviewed-by: mullan ! test/jdk/ProblemList.txt ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java Changeset: a1b5b818 Author: Chris Plummer Date: 2021-07-30 00:56:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a1b5b818c5e276c21c05bce71ca01c18c35aef40 8271507: ProblemList SA tests that are failing with ZGC due to JDK-8248912 Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 6180cf1f Author: Chris Plummer Date: 2021-07-30 01:01:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6180cf1f0d868052709cd55cee53f37f0fc42e21 8271512: ProblemList serviceability/sa/sadebugd/DebugdConnectTest.java due to 8270326 Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList.txt Changeset: e351de3b Author: Roland Westrelin Date: 2021-07-30 07:28:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e351de3bd67773109607db7f4648c173140cb024 8271272: C2: assert(!had_error) failed: bad dominance Reviewed-by: kvn, thartmann, chagedorn ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopopts/TestMainNeverExecuted.java Changeset: 7cc1eb3e Author: Jesper Wilhelmsson Date: 2021-07-30 22:30:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7cc1eb3e571e00f1cbfd62eb843df96ba8e88199 Merge ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt Changeset: 72145f3b Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:46:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/72145f3b9472c8f5f64f9b9ac93e3331e646f15a 8269665: Clean-up toString() methods of some primitive wrappers Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Boolean.java ! src/java.base/share/classes/java/lang/Byte.java ! src/java.base/share/classes/java/lang/Character.java ! src/java.base/share/classes/java/lang/Short.java Changeset: 6c4c48fa Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:47:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c4c48faea8a8309a71d7a5d261f776031014881 8266972: Use String.concat() in j.l.Class where invokedynamic-based String concatenation is not available Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Class.java Changeset: 2536e434 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:48:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2536e4342e6c33c16685c9983b09f83a9c7ea869 8270160: Remove redundant bounds check from AbstractStringBuilder.charAt() Reviewed-by: redestad ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java ! src/java.base/share/classes/java/lang/StringLatin1.java Changeset: 6a3f8343 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:49:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6a3f8343bc0e92c29a87c5840cbef9ab2988f153 8268113: Re-use Long.hashCode() where possible Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Double.java ! src/java.base/share/classes/java/time/LocalTime.java ! src/java.base/share/classes/java/time/temporal/ValueRange.java ! src/java.desktop/macosx/classes/apple/laf/JRSUIConstants.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/DoubleDV.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/Selector.java Changeset: 249d6418 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:50:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/249d641889c6f9aed6957502d5fca9c74c9baceb 8263561: Re-examine uses of LinkedList Reviewed-by: redestad ! src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java ! src/java.base/share/classes/java/util/ResourceBundle.java ! src/java.base/share/classes/jdk/internal/loader/URLClassPath.java ! src/java.base/share/classes/jdk/internal/util/jar/JarIndex.java ! src/java.base/share/classes/sun/nio/ch/MembershipRegistry.java ! src/java.base/share/classes/sun/nio/fs/AbstractPoller.java ! src/java.base/share/classes/sun/util/locale/provider/TimeZoneNameUtility.java ! src/java.base/unix/classes/sun/net/dns/ResolverConfigurationImpl.java ! test/jdk/sun/misc/JarIndex/JarIndexMergeTest.java Changeset: e74537f9 Author: Aleksey Shipilev Date: 2021-08-02 15:05:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e74537f9241e57b4668ff542364220936e920330 8271605: Update JMH devkit to 1.32 Reviewed-by: redestad, ecaspole ! make/devkit/createJMHBundle.sh Changeset: 7a4c754e Author: Claes Redestad Date: 2021-08-02 15:34:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7a4c754e5db374a7bc3dd36bb1ccf7e8e7821d3b 8271611: Use SecurityConstants.ACCESS_PERMISSION in MethodHandles Reviewed-by: rriggs ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java Changeset: 3e3051e2 Author: Lance Andersen Date: 2021-08-02 15:47:16 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3e3051e2ee93142983e9a3edee038e4f7b5ac0f2 8251329: (zipfs) Files.walkFileTree walks infinitely if zip has dir named "." inside Reviewed-by: alanb, naoto ! src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java ! src/jdk.zipfs/share/classes/module-info.java + test/jdk/jdk/nio/zipfs/HasDotDotTest.java Changeset: db950ca4 Author: Daniel D. Daugherty Date: 2021-08-02 16:00:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/db950ca41f3ab7823fa221e8e3f63caf3dd51ea3 8271348: Add stronger sanity check of thread state when polling for safepoint/handshakes Co-authored-by: Patricio Chilano Mateo Reviewed-by: dholmes, pchilanomate ! src/hotspot/share/runtime/safepoint.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/safepointMechanism.cpp Changeset: 0a852363 Author: Daniel D. Daugherty Date: 2021-08-02 16:01:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a85236396c667c8d2c890e4384c623b39455075 8193559: ugly DO_JAVA_THREADS macro should be replaced Co-authored-by: Kim Barrett Reviewed-by: eosterlund, ayang, kbarrett, dholmes ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp Changeset: e621cffa Author: Claes Redestad Date: 2021-08-02 22:37:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e621cffa4fee0b403a8650519c70e0a6cb76b03c 8271627: Use local field access in favor of Class.getClassLoader0 Reviewed-by: mchung ! src/java.base/share/classes/java/lang/Class.java Changeset: 0b953940 Author: Claes Redestad Date: 2021-08-02 22:59:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0b9539405d764670a1a6dca5a6552b58c3edd7a3 8271624: Avoid unnecessary ThreadGroup.checkAccess calls when creating Threads Reviewed-by: rriggs ! src/java.base/share/classes/java/lang/Thread.java Changeset: 84f02310 Author: Yumin Qi Date: 2021-08-02 23:07:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/84f02310310293163130dde24e30563d39f1610a 8271419: Refactor test code for modifying CDS archive contents Reviewed-by: iklam, ccheung ! test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java + test/lib/jdk/test/lib/cds/CDSArchiveUtils.java Changeset: f8fb5713 Author: Saravana Kumar Vijayasekaran Committer: Mikael Vidstedt Date: 2021-08-02 18:42:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f8fb5713074b8960f5530d7aca954f84d57c1f30 8271150: Remove EA from JDK 17 version string starting with Initial RC promotion on Aug 5, 2021(B34) Reviewed-by: iris, mikael ! make/conf/version-numbers.conf Changeset: ada58d13 Author: Igor Ignatyev Date: 2021-08-02 20:44:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ada58d13f78eb8a240220c45c573335eeb47cf07 8067223: [TESTBUG] Rename Whitebox API package Reviewed-by: dholmes, kvn ! src/hotspot/share/prims/nativeLookup.cpp ! src/hotspot/share/prims/wbtestmethods/parserTests.cpp ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/TEST.ROOT ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java ! test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java ! test/hotspot/jtreg/serviceability/ParserTest.java ! test/hotspot/jtreg/testlibrary/ctw/Makefile ! test/jdk/TEST.ROOT ! test/jtreg-ext/requires/VMProps.java = test/lib-test/jdk/test/whitebox/BlobSanityTest.java = test/lib-test/jdk/test/whitebox/CPUInfoTest.java = test/lib-test/jdk/test/whitebox/MismatchedWhiteBox/WhiteBox.java + test/lib-test/jdk/test/whitebox/OldWhiteBox.java = test/lib-test/jdk/test/whitebox/WBApi.java = test/lib-test/jdk/test/whitebox/vm_flags/BooleanTest.java = test/lib-test/jdk/test/whitebox/vm_flags/DoubleTest.java = test/lib-test/jdk/test/whitebox/vm_flags/IntxTest.java = test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java = test/lib-test/jdk/test/whitebox/vm_flags/StringTest.java = test/lib-test/jdk/test/whitebox/vm_flags/Uint64Test.java = test/lib-test/jdk/test/whitebox/vm_flags/UintxTest.java = test/lib-test/jdk/test/whitebox/vm_flags/VmFlagTest.java ! test/lib/jdk/test/lib/helpers/ClassFileInstaller.java = test/lib/jdk/test/whitebox/WhiteBox.java + test/lib/jdk/test/whitebox/code/BlobType.java = test/lib/jdk/test/whitebox/code/CodeBlob.java + test/lib/jdk/test/whitebox/code/Compiler.java = test/lib/jdk/test/whitebox/code/NMethod.java = test/lib/jdk/test/whitebox/cpuinfo/CPUInfo.java + test/lib/jdk/test/whitebox/gc/GC.java = test/lib/jdk/test/whitebox/parser/DiagnosticCommand.java ! test/lib/sun/hotspot/WhiteBox.java ! test/lib/sun/hotspot/code/CodeBlob.java ! test/lib/sun/hotspot/code/NMethod.java ! test/lib/sun/hotspot/cpuinfo/CPUInfo.java Changeset: c8add223 Author: Jesper Wilhelmsson Date: 2021-08-03 01:01:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c8add223a10030e40ccef42e081fd0d8f00e0593 Merge Reviewed-by: mikael ! src/hotspot/share/prims/whitebox.cpp ! test/lib/sun/hotspot/WhiteBox.java ! src/hotspot/share/prims/whitebox.cpp ! test/lib/sun/hotspot/WhiteBox.java Changeset: b217a6ca Author: Albert Mingkun Yang Date: 2021-08-03 11:43:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b217a6ca0f920eddc1d4596ce8c6445423f1d15d 8271609: Misleading message for AbortVMOnVMOperationTimeoutDelay Reviewed-by: dholmes ! src/hotspot/share/runtime/vmThread.cpp Changeset: bdb50cab Author: Xiaowei Lu Committer: Per Liden Date: 2021-08-03 12:23:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bdb50cab79056bb2ac9fe1ba0cf0f237317052da 8270347: ZGC: Adopt release-acquire ordering for forwarding table access Co-authored-by: Hao Tang Reviewed-by: eosterlund, pliden ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: f15d6cbc Author: Coleen Phillimore Date: 2021-08-03 17:20:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f15d6cbcaf191b9718ab51b1e8b72938c0abdd6b 8271506: Add ResourceHashtable support for deleting selected entries Reviewed-by: iklam, stuefe ! src/hotspot/share/utilities/resourceHash.hpp ! test/hotspot/gtest/utilities/test_resourceHash.cpp Changeset: 6594d3a3 Author: Joe Darcy Date: 2021-08-03 18:13:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6594d3a3ef175a71ea34c7698ab96537c761f022 8271711: Remove WorkArounds.isSynthetic Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java Changeset: 0199b03e Author: Andy Herrick Date: 2021-08-03 18:51:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0199b03eb3bd9ffe79b5193ff1792144b5c488f1 8271344: Windows product version issue Reviewed-by: asemenyuk, almatvee ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/MsiVersion.java ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources.properties ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties ! test/jdk/tools/jpackage/junit/jdk/jpackage/internal/PlatformVersionTest.java Changeset: a8408708 Author: Weijun Wang Date: 2021-08-04 00:02:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a8408708b065a877278acc6b007ad6a9baaf2561 8271616: oddPart in MutableBigInteger::mutableModInverse contains info on final result Reviewed-by: bpb, darcy, valeriep ! src/java.base/share/classes/java/math/MutableBigInteger.java Changeset: 43a6ba96 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-04 01:35:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/43a6ba9677551762c1bc1dc2f994dde7d6d9f1a5 8271726: JFR: should use equal() to check event fields in tests Reviewed-by: egahlin ! test/jdk/jdk/jfr/event/diagnostics/TestHeapDump.java Changeset: 3435d299 Author: Calvin Cheung Date: 2021-08-04 01:38:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3435d299f76ada66e7b7cb42d9f0265cf99a30ca 8271003: hs_err improvement: handle CLASSPATH env setting longer than O_BUFLEN Reviewed-by: dholmes, stuefe, iklam, minqi ! src/hotspot/share/runtime/os.cpp + test/hotspot/jtreg/runtime/ErrorHandling/ClassPathEnvVar.java Changeset: d3b40cb6 Author: Igor Ignatyev Date: 2021-08-04 01:49:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d3b40cb68323a1b0efa461b4a415793415a2deef 8271826: mark hotspot runtime/condy tests which ignore external VM flags Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/condy/BadBSMUseTest.java ! test/hotspot/jtreg/runtime/condy/CondyLDCTest.java ! test/hotspot/jtreg/runtime/condy/CondyNewInvokeSpecialTest.java ! test/hotspot/jtreg/runtime/condy/escapeAnalysis/TestEscapeCondy.java ! test/hotspot/jtreg/runtime/condy/staticInit/TestInitException.java Changeset: 659498a0 Author: Igor Ignatyev Date: 2021-08-04 01:59:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/659498a07f5be0feae26c1772a6b4e8ad2dec103 8271829: mark hotspot runtime/Throwable tests which ignore external VM flags Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/Throwable/StackTraceLogging.java ! test/hotspot/jtreg/runtime/Throwable/TestCatchThrowableOOM.java ! test/hotspot/jtreg/runtime/Throwable/TestMaxJavaStackTraceDepth.java Changeset: 7e518f42 Author: David Holmes Date: 2021-08-04 02:08:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7e518f42c9346abdf0c8059b45d3dfef95ed69bb 8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status Reviewed-by: stuefe, dcubed, sspitsyn ! src/hotspot/share/services/threadService.cpp Changeset: 34ba70a7 Author: Igor Ignatyev Date: 2021-08-04 02:19:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/34ba70a71ba414a6d8cfc5c667d556d4d6072793 8269037: jsig/Testjsig.java doesn't have to be restricted to linux only Reviewed-by: mseledtsov, dholmes ! make/test/JtregNativeHotspot.gmk ! test/hotspot/jtreg/runtime/jsig/Testjsig.java Changeset: 68dd8280 Author: Igor Ignatyev Date: 2021-08-04 02:22:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/68dd8280886ede7f5cd8d34811ad0f9ffac440f3 8271224: runtime/EnclosingMethodAttr/EnclMethodAttr.java doesn't check exit code Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/runtime/EnclosingMethodAttr/EnclMethodAttr.java Changeset: 66c653c5 Author: Thomas Stuefe Date: 2021-08-04 04:11:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/66c653c561b3b5e904579af62e23ff94952bca05 8271721: Split gc/g1/TestMixedGCLiveThreshold into separate tests Reviewed-by: tschatzl, rrich ! test/hotspot/jtreg/gc/g1/TestMixedGCLiveThreshold.java Changeset: b48f31d3 Author: Igor Ignatyev Date: 2021-08-04 04:51:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b48f31d381e68a5de0925704bd22ce63d7363c4f 8271743: mark hotspot runtime/jni tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/jni/CalleeSavedRegisters/FPRegs.java ! test/hotspot/jtreg/runtime/jni/checked/TestCheckedReleaseArrayElements.java Changeset: 33ec3a4d Author: Igor Ignatyev Date: 2021-08-04 04:53:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/33ec3a4d95fc81cc60c8a66380947111cb966aa7 8271744: mark hotspot runtime/getSysPackage tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/getSysPackage/GetPackageXbootclasspath.java ! test/hotspot/jtreg/runtime/getSysPackage/GetSysPkgTest.java Changeset: 3d40cac8 Author: Igor Ignatyev Date: 2021-08-04 05:16:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3d40cac8ce3cb087788cdaa04d567eee4a1d8052 8271821: mark hotspot runtime/MinimalVM tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/MinimalVM/CDS.java ! test/hotspot/jtreg/runtime/MinimalVM/CheckJNI.java ! test/hotspot/jtreg/runtime/MinimalVM/Instrumentation.java ! test/hotspot/jtreg/runtime/MinimalVM/JMX.java ! test/hotspot/jtreg/runtime/MinimalVM/JVMTI.java ! test/hotspot/jtreg/runtime/MinimalVM/NMT.java Changeset: 68f78477 Author: Igor Ignatyev Date: 2021-08-04 05:17:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/68f784778ce24a26d768b62b979fd587f131d332 8271825: mark hotspot runtime/LoadClass tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/LoadClass/LoadClassNegative.java ! test/hotspot/jtreg/runtime/LoadClass/LongBCP.java ! test/hotspot/jtreg/runtime/LoadClass/TestResize.java Changeset: e49b7d95 Author: Igor Ignatyev Date: 2021-08-04 05:18:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e49b7d958c1db70c452cb6c47c885b7e6264b822 8271828: mark hotspot runtime/classFileParserBug tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/classFileParserBug/ClassFileParserBug.java ! test/hotspot/jtreg/runtime/classFileParserBug/TestBadPackageWithInterface.java ! test/hotspot/jtreg/runtime/classFileParserBug/TestEmptyBootstrapMethodsAttr.java Changeset: 9e769090 Author: Igor Ignatyev Date: 2021-08-04 05:19:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9e769090a020d58f2488dd77fb0681aa2d3856db 8271824: mark hotspot runtime/CompressedOops tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassPointers.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassSpaceSize.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedKlassPointerAndOops.java ! test/hotspot/jtreg/runtime/CompressedOops/ObjectAlignment.java ! test/hotspot/jtreg/runtime/CompressedOops/UseCompressedOops.java Changeset: 04134fcd Author: Xubo Zhang Committer: David Holmes Date: 2021-08-04 05:43:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/04134fcdaaf058429fc4ab109a98005ddce4636d 8264543: Cross modify fence optimization for x86 Reviewed-by: dholmes, tschatzl, sviswanathan ! src/hotspot/cpu/x86/vm_version_ext_x86.hpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp ! src/hotspot/os_cpu/bsd_x86/orderAccess_bsd_x86.hpp ! src/hotspot/os_cpu/linux_x86/orderAccess_linux_x86.hpp ! src/hotspot/os_cpu/windows_x86/orderAccess_windows_x86.hpp ! src/hotspot/share/runtime/orderAccess.hpp ! src/hotspot/share/runtime/vm_version.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.amd64/src/jdk/vm/ci/amd64/AMD64.java Changeset: 977b8c4e Author: Jie Fu Date: 2021-08-04 07:25:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/977b8c4e16b02421de8bf78dc60a3866ce25fc1f 8271836: runtime/ErrorHandling/ClassPathEnvVar.java fails with release VMs Reviewed-by: stuefe ! test/hotspot/jtreg/runtime/ErrorHandling/ClassPathEnvVar.java Changeset: efcdcc7f Author: Jayathirth D V Date: 2021-08-04 09:16:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/efcdcc7fb792c77aef1da69b1fcc652b401115f7 8270893: IndexOutOfBoundsException while reading large TIFF file Reviewed-by: prr, serb ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java + test/jdk/javax/imageio/plugins/tiff/LargeTIFFTagTest.java Changeset: 4df1bc4b Author: Prasanta Sadhukhan Date: 2021-08-04 11:38:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4df1bc4bc6ec19f9a5bb0e85ee34fb746011e1fa 6350025: API documentation for JOptionPane using deprecated methods. Reviewed-by: jdv ! src/java.desktop/share/classes/javax/swing/JOptionPane.java Changeset: eec64f55 Author: Thomas Stuefe Date: 2021-08-04 12:19:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/eec64f55870cf51746755d8fa59098a82109e826 8256844: Make NMT late-initializable Reviewed-by: coleenp, zgu ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/services/memTracker.cpp ! src/hotspot/share/services/memTracker.hpp ! src/hotspot/share/services/nmtCommon.cpp ! src/hotspot/share/services/nmtCommon.hpp + src/hotspot/share/services/nmtPreInit.cpp + src/hotspot/share/services/nmtPreInit.hpp ! src/hotspot/share/services/threadStackTracker.cpp ! src/hotspot/share/services/threadStackTracker.hpp ! src/hotspot/share/services/virtualMemoryTracker.cpp ! src/hotspot/share/services/virtualMemoryTracker.hpp ! src/java.base/share/native/libjli/java.c ! src/java.base/share/native/libjli/jli_util.h + test/hotspot/gtest/nmt/test_nmtpreinit.cpp + test/hotspot/gtest/nmt/test_nmtpreinitmap.cpp ! test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp ! test/hotspot/gtest/runtime/test_os.cpp ! test/hotspot/gtest/runtime/test_virtualMemoryTracker.cpp ! test/hotspot/jtreg/TEST.groups + test/hotspot/jtreg/gtest/NMTGtests.java + test/hotspot/jtreg/runtime/NMT/NMTForOtherLaunchersTest.java + test/hotspot/jtreg/runtime/NMT/NMTInitializationTest.java ! test/jdk/tools/launcher/TestSpecialArgs.java Changeset: 0a27f264 Author: Ivan Walulya Date: 2021-08-04 13:04:39 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a27f264da5a21d581e099573e48485bdeea7790 8265057: G1: Investigate removal of maintenance of two BOT thresholds Reviewed-by: ayang, tschatzl ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp Changeset: 221e4b9c Author: Weijun Wang Date: 2021-08-04 13:37:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/221e4b9c61cd1c9c3f4c037589ba639541532910 8270797: ShortECDSA.java test is not complete Reviewed-by: mullan ! test/jdk/com/sun/org/apache/xml/internal/security/ShortECDSA.java Changeset: 452f7d76 Author: Kim Barrett Date: 2021-08-04 15:04:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/452f7d764fc0112cabf0be944e4233173d63f933 8271217: Fix race between G1PeriodicGCTask checks and GC request Reviewed-by: iwalulya, tschatzl, lkorinth ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp + src/hotspot/share/gc/g1/g1GCCounters.cpp + src/hotspot/share/gc/g1/g1GCCounters.hpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.cpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.hpp ! src/hotspot/share/gc/g1/g1VMOperations.cpp ! src/hotspot/share/gc/g1/g1VMOperations.hpp Changeset: 9f1edafa Author: Raffaello Giulietti Committer: Brian Burkhalter Date: 2021-08-04 17:16:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9f1edafac4f096977ea6ce075ae7a6b0c2112b7d 8271599: Javadoc of floorDiv() and floorMod() families is inaccurate in some places Reviewed-by: darcy, bpb ! src/java.base/share/classes/java/lang/Math.java ! src/java.base/share/classes/java/lang/StrictMath.java Changeset: 392fcc9d Author: Jatin Bhateja Date: 2021-08-04 17:49:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/392fcc9df7e1547672f727e8fdc8de73ffdfe534 8271589: fatal error with variable shift count integer rotate operation. Reviewed-by: kvn, sviswanathan ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectornode.cpp ! test/hotspot/jtreg/compiler/c2/cr6340864/TestIntVectRotate.java Changeset: 6b55ef3b Author: Sergey Bylokhov Date: 2021-08-04 18:44:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6b55ef3b58ae405c46f440e06b5adb03cec3a500 8271456: Avoid looking up standard charsets in "java.desktop" module Reviewed-by: jdv, azvegint, aivanov ! src/java.desktop/macosx/classes/com/apple/laf/AquaFileView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/COMMarkerSegment.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFImageWriter.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/wbmp/WBMPMetadata.java ! src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java ! src/java.desktop/share/classes/com/sun/media/sound/DLSSoundbank.java ! src/java.desktop/share/classes/com/sun/media/sound/RIFFReader.java ! src/java.desktop/share/classes/com/sun/media/sound/RIFFWriter.java ! src/java.desktop/share/classes/com/sun/media/sound/SF2Soundbank.java ! src/java.desktop/share/classes/com/sun/media/sound/SoftTuning.java ! src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java ! src/java.desktop/share/classes/javax/swing/text/rtf/RTFReader.java ! src/java.desktop/share/classes/sun/awt/FontDescriptor.java ! src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java ! src/java.desktop/share/classes/sun/font/Type1Font.java ! src/java.desktop/share/classes/sun/print/PageableDoc.java ! src/java.desktop/unix/classes/sun/awt/X11/XAtom.java ! src/java.desktop/unix/classes/sun/awt/X11/XNETProtocol.java ! src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java ! src/java.desktop/unix/classes/sun/awt/XSettings.java ! src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java ! src/java.desktop/unix/classes/sun/font/NativeFont.java ! src/java.desktop/unix/classes/sun/print/AttributeClass.java ! src/java.desktop/unix/classes/sun/print/IPPPrintService.java ! src/java.desktop/windows/classes/sun/awt/windows/WDataTransferer.java Changeset: 91bbe2fc Author: Joe Darcy Date: 2021-08-04 18:48:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/91bbe2fcbda008a9adc8aa77149a4f2156e1b46b 8271888: build error after JDK-8271599 Reviewed-by: psandoz, bpb ! src/java.base/share/classes/java/lang/Math.java Changeset: cdf3d55c Author: Igor Ignatyev Date: 2021-08-04 19:39:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cdf3d55c82844a3c8817f8cc33e85ca15a5ad930 8271890: mark hotspot runtime/Dictionary tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/Dictionary/CleanProtectionDomain.java ! test/hotspot/jtreg/runtime/Dictionary/ProtectionDomainCacheTest.java Changeset: ff7431ea Author: Igor Ignatyev Date: 2021-08-04 19:40:05 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ff7431eafea8bd763250f929aa35edcaae2fbc58 8271886: mark hotspot runtime/InvocationTests tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/InvocationTests/invocationC1Tests.java ! test/hotspot/jtreg/runtime/InvocationTests/invocationOldCHATests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokeinterfaceTests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokespecialTests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokevirtualTests.java Changeset: 6c17e6de Author: Igor Ignatyev Date: 2021-08-04 19:46:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c17e6deb2ab36c3db8577fb6bb2cf2738b58dd4 8271891: mark hotspot runtime/Safepoint tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/Safepoint/TestAbortOnVMOperationTimeout.java ! test/hotspot/jtreg/runtime/Safepoint/TestAbortVMOnSafepointTimeout.java Changeset: a3b01439 Author: Igor Ignatyev Date: 2021-08-04 19:49:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a3b01439701c1e01f9095a51b4f1048282956623 8271887: mark hotspot runtime/CDSCompressedKPtrs tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/XShareAuto.java Changeset: 359c7084 Author: Igor Ignatyev Date: 2021-08-04 19:50:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/359c7084a1bc3a568c9b815debe3c1786eca9d1e 8271893: mark hotspot runtime/PerfMemDestroy/PerfMemDestroy.java test as ignoring external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/PerfMemDestroy/PerfMemDestroy.java Changeset: d62fbea7 Author: Daniel D. Daugherty Date: 2021-08-04 21:06:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d62fbea7b41f150f25ed3a9a037c081cfdc217b6 8271898: disable os.release_multi_mappings_vm on macOS-X64 Reviewed-by: kbarrett ! test/hotspot/gtest/runtime/test_os.cpp Changeset: a007cb1a Author: Yasumasa Suenaga Date: 2021-08-04 23:42:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a007cb1a1dd6a716555031c271cb11f4980813e7 8271863: ProblemList serviceability/sa/TestJmapCore.java on linux-x64 with ZGC Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 181483b9 Author: Erik ?sterlund Date: 2021-08-04 10:28:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/181483b90bcc7d4e44109a14213d4ee2804f7f32 8271064: ZGC several jvm08 perf regressions after JDK-8268372 Reviewed-by: ayang, pliden, tschatzl ! src/hotspot/share/gc/z/zDirector.cpp Changeset: 5f547e8c Author: Daniel D. Daugherty Date: 2021-08-04 16:43:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5f547e8c119e9c0f6a000d2fdc2a693a4e601ba0 8271877: ProblemList jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java in JDK17 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: cebcc07b Author: Daniel D. Daugherty Date: 2021-08-04 19:23:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cebcc07b1b0572e63b420ff86eef78c6aee36393 8271894: ProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK17 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: cd6b54ec Author: Jesper Wilhelmsson Date: 2021-08-05 01:02:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd6b54ec40f1d60fbdb6c8aee1e6ba662daca58c Merge ! test/jdk/ProblemList.txt ! test/jdk/ProblemList.txt Changeset: 7728423f Author: Jesper Wilhelmsson Date: 2021-08-05 01:41:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7728423f8a4cf2b60d9774405b18a28ee498f268 8271895: UnProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK18 Reviewed-by: dholmes ! test/jdk/ProblemList.txt Changeset: 6c8441f0 Author: Jesper Wilhelmsson Date: 2021-08-05 01:42:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c8441f075b349d95ef26f51e8b9fd473748ac64 8271878: UnProblemList jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java in JDK18 Reviewed-by: dholmes ! test/jdk/ProblemList.txt Changeset: 64d18d45 Author: Prasanta Sadhukhan Date: 2021-08-05 04:56:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/64d18d45ef885d5cdd893b7f56236d3f22b4b84c 4819544: SwingSet2 JTable Demo throws NullPointerException Reviewed-by: pbansal, aivanov ! src/demo/share/jfc/SwingSet2/TableDemo.java Changeset: ea9a5952 Author: Yi Yang Date: 2021-08-05 06:39:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ea9a59520de45fe1c2a6706b2a924cbc856a06c6 8270058: Use Objects.check{Index,FromIndexSize} for java.desktop Reviewed-by: psadhukhan, pbansal, jdv ! src/java.desktop/share/classes/com/sun/media/sound/AudioFloatInputStream.java ! src/java.desktop/share/classes/javax/swing/JTabbedPane.java ! test/jdk/java/awt/print/PrinterJob/ImagePrinting/ClippedImages.java ! test/jdk/javax/imageio/AppletResourceTest.java ! test/jdk/javax/imageio/ImageReaderReadAll.java ! test/jdk/javax/imageio/metadata/IIOMetadataFormat/UserPluginMetadataFormatTest.java Changeset: 4abe5311 Author: Richard Reingruber Date: 2021-08-05 07:31:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4abe5311407c68d04fb0babb87fa279e35d5fabc 8271722: [TESTBUG] gc/g1/TestMixedGCLiveThreshold.java can fail if G1 Full GC uses >1 workers Reviewed-by: ayang, tschatzl ! test/hotspot/jtreg/gc/g1/TestMixedGCLiveThreshold.java Changeset: 685fc3c6 Author: Julia Boes Date: 2021-08-05 09:42:16 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/685fc3c677cd0e71ef4443214ae14c7eed355140 8270903: sun.net.httpserver.HttpConnection: Improve toString Reviewed-by: chegar, vtewari ! src/jdk.httpserver/share/classes/sun/net/httpserver/HttpConnection.java Changeset: 18dd4d46 Author: Per Liden Date: 2021-08-05 12:40:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/18dd4d469d120276d05e74607d780f01056f1a8b 8271121: ZGC: stack overflow (segv) when -Xlog:gc+start=debug Reviewed-by: ayang, eosterlund ! src/hotspot/share/gc/z/zStat.cpp Changeset: 55bd52a1 Author: Claes Redestad Date: 2021-08-05 14:46:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/55bd52a14283033d66cd7bf1deadb31c040b09c7 8271840: Add simple Integer.toString microbenchmarks Reviewed-by: shade ! test/micro/org/openjdk/bench/java/lang/Integers.java ! test/micro/org/openjdk/bench/java/lang/Longs.java Changeset: d7fc9e41 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-05 14:55:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d7fc9e4171efa4154951cf353df10f9bacbed7ab 8267840: Improve URLStreamHandler.parseURL() Reviewed-by: dfuchs, redestad ! src/java.base/share/classes/java/net/URLStreamHandler.java Changeset: 7234a433 Author: Daniel D. Daugherty Date: 2021-08-05 14:55:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7234a433f8ba13d8a4b696a77653b441163d2afa 8271953: fix mis-merge in JDK-8271878 Reviewed-by: jwilhelm, ctornqvi ! test/jdk/ProblemList.txt Changeset: e2c5bfe0 Author: Brian Burkhalter Date: 2021-08-05 16:10:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e2c5bfe083adb82c0d99ba3cb05a9d5cdb8a05cc 8271308: (fc) FileChannel.transferTo() transfers no more than Integer.MAX_VALUE bytes in one call Reviewed-by: alanb, vtewari ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/unix/native/libnio/ch/FileChannelImpl.c ! src/java.base/windows/native/libnio/ch/FileChannelImpl.c + test/jdk/java/nio/channels/FileChannel/Transfer2GPlus.java Changeset: 3ab95d19 Author: Igor Ignatyev Date: 2021-08-05 16:32:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3ab95d19174100f440e2274d5b2c3119fb55e9e1 8271905: mark hotspot runtime/Metaspace tests which ignore external VM flags Reviewed-by: stuefe ! test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeEnvVarTest.java ! test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeTest.java Changeset: cb368802 Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2021-08-05 17:41:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cb368802815c465f8eef7aa930d6cbb6540d0fa8 8270116: Expand ButtonGroupLayoutTraversalTest.java to run in all LaFs, including Aqua on macOS Reviewed-by: psadhukhan, aivanov ! test/jdk/java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java Changeset: 62e72adf Author: Patricio Chilano Mateo Date: 2021-08-05 19:16:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/62e72adfa7bcc8e2a70c1346f3051deb2488affc 8271293: Monitor class should use ThreadBlockInVMPreprocess Reviewed-by: dholmes, dcubed ! src/hotspot/share/prims/jvmtiRawMonitor.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/objectMonitor.cpp Changeset: f312f28b Author: Daniel D. Daugherty Date: 2021-08-05 01:00:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f312f28b8b92949cc8da276c255a746f8098e741 8271863: ProblemList serviceability/sa/TestJmapCore.java on linux-x64 with ZGC Backport-of: a007cb1a1dd6a716555031c271cb11f4980813e7 ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 90f85ff7 Author: Markus Gr?nlund Date: 2021-08-05 09:13:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/90f85ff70fe6b54ecc08794269422364f2128bfb 8271588: JFR Recorder Thread crashed with SIGSEGV in write_klass Reviewed-by: egahlin ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdEpoch.hpp ! src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp ! src/hotspot/share/jfr/utilities/jfrSignal.hpp Changeset: dfacda48 Author: Jonathan Gibbons Date: 2021-08-05 22:12:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/dfacda488bfbe2e11e8d607a6d08527710286982 8270872: Final nroff manpage update for JDK 17 Reviewed-by: darcy, mr, iris, naoto ! src/java.base/share/man/java.1 ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 ! src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 ! src/jdk.jfr/share/man/jfr.1 ! src/jdk.jlink/share/man/jlink.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jpackage/share/man/jpackage.1 ! src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: 14692d5e Author: Jesper Wilhelmsson Date: 2021-08-06 01:21:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/14692d5ed0652b867fcf28baafa498a9441683ac Merge ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/java.base/share/man/java.1 ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/java.base/share/man/java.1 Changeset: e38e365c Author: Jaikiran Pai Date: 2021-08-06 01:30:45 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e38e365c70197f7e45d8bdc7d6c2e3c59717369e 8271208: Typo in ModuleDescriptor.read javadoc Reviewed-by: alanb, iris ! src/java.base/share/classes/java/lang/module/ModuleDescriptor.java Changeset: adb0ae56 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-06 02:11:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/adb0ae56ab9efec12526433927c15308902535f7 8261441: JFR: Filename expansion Reviewed-by: jbachorik, egahlin ! src/java.base/share/man/java.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStop.java ! test/jdk/jdk/jfr/jcmd/JcmdHelper.java + test/jdk/jdk/jfr/jcmd/TestFilenameExpansion.java ! test/jdk/jdk/jfr/jcmd/TestJcmdDumpGeneratedFilename.java Changeset: ea02dade Author: David Holmes Date: 2021-08-06 03:49:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ea02dade43409444b7c9f8b5065fded535b64f3f 8272067: Initial nroff manpage generation for JDK 18 Reviewed-by: darcy ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 ! src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 ! src/jdk.jfr/share/man/jfr.1 ! src/jdk.jlink/share/man/jlink.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jpackage/share/man/jpackage.1 ! src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: e7b6f481 Author: Ioi Lam Date: 2021-08-06 05:58:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e7b6f48182bb541741cb1465cd676d1749a028f8 8265602: -XX:DumpLoadedClassList should support custom loaders Reviewed-by: ccheung, minqi ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/archiveUtils.cpp + src/hotspot/share/cds/classListWriter.cpp ! src/hotspot/share/cds/classListWriter.hpp ! src/hotspot/share/cds/metaspaceShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java + test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomClassListDump.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomLoaderApp.java + test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee4WithLambda.java - test/hotspot/jtreg/runtime/cds/appcds/test-classes/ArrayListTest.java + test/hotspot/jtreg/runtime/cds/appcds/test-classes/DumpClassListApp.java Changeset: c2b7face Author: Albert Mingkun Yang Date: 2021-08-06 08:27:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c2b7facea442eda470913546001c9a5e35d18929 8271896: Remove unnecessary top address checks in BOT Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp Changeset: b6a19f17 Author: Christoph G?ttschkes Committer: Aleksey Shipilev Date: 2021-08-06 10:23:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b6a19f173bc6c07622633c9d6757d96a95b43398 8271128: InlineIntrinsics support for 32-bit ARM Reviewed-by: shade ! src/hotspot/cpu/arm/c1_globals_arm.hpp ! src/hotspot/cpu/arm/c2_globals_arm.hpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/share/interpreter/templateInterpreterGenerator.hpp Changeset: 4abe5f73 Author: duke Date: 2021-08-06 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4abe5f733e3db5db87a3c8abe0df87977dabe0f1 Automatic merge of jdk:master into master Changeset: b818e9cf Author: duke Date: 2021-08-06 11:00:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b818e9cf12860f6e79612c5513e7cfa0ae3bc101 Automatic merge of master into foreign-memaccess+abi Changeset: e2472dd6 Author: duke Date: 2021-08-06 11:01:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e2472dd62de57d7b1f85da8326dbcbbf23ded6c7 Automatic merge of foreign-memaccess+abi into foreign-jextract From duke at openjdk.java.net Fri Aug 6 11:19:04 2021 From: duke at openjdk.java.net (duke) Date: Fri, 6 Aug 2021 11:19:04 GMT Subject: git: openjdk/panama-foreign: foreign-memaccess+abi: 98 new changesets Message-ID: <8bd97e32-5cb2-4e9b-8912-03a37ddd4137@openjdk.org> Changeset: 9856ace8 Author: Christian Hagedorn Date: 2021-07-30 12:28:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9856ace828617d3f2f9a6282e650009d3af65749 8268963: [IR Framework] Some default regexes matching on PrintOptoAssembly in IRNode.java do not work on all platforms Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/IRNode.java ! test/hotspot/jtreg/compiler/lib/ir_framework/Test.java ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/TestVMProcess.java ! test/hotspot/jtreg/compiler/lib/ir_framework/shared/TestFrameworkSocket.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/IREncodingPrinter.java ! test/hotspot/jtreg/compiler/lib/ir_framework/test/TestVM.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java Changeset: 89f5c96d Author: Sean Mullan Date: 2021-07-30 12:43:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/89f5c96d63a7a08e0b4145eee83a946fc99141e4 8232066: Remove outdated code/methods from PKIX implementation Reviewed-by: weijun ! src/java.base/share/classes/sun/security/provider/certpath/DistributionPointFetcher.java ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.base/share/classes/sun/security/provider/certpath/PKIX.java ! src/java.base/share/classes/sun/security/util/DisabledAlgorithmConstraints.java ! src/java.base/share/classes/sun/security/validator/EndEntityChecker.java ! src/java.base/share/classes/sun/security/validator/PKIXValidator.java ! src/java.base/share/classes/sun/security/validator/Validator.java ! test/jdk/sun/security/validator/ConstructorTest.java Changeset: baf7797b Author: Prasanta Sadhukhan Date: 2021-07-30 15:37:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/baf7797b092704d7dc9401db8b3dda19b91be303 8049301: Suspicious use of string identity checks in JComponent.setUIProperty Reviewed-by: azvegint ! src/java.desktop/share/classes/javax/swing/JComponent.java Changeset: 5b3c4182 Author: Sergey Chernyshev Committer: Alexander Scherbatiy Date: 2021-07-30 16:10:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5b3c418249cfb53ae2ba530bcbbcdb5e509e4775 8270321: Startup regressions in 18-b5 caused by JDK-8266310 Reviewed-by: mchung, alanb ! src/java.base/share/classes/jdk/internal/loader/NativeLibraries.java Changeset: cd7e30ef Author: Thomas Stuefe Date: 2021-07-30 16:42:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd7e30ef84165722c2128471231b6000b1c46fb8 8271242: Add Arena regression tests Reviewed-by: mseledtsov, coleenp ! test/hotspot/gtest/memory/test_arena.cpp + test/hotspot/gtest/testutils.cpp + test/hotspot/gtest/testutils.hpp + test/hotspot/jtreg/gtest/ArenaGtests.java Changeset: 6c68ce2d Author: Andrew Haley Date: 2021-07-30 18:02:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c68ce2d396c6fe02201daf2bdb8c164de807cc1 8270947: AArch64: C1: use zero_words to initialize all objects Reviewed-by: ngasson, adinn ! src/hotspot/cpu/aarch64/aarch64.ad ! src/hotspot/cpu/aarch64/c1_LIRGenerator_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/c1_MacroAssembler_aarch64.hpp ! src/hotspot/cpu/aarch64/c1_Runtime1_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.hpp + test/micro/org/openjdk/bench/vm/gc/RawAllocationRate.java Changeset: 71ca0c08 Author: Jatin Bhateja Date: 2021-07-30 18:28:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/71ca0c08f09e87673f1cf3f918a0802961359166 8270848: Redundant unsafe opmask register allocation in some instruction patterns. Reviewed-by: sviswanathan, kvn ! src/hotspot/cpu/x86/matcher_x86.hpp ! src/hotspot/cpu/x86/x86_32.ad ! src/hotspot/cpu/x86/x86_64.ad Changeset: d6bb8461 Author: Rajan Halade Date: 2021-07-30 20:16:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d6bb846159be7e46fba0c3ca2915617f945e0b42 8248899: security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java fails, Certificate has been revoked Reviewed-by: mullan ! test/jdk/ProblemList.txt ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/QuoVadisCA.java Changeset: 4bc9b049 Author: Rajan Halade Date: 2021-07-30 20:29:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4bc9b049846bd59f5c41bd62a59b567b52c9efc5 8263059: security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java fails due to revoked cert Reviewed-by: mullan ! test/jdk/ProblemList.txt ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/ComodoCA.java Changeset: a1b5b818 Author: Chris Plummer Date: 2021-07-30 00:56:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a1b5b818c5e276c21c05bce71ca01c18c35aef40 8271507: ProblemList SA tests that are failing with ZGC due to JDK-8248912 Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 6180cf1f Author: Chris Plummer Date: 2021-07-30 01:01:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6180cf1f0d868052709cd55cee53f37f0fc42e21 8271512: ProblemList serviceability/sa/sadebugd/DebugdConnectTest.java due to 8270326 Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList.txt Changeset: e351de3b Author: Roland Westrelin Date: 2021-07-30 07:28:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e351de3bd67773109607db7f4648c173140cb024 8271272: C2: assert(!had_error) failed: bad dominance Reviewed-by: kvn, thartmann, chagedorn ! src/hotspot/share/opto/loopnode.cpp + test/hotspot/jtreg/compiler/loopopts/TestMainNeverExecuted.java Changeset: 7cc1eb3e Author: Jesper Wilhelmsson Date: 2021-07-30 22:30:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7cc1eb3e571e00f1cbfd62eb843df96ba8e88199 Merge ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt ! test/hotspot/jtreg/ProblemList-zgc.txt ! test/hotspot/jtreg/ProblemList.txt Changeset: 72145f3b Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:46:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/72145f3b9472c8f5f64f9b9ac93e3331e646f15a 8269665: Clean-up toString() methods of some primitive wrappers Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Boolean.java ! src/java.base/share/classes/java/lang/Byte.java ! src/java.base/share/classes/java/lang/Character.java ! src/java.base/share/classes/java/lang/Short.java Changeset: 6c4c48fa Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:47:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c4c48faea8a8309a71d7a5d261f776031014881 8266972: Use String.concat() in j.l.Class where invokedynamic-based String concatenation is not available Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Class.java Changeset: 2536e434 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:48:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2536e4342e6c33c16685c9983b09f83a9c7ea869 8270160: Remove redundant bounds check from AbstractStringBuilder.charAt() Reviewed-by: redestad ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java ! src/java.base/share/classes/java/lang/StringLatin1.java Changeset: 6a3f8343 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:49:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6a3f8343bc0e92c29a87c5840cbef9ab2988f153 8268113: Re-use Long.hashCode() where possible Reviewed-by: redestad ! src/java.base/share/classes/java/lang/Double.java ! src/java.base/share/classes/java/time/LocalTime.java ! src/java.base/share/classes/java/time/temporal/ValueRange.java ! src/java.desktop/macosx/classes/apple/laf/JRSUIConstants.java ! src/java.xml/share/classes/com/sun/org/apache/xerces/internal/impl/dv/xs/DoubleDV.java ! src/jdk.jshell/share/classes/jdk/internal/jshell/tool/Selector.java Changeset: 249d6418 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-02 12:50:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/249d641889c6f9aed6957502d5fca9c74c9baceb 8263561: Re-examine uses of LinkedList Reviewed-by: redestad ! src/java.base/share/classes/java/lang/reflect/ProxyGenerator.java ! src/java.base/share/classes/java/util/ResourceBundle.java ! src/java.base/share/classes/jdk/internal/loader/URLClassPath.java ! src/java.base/share/classes/jdk/internal/util/jar/JarIndex.java ! src/java.base/share/classes/sun/nio/ch/MembershipRegistry.java ! src/java.base/share/classes/sun/nio/fs/AbstractPoller.java ! src/java.base/share/classes/sun/util/locale/provider/TimeZoneNameUtility.java ! src/java.base/unix/classes/sun/net/dns/ResolverConfigurationImpl.java ! test/jdk/sun/misc/JarIndex/JarIndexMergeTest.java Changeset: e74537f9 Author: Aleksey Shipilev Date: 2021-08-02 15:05:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e74537f9241e57b4668ff542364220936e920330 8271605: Update JMH devkit to 1.32 Reviewed-by: redestad, ecaspole ! make/devkit/createJMHBundle.sh Changeset: 7a4c754e Author: Claes Redestad Date: 2021-08-02 15:34:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7a4c754e5db374a7bc3dd36bb1ccf7e8e7821d3b 8271611: Use SecurityConstants.ACCESS_PERMISSION in MethodHandles Reviewed-by: rriggs ! src/java.base/share/classes/java/lang/invoke/MethodHandles.java Changeset: 3e3051e2 Author: Lance Andersen Date: 2021-08-02 15:47:16 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3e3051e2ee93142983e9a3edee038e4f7b5ac0f2 8251329: (zipfs) Files.walkFileTree walks infinitely if zip has dir named "." inside Reviewed-by: alanb, naoto ! src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java ! src/jdk.zipfs/share/classes/module-info.java + test/jdk/jdk/nio/zipfs/HasDotDotTest.java Changeset: db950ca4 Author: Daniel D. Daugherty Date: 2021-08-02 16:00:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/db950ca41f3ab7823fa221e8e3f63caf3dd51ea3 8271348: Add stronger sanity check of thread state when polling for safepoint/handshakes Co-authored-by: Patricio Chilano Mateo Reviewed-by: dholmes, pchilanomate ! src/hotspot/share/runtime/safepoint.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/safepointMechanism.cpp Changeset: 0a852363 Author: Daniel D. Daugherty Date: 2021-08-02 16:01:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a85236396c667c8d2c890e4384c623b39455075 8193559: ugly DO_JAVA_THREADS macro should be replaced Co-authored-by: Kim Barrett Reviewed-by: eosterlund, ayang, kbarrett, dholmes ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp Changeset: e621cffa Author: Claes Redestad Date: 2021-08-02 22:37:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e621cffa4fee0b403a8650519c70e0a6cb76b03c 8271627: Use local field access in favor of Class.getClassLoader0 Reviewed-by: mchung ! src/java.base/share/classes/java/lang/Class.java Changeset: 0b953940 Author: Claes Redestad Date: 2021-08-02 22:59:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0b9539405d764670a1a6dca5a6552b58c3edd7a3 8271624: Avoid unnecessary ThreadGroup.checkAccess calls when creating Threads Reviewed-by: rriggs ! src/java.base/share/classes/java/lang/Thread.java Changeset: 84f02310 Author: Yumin Qi Date: 2021-08-02 23:07:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/84f02310310293163130dde24e30563d39f1610a 8271419: Refactor test code for modifying CDS archive contents Reviewed-by: iklam, ccheung ! test/hotspot/jtreg/runtime/cds/appcds/SharedArchiveConsistency.java + test/lib/jdk/test/lib/cds/CDSArchiveUtils.java Changeset: f8fb5713 Author: Saravana Kumar Vijayasekaran Committer: Mikael Vidstedt Date: 2021-08-02 18:42:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f8fb5713074b8960f5530d7aca954f84d57c1f30 8271150: Remove EA from JDK 17 version string starting with Initial RC promotion on Aug 5, 2021(B34) Reviewed-by: iris, mikael ! make/conf/version-numbers.conf Changeset: ada58d13 Author: Igor Ignatyev Date: 2021-08-02 20:44:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ada58d13f78eb8a240220c45c573335eeb47cf07 8067223: [TESTBUG] Rename Whitebox API package Reviewed-by: dholmes, kvn ! src/hotspot/share/prims/nativeLookup.cpp ! src/hotspot/share/prims/wbtestmethods/parserTests.cpp ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/TEST.ROOT ! test/hotspot/jtreg/compiler/jvmci/compilerToVM/AllocateCompileIdTest.java ! test/hotspot/jtreg/runtime/cds/appcds/JarBuilder.java ! test/hotspot/jtreg/serviceability/ParserTest.java ! test/hotspot/jtreg/testlibrary/ctw/Makefile ! test/jdk/TEST.ROOT ! test/jtreg-ext/requires/VMProps.java = test/lib-test/jdk/test/whitebox/BlobSanityTest.java = test/lib-test/jdk/test/whitebox/CPUInfoTest.java = test/lib-test/jdk/test/whitebox/MismatchedWhiteBox/WhiteBox.java + test/lib-test/jdk/test/whitebox/OldWhiteBox.java = test/lib-test/jdk/test/whitebox/WBApi.java = test/lib-test/jdk/test/whitebox/vm_flags/BooleanTest.java = test/lib-test/jdk/test/whitebox/vm_flags/DoubleTest.java = test/lib-test/jdk/test/whitebox/vm_flags/IntxTest.java = test/lib-test/jdk/test/whitebox/vm_flags/SizeTTest.java = test/lib-test/jdk/test/whitebox/vm_flags/StringTest.java = test/lib-test/jdk/test/whitebox/vm_flags/Uint64Test.java = test/lib-test/jdk/test/whitebox/vm_flags/UintxTest.java = test/lib-test/jdk/test/whitebox/vm_flags/VmFlagTest.java ! test/lib/jdk/test/lib/helpers/ClassFileInstaller.java = test/lib/jdk/test/whitebox/WhiteBox.java + test/lib/jdk/test/whitebox/code/BlobType.java = test/lib/jdk/test/whitebox/code/CodeBlob.java + test/lib/jdk/test/whitebox/code/Compiler.java = test/lib/jdk/test/whitebox/code/NMethod.java = test/lib/jdk/test/whitebox/cpuinfo/CPUInfo.java + test/lib/jdk/test/whitebox/gc/GC.java = test/lib/jdk/test/whitebox/parser/DiagnosticCommand.java ! test/lib/sun/hotspot/WhiteBox.java ! test/lib/sun/hotspot/code/CodeBlob.java ! test/lib/sun/hotspot/code/NMethod.java ! test/lib/sun/hotspot/cpuinfo/CPUInfo.java Changeset: c8add223 Author: Jesper Wilhelmsson Date: 2021-08-03 01:01:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c8add223a10030e40ccef42e081fd0d8f00e0593 Merge Reviewed-by: mikael ! src/hotspot/share/prims/whitebox.cpp ! test/lib/sun/hotspot/WhiteBox.java ! src/hotspot/share/prims/whitebox.cpp ! test/lib/sun/hotspot/WhiteBox.java Changeset: b217a6ca Author: Albert Mingkun Yang Date: 2021-08-03 11:43:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b217a6ca0f920eddc1d4596ce8c6445423f1d15d 8271609: Misleading message for AbortVMOnVMOperationTimeoutDelay Reviewed-by: dholmes ! src/hotspot/share/runtime/vmThread.cpp Changeset: bdb50cab Author: Xiaowei Lu Committer: Per Liden Date: 2021-08-03 12:23:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bdb50cab79056bb2ac9fe1ba0cf0f237317052da 8270347: ZGC: Adopt release-acquire ordering for forwarding table access Co-authored-by: Hao Tang Reviewed-by: eosterlund, pliden ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: f15d6cbc Author: Coleen Phillimore Date: 2021-08-03 17:20:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f15d6cbcaf191b9718ab51b1e8b72938c0abdd6b 8271506: Add ResourceHashtable support for deleting selected entries Reviewed-by: iklam, stuefe ! src/hotspot/share/utilities/resourceHash.hpp ! test/hotspot/gtest/utilities/test_resourceHash.cpp Changeset: 6594d3a3 Author: Joe Darcy Date: 2021-08-03 18:13:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6594d3a3ef175a71ea34c7698ab96537c761f022 8271711: Remove WorkArounds.isSynthetic Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/WorkArounds.java Changeset: 0199b03e Author: Andy Herrick Date: 2021-08-03 18:51:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0199b03eb3bd9ffe79b5193ff1792144b5c488f1 8271344: Windows product version issue Reviewed-by: asemenyuk, almatvee ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/MsiVersion.java ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources.properties ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_ja.properties ! src/jdk.jpackage/windows/classes/jdk/jpackage/internal/resources/WinResources_zh_CN.properties ! test/jdk/tools/jpackage/junit/jdk/jpackage/internal/PlatformVersionTest.java Changeset: a8408708 Author: Weijun Wang Date: 2021-08-04 00:02:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a8408708b065a877278acc6b007ad6a9baaf2561 8271616: oddPart in MutableBigInteger::mutableModInverse contains info on final result Reviewed-by: bpb, darcy, valeriep ! src/java.base/share/classes/java/math/MutableBigInteger.java Changeset: 43a6ba96 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-04 01:35:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/43a6ba9677551762c1bc1dc2f994dde7d6d9f1a5 8271726: JFR: should use equal() to check event fields in tests Reviewed-by: egahlin ! test/jdk/jdk/jfr/event/diagnostics/TestHeapDump.java Changeset: 3435d299 Author: Calvin Cheung Date: 2021-08-04 01:38:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3435d299f76ada66e7b7cb42d9f0265cf99a30ca 8271003: hs_err improvement: handle CLASSPATH env setting longer than O_BUFLEN Reviewed-by: dholmes, stuefe, iklam, minqi ! src/hotspot/share/runtime/os.cpp + test/hotspot/jtreg/runtime/ErrorHandling/ClassPathEnvVar.java Changeset: d3b40cb6 Author: Igor Ignatyev Date: 2021-08-04 01:49:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d3b40cb68323a1b0efa461b4a415793415a2deef 8271826: mark hotspot runtime/condy tests which ignore external VM flags Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/condy/BadBSMUseTest.java ! test/hotspot/jtreg/runtime/condy/CondyLDCTest.java ! test/hotspot/jtreg/runtime/condy/CondyNewInvokeSpecialTest.java ! test/hotspot/jtreg/runtime/condy/escapeAnalysis/TestEscapeCondy.java ! test/hotspot/jtreg/runtime/condy/staticInit/TestInitException.java Changeset: 659498a0 Author: Igor Ignatyev Date: 2021-08-04 01:59:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/659498a07f5be0feae26c1772a6b4e8ad2dec103 8271829: mark hotspot runtime/Throwable tests which ignore external VM flags Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/Throwable/StackTraceLogging.java ! test/hotspot/jtreg/runtime/Throwable/TestCatchThrowableOOM.java ! test/hotspot/jtreg/runtime/Throwable/TestMaxJavaStackTraceDepth.java Changeset: 7e518f42 Author: David Holmes Date: 2021-08-04 02:08:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7e518f42c9346abdf0c8059b45d3dfef95ed69bb 8269934: RunThese24H.java failed with EXCEPTION_ACCESS_VIOLATION in java_lang_Thread::get_thread_status Reviewed-by: stuefe, dcubed, sspitsyn ! src/hotspot/share/services/threadService.cpp Changeset: 34ba70a7 Author: Igor Ignatyev Date: 2021-08-04 02:19:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/34ba70a71ba414a6d8cfc5c667d556d4d6072793 8269037: jsig/Testjsig.java doesn't have to be restricted to linux only Reviewed-by: mseledtsov, dholmes ! make/test/JtregNativeHotspot.gmk ! test/hotspot/jtreg/runtime/jsig/Testjsig.java Changeset: 68dd8280 Author: Igor Ignatyev Date: 2021-08-04 02:22:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/68dd8280886ede7f5cd8d34811ad0f9ffac440f3 8271224: runtime/EnclosingMethodAttr/EnclMethodAttr.java doesn't check exit code Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/runtime/EnclosingMethodAttr/EnclMethodAttr.java Changeset: 66c653c5 Author: Thomas Stuefe Date: 2021-08-04 04:11:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/66c653c561b3b5e904579af62e23ff94952bca05 8271721: Split gc/g1/TestMixedGCLiveThreshold into separate tests Reviewed-by: tschatzl, rrich ! test/hotspot/jtreg/gc/g1/TestMixedGCLiveThreshold.java Changeset: b48f31d3 Author: Igor Ignatyev Date: 2021-08-04 04:51:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b48f31d381e68a5de0925704bd22ce63d7363c4f 8271743: mark hotspot runtime/jni tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/jni/CalleeSavedRegisters/FPRegs.java ! test/hotspot/jtreg/runtime/jni/checked/TestCheckedReleaseArrayElements.java Changeset: 33ec3a4d Author: Igor Ignatyev Date: 2021-08-04 04:53:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/33ec3a4d95fc81cc60c8a66380947111cb966aa7 8271744: mark hotspot runtime/getSysPackage tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/getSysPackage/GetPackageXbootclasspath.java ! test/hotspot/jtreg/runtime/getSysPackage/GetSysPkgTest.java Changeset: 3d40cac8 Author: Igor Ignatyev Date: 2021-08-04 05:16:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3d40cac8ce3cb087788cdaa04d567eee4a1d8052 8271821: mark hotspot runtime/MinimalVM tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/MinimalVM/CDS.java ! test/hotspot/jtreg/runtime/MinimalVM/CheckJNI.java ! test/hotspot/jtreg/runtime/MinimalVM/Instrumentation.java ! test/hotspot/jtreg/runtime/MinimalVM/JMX.java ! test/hotspot/jtreg/runtime/MinimalVM/JVMTI.java ! test/hotspot/jtreg/runtime/MinimalVM/NMT.java Changeset: 68f78477 Author: Igor Ignatyev Date: 2021-08-04 05:17:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/68f784778ce24a26d768b62b979fd587f131d332 8271825: mark hotspot runtime/LoadClass tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/LoadClass/LoadClassNegative.java ! test/hotspot/jtreg/runtime/LoadClass/LongBCP.java ! test/hotspot/jtreg/runtime/LoadClass/TestResize.java Changeset: e49b7d95 Author: Igor Ignatyev Date: 2021-08-04 05:18:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e49b7d958c1db70c452cb6c47c885b7e6264b822 8271828: mark hotspot runtime/classFileParserBug tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/classFileParserBug/ClassFileParserBug.java ! test/hotspot/jtreg/runtime/classFileParserBug/TestBadPackageWithInterface.java ! test/hotspot/jtreg/runtime/classFileParserBug/TestEmptyBootstrapMethodsAttr.java Changeset: 9e769090 Author: Igor Ignatyev Date: 2021-08-04 05:19:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9e769090a020d58f2488dd77fb0681aa2d3856db 8271824: mark hotspot runtime/CompressedOops tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassPointers.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedClassSpaceSize.java ! test/hotspot/jtreg/runtime/CompressedOops/CompressedKlassPointerAndOops.java ! test/hotspot/jtreg/runtime/CompressedOops/ObjectAlignment.java ! test/hotspot/jtreg/runtime/CompressedOops/UseCompressedOops.java Changeset: 04134fcd Author: Xubo Zhang Committer: David Holmes Date: 2021-08-04 05:43:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/04134fcdaaf058429fc4ab109a98005ddce4636d 8264543: Cross modify fence optimization for x86 Reviewed-by: dholmes, tschatzl, sviswanathan ! src/hotspot/cpu/x86/vm_version_ext_x86.hpp ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/vm_version_x86.hpp ! src/hotspot/os_cpu/bsd_x86/orderAccess_bsd_x86.hpp ! src/hotspot/os_cpu/linux_x86/orderAccess_linux_x86.hpp ! src/hotspot/os_cpu/windows_x86/orderAccess_windows_x86.hpp ! src/hotspot/share/runtime/orderAccess.hpp ! src/hotspot/share/runtime/vm_version.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.amd64/src/jdk/vm/ci/amd64/AMD64.java Changeset: 977b8c4e Author: Jie Fu Date: 2021-08-04 07:25:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/977b8c4e16b02421de8bf78dc60a3866ce25fc1f 8271836: runtime/ErrorHandling/ClassPathEnvVar.java fails with release VMs Reviewed-by: stuefe ! test/hotspot/jtreg/runtime/ErrorHandling/ClassPathEnvVar.java Changeset: efcdcc7f Author: Jayathirth D V Date: 2021-08-04 09:16:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/efcdcc7fb792c77aef1da69b1fcc652b401115f7 8270893: IndexOutOfBoundsException while reading large TIFF file Reviewed-by: prr, serb ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java + test/jdk/javax/imageio/plugins/tiff/LargeTIFFTagTest.java Changeset: 4df1bc4b Author: Prasanta Sadhukhan Date: 2021-08-04 11:38:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4df1bc4bc6ec19f9a5bb0e85ee34fb746011e1fa 6350025: API documentation for JOptionPane using deprecated methods. Reviewed-by: jdv ! src/java.desktop/share/classes/javax/swing/JOptionPane.java Changeset: eec64f55 Author: Thomas Stuefe Date: 2021-08-04 12:19:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/eec64f55870cf51746755d8fa59098a82109e826 8256844: Make NMT late-initializable Reviewed-by: coleenp, zgu ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/os.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/services/memTracker.cpp ! src/hotspot/share/services/memTracker.hpp ! src/hotspot/share/services/nmtCommon.cpp ! src/hotspot/share/services/nmtCommon.hpp + src/hotspot/share/services/nmtPreInit.cpp + src/hotspot/share/services/nmtPreInit.hpp ! src/hotspot/share/services/threadStackTracker.cpp ! src/hotspot/share/services/threadStackTracker.hpp ! src/hotspot/share/services/virtualMemoryTracker.cpp ! src/hotspot/share/services/virtualMemoryTracker.hpp ! src/java.base/share/native/libjli/java.c ! src/java.base/share/native/libjli/jli_util.h + test/hotspot/gtest/nmt/test_nmtpreinit.cpp + test/hotspot/gtest/nmt/test_nmtpreinitmap.cpp ! test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp ! test/hotspot/gtest/runtime/test_os.cpp ! test/hotspot/gtest/runtime/test_virtualMemoryTracker.cpp ! test/hotspot/jtreg/TEST.groups + test/hotspot/jtreg/gtest/NMTGtests.java + test/hotspot/jtreg/runtime/NMT/NMTForOtherLaunchersTest.java + test/hotspot/jtreg/runtime/NMT/NMTInitializationTest.java ! test/jdk/tools/launcher/TestSpecialArgs.java Changeset: 0a27f264 Author: Ivan Walulya Date: 2021-08-04 13:04:39 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a27f264da5a21d581e099573e48485bdeea7790 8265057: G1: Investigate removal of maintenance of two BOT thresholds Reviewed-by: ayang, tschatzl ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp Changeset: 221e4b9c Author: Weijun Wang Date: 2021-08-04 13:37:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/221e4b9c61cd1c9c3f4c037589ba639541532910 8270797: ShortECDSA.java test is not complete Reviewed-by: mullan ! test/jdk/com/sun/org/apache/xml/internal/security/ShortECDSA.java Changeset: 452f7d76 Author: Kim Barrett Date: 2021-08-04 15:04:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/452f7d764fc0112cabf0be944e4233173d63f933 8271217: Fix race between G1PeriodicGCTask checks and GC request Reviewed-by: iwalulya, tschatzl, lkorinth ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp + src/hotspot/share/gc/g1/g1GCCounters.cpp + src/hotspot/share/gc/g1/g1GCCounters.hpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.cpp ! src/hotspot/share/gc/g1/g1PeriodicGCTask.hpp ! src/hotspot/share/gc/g1/g1VMOperations.cpp ! src/hotspot/share/gc/g1/g1VMOperations.hpp Changeset: 9f1edafa Author: Raffaello Giulietti Committer: Brian Burkhalter Date: 2021-08-04 17:16:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9f1edafac4f096977ea6ce075ae7a6b0c2112b7d 8271599: Javadoc of floorDiv() and floorMod() families is inaccurate in some places Reviewed-by: darcy, bpb ! src/java.base/share/classes/java/lang/Math.java ! src/java.base/share/classes/java/lang/StrictMath.java Changeset: 392fcc9d Author: Jatin Bhateja Date: 2021-08-04 17:49:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/392fcc9df7e1547672f727e8fdc8de73ffdfe534 8271589: fatal error with variable shift count integer rotate operation. Reviewed-by: kvn, sviswanathan ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectornode.cpp ! test/hotspot/jtreg/compiler/c2/cr6340864/TestIntVectRotate.java Changeset: 6b55ef3b Author: Sergey Bylokhov Date: 2021-08-04 18:44:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6b55ef3b58ae405c46f440e06b5adb03cec3a500 8271456: Avoid looking up standard charsets in "java.desktop" module Reviewed-by: jdv, azvegint, aivanov ! src/java.desktop/macosx/classes/com/apple/laf/AquaFileView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CDataTransferer.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/bmp/BMPMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFImageMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/gif/GIFWritableImageMetadata.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/COMMarkerSegment.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/jpeg/JFIFMarkerSegment.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageReader.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFIFD.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/tiff/TIFFImageWriter.java ! src/java.desktop/share/classes/com/sun/imageio/plugins/wbmp/WBMPMetadata.java ! src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/Metacity.java ! src/java.desktop/share/classes/com/sun/media/sound/DLSSoundbank.java ! src/java.desktop/share/classes/com/sun/media/sound/RIFFReader.java ! src/java.desktop/share/classes/com/sun/media/sound/RIFFWriter.java ! src/java.desktop/share/classes/com/sun/media/sound/SF2Soundbank.java ! src/java.desktop/share/classes/com/sun/media/sound/SoftTuning.java ! src/java.desktop/share/classes/javax/swing/text/html/HTMLEditorKit.java ! src/java.desktop/share/classes/javax/swing/text/rtf/RTFReader.java ! src/java.desktop/share/classes/sun/awt/FontDescriptor.java ! src/java.desktop/share/classes/sun/awt/datatransfer/DataTransferer.java ! src/java.desktop/share/classes/sun/font/Type1Font.java ! src/java.desktop/share/classes/sun/print/PageableDoc.java ! src/java.desktop/unix/classes/sun/awt/X11/XAtom.java ! src/java.desktop/unix/classes/sun/awt/X11/XNETProtocol.java ! src/java.desktop/unix/classes/sun/awt/X11/XWindowPeer.java ! src/java.desktop/unix/classes/sun/awt/XSettings.java ! src/java.desktop/unix/classes/sun/font/FcFontConfiguration.java ! src/java.desktop/unix/classes/sun/font/NativeFont.java ! src/java.desktop/unix/classes/sun/print/AttributeClass.java ! src/java.desktop/unix/classes/sun/print/IPPPrintService.java ! src/java.desktop/windows/classes/sun/awt/windows/WDataTransferer.java Changeset: 91bbe2fc Author: Joe Darcy Date: 2021-08-04 18:48:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/91bbe2fcbda008a9adc8aa77149a4f2156e1b46b 8271888: build error after JDK-8271599 Reviewed-by: psandoz, bpb ! src/java.base/share/classes/java/lang/Math.java Changeset: cdf3d55c Author: Igor Ignatyev Date: 2021-08-04 19:39:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cdf3d55c82844a3c8817f8cc33e85ca15a5ad930 8271890: mark hotspot runtime/Dictionary tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/Dictionary/CleanProtectionDomain.java ! test/hotspot/jtreg/runtime/Dictionary/ProtectionDomainCacheTest.java Changeset: ff7431ea Author: Igor Ignatyev Date: 2021-08-04 19:40:05 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ff7431eafea8bd763250f929aa35edcaae2fbc58 8271886: mark hotspot runtime/InvocationTests tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/InvocationTests/invocationC1Tests.java ! test/hotspot/jtreg/runtime/InvocationTests/invocationOldCHATests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokeinterfaceTests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokespecialTests.java ! test/hotspot/jtreg/runtime/InvocationTests/invokevirtualTests.java Changeset: 6c17e6de Author: Igor Ignatyev Date: 2021-08-04 19:46:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c17e6deb2ab36c3db8577fb6bb2cf2738b58dd4 8271891: mark hotspot runtime/Safepoint tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/Safepoint/TestAbortOnVMOperationTimeout.java ! test/hotspot/jtreg/runtime/Safepoint/TestAbortVMOnSafepointTimeout.java Changeset: a3b01439 Author: Igor Ignatyev Date: 2021-08-04 19:49:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a3b01439701c1e01f9095a51b4f1048282956623 8271887: mark hotspot runtime/CDSCompressedKPtrs tests which ignore external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/CDSCompressedKPtrs.java ! test/hotspot/jtreg/runtime/CDSCompressedKPtrs/XShareAuto.java Changeset: 359c7084 Author: Igor Ignatyev Date: 2021-08-04 19:50:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/359c7084a1bc3a568c9b815debe3c1786eca9d1e 8271893: mark hotspot runtime/PerfMemDestroy/PerfMemDestroy.java test as ignoring external VM flags Reviewed-by: coleenp ! test/hotspot/jtreg/runtime/PerfMemDestroy/PerfMemDestroy.java Changeset: d62fbea7 Author: Daniel D. Daugherty Date: 2021-08-04 21:06:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d62fbea7b41f150f25ed3a9a037c081cfdc217b6 8271898: disable os.release_multi_mappings_vm on macOS-X64 Reviewed-by: kbarrett ! test/hotspot/gtest/runtime/test_os.cpp Changeset: a007cb1a Author: Yasumasa Suenaga Date: 2021-08-04 23:42:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a007cb1a1dd6a716555031c271cb11f4980813e7 8271863: ProblemList serviceability/sa/TestJmapCore.java on linux-x64 with ZGC Reviewed-by: dcubed ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 181483b9 Author: Erik ?sterlund Date: 2021-08-04 10:28:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/181483b90bcc7d4e44109a14213d4ee2804f7f32 8271064: ZGC several jvm08 perf regressions after JDK-8268372 Reviewed-by: ayang, pliden, tschatzl ! src/hotspot/share/gc/z/zDirector.cpp Changeset: 5f547e8c Author: Daniel D. Daugherty Date: 2021-08-04 16:43:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5f547e8c119e9c0f6a000d2fdc2a693a4e601ba0 8271877: ProblemList jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java in JDK17 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: cebcc07b Author: Daniel D. Daugherty Date: 2021-08-04 19:23:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cebcc07b1b0572e63b420ff86eef78c6aee36393 8271894: ProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK17 Reviewed-by: darcy ! test/jdk/ProblemList.txt Changeset: cd6b54ec Author: Jesper Wilhelmsson Date: 2021-08-05 01:02:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd6b54ec40f1d60fbdb6c8aee1e6ba662daca58c Merge ! test/jdk/ProblemList.txt ! test/jdk/ProblemList.txt Changeset: 7728423f Author: Jesper Wilhelmsson Date: 2021-08-05 01:41:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7728423f8a4cf2b60d9774405b18a28ee498f268 8271895: UnProblemList javax/swing/JComponent/7154030/bug7154030.java in JDK18 Reviewed-by: dholmes ! test/jdk/ProblemList.txt Changeset: 6c8441f0 Author: Jesper Wilhelmsson Date: 2021-08-05 01:42:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6c8441f075b349d95ef26f51e8b9fd473748ac64 8271878: UnProblemList jdk/jfr/event/gc/detailed/TestEvacuationFailedEvent.java in JDK18 Reviewed-by: dholmes ! test/jdk/ProblemList.txt Changeset: 64d18d45 Author: Prasanta Sadhukhan Date: 2021-08-05 04:56:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/64d18d45ef885d5cdd893b7f56236d3f22b4b84c 4819544: SwingSet2 JTable Demo throws NullPointerException Reviewed-by: pbansal, aivanov ! src/demo/share/jfc/SwingSet2/TableDemo.java Changeset: ea9a5952 Author: Yi Yang Date: 2021-08-05 06:39:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ea9a59520de45fe1c2a6706b2a924cbc856a06c6 8270058: Use Objects.check{Index,FromIndexSize} for java.desktop Reviewed-by: psadhukhan, pbansal, jdv ! src/java.desktop/share/classes/com/sun/media/sound/AudioFloatInputStream.java ! src/java.desktop/share/classes/javax/swing/JTabbedPane.java ! test/jdk/java/awt/print/PrinterJob/ImagePrinting/ClippedImages.java ! test/jdk/javax/imageio/AppletResourceTest.java ! test/jdk/javax/imageio/ImageReaderReadAll.java ! test/jdk/javax/imageio/metadata/IIOMetadataFormat/UserPluginMetadataFormatTest.java Changeset: 4abe5311 Author: Richard Reingruber Date: 2021-08-05 07:31:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4abe5311407c68d04fb0babb87fa279e35d5fabc 8271722: [TESTBUG] gc/g1/TestMixedGCLiveThreshold.java can fail if G1 Full GC uses >1 workers Reviewed-by: ayang, tschatzl ! test/hotspot/jtreg/gc/g1/TestMixedGCLiveThreshold.java Changeset: 685fc3c6 Author: Julia Boes Date: 2021-08-05 09:42:16 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/685fc3c677cd0e71ef4443214ae14c7eed355140 8270903: sun.net.httpserver.HttpConnection: Improve toString Reviewed-by: chegar, vtewari ! src/jdk.httpserver/share/classes/sun/net/httpserver/HttpConnection.java Changeset: 18dd4d46 Author: Per Liden Date: 2021-08-05 12:40:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/18dd4d469d120276d05e74607d780f01056f1a8b 8271121: ZGC: stack overflow (segv) when -Xlog:gc+start=debug Reviewed-by: ayang, eosterlund ! src/hotspot/share/gc/z/zStat.cpp Changeset: 55bd52a1 Author: Claes Redestad Date: 2021-08-05 14:46:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/55bd52a14283033d66cd7bf1deadb31c040b09c7 8271840: Add simple Integer.toString microbenchmarks Reviewed-by: shade ! test/micro/org/openjdk/bench/java/lang/Integers.java ! test/micro/org/openjdk/bench/java/lang/Longs.java Changeset: d7fc9e41 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-05 14:55:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d7fc9e4171efa4154951cf353df10f9bacbed7ab 8267840: Improve URLStreamHandler.parseURL() Reviewed-by: dfuchs, redestad ! src/java.base/share/classes/java/net/URLStreamHandler.java Changeset: 7234a433 Author: Daniel D. Daugherty Date: 2021-08-05 14:55:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7234a433f8ba13d8a4b696a77653b441163d2afa 8271953: fix mis-merge in JDK-8271878 Reviewed-by: jwilhelm, ctornqvi ! test/jdk/ProblemList.txt Changeset: e2c5bfe0 Author: Brian Burkhalter Date: 2021-08-05 16:10:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e2c5bfe083adb82c0d99ba3cb05a9d5cdb8a05cc 8271308: (fc) FileChannel.transferTo() transfers no more than Integer.MAX_VALUE bytes in one call Reviewed-by: alanb, vtewari ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/unix/native/libnio/ch/FileChannelImpl.c ! src/java.base/windows/native/libnio/ch/FileChannelImpl.c + test/jdk/java/nio/channels/FileChannel/Transfer2GPlus.java Changeset: 3ab95d19 Author: Igor Ignatyev Date: 2021-08-05 16:32:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3ab95d19174100f440e2274d5b2c3119fb55e9e1 8271905: mark hotspot runtime/Metaspace tests which ignore external VM flags Reviewed-by: stuefe ! test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeEnvVarTest.java ! test/hotspot/jtreg/runtime/Metaspace/MaxMetaspaceSizeTest.java Changeset: cb368802 Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2021-08-05 17:41:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cb368802815c465f8eef7aa930d6cbb6540d0fa8 8270116: Expand ButtonGroupLayoutTraversalTest.java to run in all LaFs, including Aqua on macOS Reviewed-by: psadhukhan, aivanov ! test/jdk/java/awt/Focus/FocusTraversalPolicy/ButtonGroupLayoutTraversal/ButtonGroupLayoutTraversalTest.java Changeset: 62e72adf Author: Patricio Chilano Mateo Date: 2021-08-05 19:16:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/62e72adfa7bcc8e2a70c1346f3051deb2488affc 8271293: Monitor class should use ThreadBlockInVMPreprocess Reviewed-by: dholmes, dcubed ! src/hotspot/share/prims/jvmtiRawMonitor.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/objectMonitor.cpp Changeset: f312f28b Author: Daniel D. Daugherty Date: 2021-08-05 01:00:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f312f28b8b92949cc8da276c255a746f8098e741 8271863: ProblemList serviceability/sa/TestJmapCore.java on linux-x64 with ZGC Backport-of: a007cb1a1dd6a716555031c271cb11f4980813e7 ! test/hotspot/jtreg/ProblemList-zgc.txt Changeset: 90f85ff7 Author: Markus Gr?nlund Date: 2021-08-05 09:13:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/90f85ff70fe6b54ecc08794269422364f2128bfb 8271588: JFR Recorder Thread crashed with SIGSEGV in write_klass Reviewed-by: egahlin ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/traceid/jfrTraceIdEpoch.hpp ! src/hotspot/share/jfr/recorder/stringpool/jfrStringPool.cpp ! src/hotspot/share/jfr/utilities/jfrSignal.hpp Changeset: dfacda48 Author: Jonathan Gibbons Date: 2021-08-05 22:12:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/dfacda488bfbe2e11e8d607a6d08527710286982 8270872: Final nroff manpage update for JDK 17 Reviewed-by: darcy, mr, iris, naoto ! src/java.base/share/man/java.1 ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 ! src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 ! src/jdk.jfr/share/man/jfr.1 ! src/jdk.jlink/share/man/jlink.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jpackage/share/man/jpackage.1 ! src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: 14692d5e Author: Jesper Wilhelmsson Date: 2021-08-06 01:21:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/14692d5ed0652b867fcf28baafa498a9441683ac Merge ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/java.base/share/man/java.1 ! src/hotspot/share/jfr/recorder/checkpoint/jfrCheckpointManager.cpp ! src/hotspot/share/jfr/recorder/checkpoint/types/jfrTypeSet.cpp ! src/java.base/share/man/java.1 Changeset: e38e365c Author: Jaikiran Pai Date: 2021-08-06 01:30:45 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e38e365c70197f7e45d8bdc7d6c2e3c59717369e 8271208: Typo in ModuleDescriptor.read javadoc Reviewed-by: alanb, iris ! src/java.base/share/classes/java/lang/module/ModuleDescriptor.java Changeset: adb0ae56 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-06 02:11:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/adb0ae56ab9efec12526433927c15308902535f7 8261441: JFR: Filename expansion Reviewed-by: jbachorik, egahlin ! src/java.base/share/man/java.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/AbstractDCmd.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdDump.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStart.java ! src/jdk.jfr/share/classes/jdk/jfr/internal/dcmd/DCmdStop.java ! test/jdk/jdk/jfr/jcmd/JcmdHelper.java + test/jdk/jdk/jfr/jcmd/TestFilenameExpansion.java ! test/jdk/jdk/jfr/jcmd/TestJcmdDumpGeneratedFilename.java Changeset: ea02dade Author: David Holmes Date: 2021-08-06 03:49:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ea02dade43409444b7c9f8b5065fded535b64f3f 8272067: Initial nroff manpage generation for JDK 18 Reviewed-by: darcy ! src/java.base/share/man/keytool.1 ! src/java.rmi/share/man/rmiregistry.1 ! src/java.scripting/share/man/jrunscript.1 ! src/jdk.compiler/share/man/javac.1 ! src/jdk.compiler/share/man/serialver.1 ! src/jdk.hotspot.agent/share/man/jhsdb.1 ! src/jdk.jartool/share/man/jar.1 ! src/jdk.jartool/share/man/jarsigner.1 ! src/jdk.javadoc/share/man/javadoc.1 ! src/jdk.jcmd/share/man/jcmd.1 ! src/jdk.jcmd/share/man/jinfo.1 ! src/jdk.jcmd/share/man/jmap.1 ! src/jdk.jcmd/share/man/jps.1 ! src/jdk.jcmd/share/man/jstack.1 ! src/jdk.jcmd/share/man/jstat.1 ! src/jdk.jconsole/share/man/jconsole.1 ! src/jdk.jdeps/share/man/javap.1 ! src/jdk.jdeps/share/man/jdeprscan.1 ! src/jdk.jdeps/share/man/jdeps.1 ! src/jdk.jdi/share/man/jdb.1 ! src/jdk.jfr/share/man/jfr.1 ! src/jdk.jlink/share/man/jlink.1 ! src/jdk.jlink/share/man/jmod.1 ! src/jdk.jpackage/share/man/jpackage.1 ! src/jdk.jshell/share/man/jshell.1 ! src/jdk.jstatd/share/man/jstatd.1 Changeset: e7b6f481 Author: Ioi Lam Date: 2021-08-06 05:58:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e7b6f48182bb541741cb1465cd676d1749a028f8 8265602: -XX:DumpLoadedClassList should support custom loaders Reviewed-by: ccheung, minqi ! src/hotspot/share/cds/archiveBuilder.cpp ! src/hotspot/share/cds/archiveBuilder.hpp ! src/hotspot/share/cds/archiveUtils.cpp + src/hotspot/share/cds/classListWriter.cpp ! src/hotspot/share/cds/classListWriter.hpp ! src/hotspot/share/cds/metaspaceShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.cpp ! src/hotspot/share/classfile/systemDictionaryShared.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java + test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomClassListDump.java ! test/hotspot/jtreg/runtime/cds/appcds/customLoader/CustomLoaderApp.java + test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes/CustomLoadee4WithLambda.java - test/hotspot/jtreg/runtime/cds/appcds/test-classes/ArrayListTest.java + test/hotspot/jtreg/runtime/cds/appcds/test-classes/DumpClassListApp.java Changeset: c2b7face Author: Albert Mingkun Yang Date: 2021-08-06 08:27:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c2b7facea442eda470913546001c9a5e35d18929 8271896: Remove unnecessary top address checks in BOT Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.inline.hpp ! src/hotspot/share/gc/g1/heapRegion.inline.hpp Changeset: b6a19f17 Author: Christoph G?ttschkes Committer: Aleksey Shipilev Date: 2021-08-06 10:23:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b6a19f173bc6c07622633c9d6757d96a95b43398 8271128: InlineIntrinsics support for 32-bit ARM Reviewed-by: shade ! src/hotspot/cpu/arm/c1_globals_arm.hpp ! src/hotspot/cpu/arm/c2_globals_arm.hpp ! src/hotspot/cpu/arm/templateInterpreterGenerator_arm.cpp ! src/hotspot/share/interpreter/templateInterpreterGenerator.hpp Changeset: 4abe5f73 Author: duke Date: 2021-08-06 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4abe5f733e3db5db87a3c8abe0df87977dabe0f1 Automatic merge of jdk:master into master Changeset: b818e9cf Author: duke Date: 2021-08-06 11:00:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b818e9cf12860f6e79612c5513e7cfa0ae3bc101 Automatic merge of master into foreign-memaccess+abi From mcimadamore at openjdk.java.net Fri Aug 6 14:09:22 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 14:09:22 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v7] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: - Fix javadoc for MemoryAccess - Consolidate all access routines inside MemorySegments ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/342d1c82..839a5c19 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=06 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=05-06 Stats: 2195 lines in 43 files changed: 194 ins; 1393 del; 608 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Fri Aug 6 14:22:46 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 14:22:46 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v7] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 14:09:22 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: > > - Fix javadoc for MemoryAccess > - Consolidate all access routines inside MemorySegments I ended up with a pretty drastic rewrite, as I was not too happy with how the code was laid out. After trying out a number of different solutions, I realized that my main beefs were: 1. Operations pertaining to segments were spread into multiple class (MemoryCopy and MemoryAccess) 2. The number of operations offered by MemoryAccess seemed too big (this has been mentioned before - e.g. by index vs. by offset) 3. The role of copyFrom in the new world was not very clear For these reasons I decided to: 1. only keep offset-based accessors in MemoryAccess - this reduces greatly the amount of methods 2. thanks to (1) we can now move MemoryCopy methods in MemoryAccess as well - the idea is that al the methods in MemoryAccess are about reading/writing Java values from/to memory segments (either a single value or in bulk), so I think the move makes a lot of sense 3. I renamed all accessors to use readByte/writeByte (for single access) and readBytes/writeBytes (for bulk access). This helps seeing the various methods as different ways to read/write a segment (the name read/write, especially in copy operation always refer to a segment - this is similar to what the ByteBuffer API already does). 4. I've turned the static copy method in MemorySegment back to instance methods - e.g. back to `copyFrom`. These are the "real" copy primitives, and everything else can be derived from there (of course the static accessors don't really do that, to avoid creation of garbage objects, but that's the spirit). I think this makes the API more compact, more usable and easier to explain. In a followup PR, I also plan to drop most of the allocation methods from SegmentAllocator. I think it would be better to keep SegmentAllocator a neutral abstraction, while at this point in time it still has stuff from NativeScope, in an attempt to ease the native interop use cases. I think jextract is in a better position to help there, and we will do something to counteract this loss. A javadoc of the new MemoryAccess class is available here: http://cr.openjdk.java.net/~mcimadamore/panama/memorycopy_finalize_javadoc/javadoc/jdk/incubator/foreign/MemoryAccess.html ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Fri Aug 6 14:43:15 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 14:43:15 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v8] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision: Switch order of bulk write method parameters (so that segment is always first). ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/839a5c19..5dc0cb3d Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=07 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=06-07 Stats: 113 lines in 2 files changed: 26 ins; 28 del; 59 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mail at smogura.eu Fri Aug 6 15:39:57 2021 From: mail at smogura.eu (=?iso-8859-2?Q?Rados=B3aw_Smogura?=) Date: Fri, 6 Aug 2021 15:39:57 +0000 Subject: Issues with loop unrolling: better pinned node Message-ID: Hi all, I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] bb_issues.png drive.google.com And sample code protected void copyMemory(ByteBuffer in, ByteBuffer out) { var limit = SPECIES.loopBound(in.limit()); for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); } } Kind regards, Rado From paul.sandoz at oracle.com Fri Aug 6 16:04:10 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Fri, 6 Aug 2021 16:04:10 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: References: Message-ID: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> Hi Rado, It?s good you are looking at the IR Out of curiosity, what happens if you turn off bounds checking [*]? Paul. [*] -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: > > Hi all, > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > bb_issues.png > drive.google.com > > > And sample code > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > var limit = SPECIES.loopBound(in.limit()); > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > } > } > > Kind regards, > Rado From psandoz at openjdk.java.net Fri Aug 6 16:24:54 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Fri, 6 Aug 2021 16:24:54 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v8] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 14:43:15 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision: > > Switch order of bulk write method parameters (so that segment is always first). I was not following the whole discussion too closely, so I hope I am not going over old ground, but this is my impression of the latest patch: - I can understand the appeal of consistently using the read/write prefixes, but I think it may be confusing. In our Java APIs these names are commonly used for serialization and input/output streams etc. For memory access it would be more consistent to use set/get for individual access and copy for bulk access, rather than biasing towards whether the memory segment is the src or dst. The location in `MemoryAccess` is fine. Overloading with `copy` is probably fine, rather than identifying in the name whether the array is src or dst. - For the copy methods I would prefer consistency with `System.arraycopy`, where the src occurs first regardless of the type (rather than segment src or dst, and the src flipping argument position). It?s really easy to make stupid mistakes confusing src/dst and I think this could increase such mistakes. - Expanding on the latter point arguably suggests that `MemorySegment.copyFrom` should be changed to `MemorySegment.copyInto` (or just `copy`), so the receiver is the src, and it returns the destination. Then there is the same consistency of arguments as in the other copy methods. However, that would bury the dst segment allocation as an argument rather than as the receiver, but at least i would be able to reason consistently about the src/dst offsets/lengths argument positions. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Fri Aug 6 17:01:10 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 17:01:10 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision: Revert name of accessors in MemoryAccess ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/5dc0cb3d..c547d09f Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=08 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=07-08 Stats: 356 lines in 33 files changed: 28 ins; 26 del; 302 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Fri Aug 6 17:01:12 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 17:01:12 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v8] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 16:21:22 GMT, Paul Sandoz wrote: >> Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision: >> >> Switch order of bulk write method parameters (so that segment is always first). > > I was not following the whole discussion too closely, so I hope I am not going over old ground, but this is my impression of the latest patch: > > - I can understand the appeal of consistently using the read/write prefixes, but I think it may be confusing. In our Java APIs these names are commonly used for serialization and input/output streams etc. For memory access it would be more consistent to use set/get for individual access and copy for bulk access, rather than biasing towards whether the memory segment is the src or dst. The location in `MemoryAccess` is fine. Overloading with `copy` is probably fine, rather than identifying in the name whether the array is src or dst. > > - For the copy methods I would prefer consistency with `System.arraycopy`, where the src occurs first regardless of the type (rather than segment src or dst, and the src flipping argument position). It?s really easy to make stupid mistakes confusing src/dst and I think this could increase such mistakes. > > - Expanding on the latter point arguably suggests that `MemorySegment.copyFrom` should be changed to `MemorySegment.copyInto` (or just `copy`), so the receiver is the src, and it returns the destination. Then there is the same consistency of arguments as in the other copy methods. However, that would bury the dst segment allocation as an argument rather than as the receiver, but at least i would be able to reason consistently about the src/dst offsets/lengths argument positions. following @PaulSandoz comments, I've reverted the names inside MemoryAccess to get/set and copy. Copy methods are now consistent with System::arrayCopy. I have not touched copyFrom - as I think that one deserves some more discussion: I think under the objection there is a feeling that the instance method is worse, readability-wise, than a static method. If that's the case, we should just bite the bullet, drop copyFrom, and use a static MemorySegment::copy. I'm also looking at MemorySegment::toArray as something that looks superseded now that we have better array copy facilities. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From jbhateja at openjdk.java.net Fri Aug 6 17:06:07 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Fri, 6 Aug 2021 17:06:07 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: References: Message-ID: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. - 8270349: Fix for 32-bit build failure. - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. ------------- Changes: https://git.openjdk.java.net/panama-vector/pull/99/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=01 Stats: 3298 lines in 20 files changed: 3146 ins; 44 del; 108 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From vladimir.x.ivanov at oracle.com Fri Aug 6 17:41:13 2021 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Fri, 6 Aug 2021 20:41:13 +0300 Subject: Issues with loop unrolling: better pinned node In-Reply-To: References: Message-ID: <173fbdaf-efb3-4e79-b9ba-e65c68c92ef0@oracle.com> Can you double-check why the Phi is not split through the MemoryMerge nodes [1]? I suspect self-referential nature of the IR shape (it's a memory state inside the loop after all) poses some challenges which aren't evident on the screenshot you made. Best regards, Vladimir Ivanov [1] https://github.com/openjdk/panama-vector/blob/master/src/hotspot/share/opto/cfgnode.cpp#L2187 On 06.08.2021 18:39, Rados?aw Smogura wrote: > Hi all, > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > bb_issues.png > drive.google.com > > > And sample code > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > var limit = SPECIES.loopBound(in.limit()); > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > } > } > > Kind regards, > Rado > From psandoz at openjdk.java.net Fri Aug 6 17:41:40 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Fri, 6 Aug 2021 17:41:40 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:01:10 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision: > > Revert name of accessors in MemoryAccess Re: `MemorySegment.toXArray`, yes good point. I think we could remove these. They are a bit like the `Arrays.copyOf/Range` methods. Not suggesting we such methods. Re: `MemorySegment.copyFrom`, my inclination is to keep the one copy arg method. and move all others to static methods on `MemorySegment` with signatures consistent with `System.arraycopy` (lets keep methods on `MemoryAccess` for accesses with primitives). If we keep the one arg method i would rename it `copy` and flip the dst/src, and returning dst. Now you got me looking at `MemorySegment.fill`! Arguably that is a bulk copy broadcasting a scalar, like `Arrays.fill`. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From jbhateja at openjdk.java.net Fri Aug 6 17:46:59 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Fri, 6 Aug 2021 17:46:59 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. Message-ID: - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 ------------- Commit messages: - 8272100: changing file permissions. - 8272100: VectorAPI: modify existing implementation of masked neg and not operation. Changes: https://git.openjdk.java.net/panama-vector/pull/108/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=108&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8272100 Stats: 20 lines in 5 files changed: 10 ins; 0 del; 10 mod Patch: https://git.openjdk.java.net/panama-vector/pull/108.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/108/head:pull/108 PR: https://git.openjdk.java.net/panama-vector/pull/108 From mcimadamore at openjdk.java.net Fri Aug 6 17:51:46 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 17:51:46 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:38:30 GMT, Paul Sandoz wrote: > Now you got me looking at `MemorySegment.fill`! Arguably that is a bulk copy broadcasting a scalar, like `Arrays.fill`. Yes, it's a memset. > If we keep the one arg method i would rename it `copy` and flip the dst/src, and returning dst. Honestly, `copy` alone sounds too ambiguous when used in instance mode. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mail at smogura.eu Fri Aug 6 17:56:06 2021 From: mail at smogura.eu (=?windows-1250?Q?Rados=B3aw_Smogura?=) Date: Fri, 6 Aug 2021 17:56:06 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> References: , <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> Message-ID: Hi Paul, There's a performance improvement, but. I still can't unroll polluted cases (I cherry-picked loop unrolling). The graph still has few nodes taking buffer limit from phi, and on IR I don't see vectors nodes cascading. make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" JOBS=12 Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 40.472 ? 1.055 ns/op ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 79.251 ? 0.786 ns/op ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 83.627 ? 2.140 ns/op ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 85.561 ? 1.156 ns/op ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm" Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 49.326 ? 0.843 ns/op ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 100.291 ? 1.271 ns/op ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 101.494 ? 1.027 ns/op ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 94.606 ? 1.522 ns/op ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN BR, Rado ________________________________ From: Paul Sandoz Sent: Friday, August 6, 2021 18:04 To: Rados?aw Smogura Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node Hi Rado, It?s good you are looking at the IR Out of curiosity, what happens if you turn off bounds checking [*]? Paul. [*] -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: > > Hi all, > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > bb_issues.png > drive.google.com > > > And sample code > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > var limit = SPECIES.loopBound(in.limit()); > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > } > } > > Kind regards, > Rado From paul.sandoz at oracle.com Fri Aug 6 18:04:52 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Fri, 6 Aug 2021 18:04:52 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> Message-ID: <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> I am confused as to the case under test. In your initial email of this thread were you also referring implicitly to polluted cases? Paul. > On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: > > Hi Paul, > > There's a performance improvement, but. I still can't unroll polluted cases (I cherry-picked loop unrolling). The graph still has few nodes taking buffer limit from phi, and on IR I don't see vectors nodes cascading. > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" JOBS=12 > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 40.472 ? 1.055 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 79.251 ? 0.786 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 83.627 ? 2.140 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 85.561 ? 1.156 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm" > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 49.326 ? 0.843 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 100.291 ? 1.271 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 101.494 ? 1.027 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 94.606 ? 1.522 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > > BR, > Rado > From: Paul Sandoz > Sent: Friday, August 6, 2021 18:04 > To: Rados?aw Smogura > Cc: panama-dev at openjdk.java.net > Subject: Re: Issues with loop unrolling: better pinned node > > Hi Rado, > > It?s good you are looking at the IR > > Out of curiosity, what happens if you turn off bounds checking [*]? > > Paul. > > [*] > -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 > > > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: > > > > Hi all, > > > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > > bb_issues.png > > drive.google.com > > > > > > And sample code > > > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > > var limit = SPECIES.loopBound(in.limit()); > > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > > } > > } > > > > Kind regards, > > Rado From mcimadamore at openjdk.java.net Fri Aug 6 18:06:42 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 18:06:42 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:48:41 GMT, Maurizio Cimadamore wrote: > > Now you got me looking at `MemorySegment.fill`! Arguably that is a bulk copy broadcasting a scalar, like `Arrays.fill`. > > Yes, it's a memset. out of curiosity, I did some experiment: BulkOps.segment_fill avgt 30 60076.605 ? 702.267 ns/op BulkOps.segment_fill_manual avgt 30 44685.159 ? 537.964 ns/op It seems like a manual loop with segments is faster than doing a memset (probably because of unrolling and vectorization). If that's the case, I think there's a strong case to move fill away from `MemorySegment` and into the `MemoryAccess` class. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Fri Aug 6 18:21:40 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Fri, 6 Aug 2021 18:21:40 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: <0Y9x4C7swVmJJNrueJjl4rDA6HuT-PAZK5S0_G0BjE8=.5b15acc5-c439-4a5f-87d1-94c12b70904e@github.com> On Fri, 6 Aug 2021 17:38:30 GMT, Paul Sandoz wrote: > Re: `MemorySegment.toXArray`, yes good point. I think we could remove these. They are a bit like the `Arrays.copyOf/Range` methods. Not suggesting we such methods. I'm less sure about this now - on the one hand these are clearly redundant. On the other hand, there is a symmetry between MemorySegment::ofArray(XYZ[]) and MemorySegment::toXYZArray(). Another option would be to just expose a `toByteArray`, e.g. just expose a basic byte view of the segment (after all a segment is just a bag of bytes), which would be consistent with the decision of only exposing `asByteBuffer` (although it's easier to go from, say, a ByteBuffer to an IntBuffer than it is to go from a byte array to an int array). ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mail at smogura.eu Fri Aug 6 18:22:47 2021 From: mail at smogura.eu (=?windows-1250?Q?Rados=B3aw_Smogura?=) Date: Fri, 6 Aug 2021 18:22:47 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> , <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> Message-ID: Yes, The normal case looks, good. It's all about polluted cases [1] BR, Rado [1] https://github.com/openjdk/panama-vector/pull/109 [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109] (Draft) Perofrmance improvements for polluted cases by rsmogura ? Pull Request #109 ? openjdk/panama-vector Hi all, I would like to submit this piece of work, for byte buffers and polluted cases. It resolves some performance issues related to mem barriers when in scope are both on- and off-heap buffer. T... github.com [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector] Comparing openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? openjdk/panama-vector Panama vector. Contribute to openjdk/panama-vector development by creating an account on GitHub. github.com ________________________________ From: Paul Sandoz Sent: Friday, August 6, 2021 20:04 To: Rados?aw Smogura Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node I am confused as to the case under test. In your initial email of this thread were you also referring implicitly to polluted cases? Paul. > On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: > > Hi Paul, > > There's a performance improvement, but. I still can't unroll polluted cases (I cherry-picked loop unrolling). The graph still has few nodes taking buffer limit from phi, and on IR I don't see vectors nodes cascading. > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" JOBS=12 > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 40.472 ? 1.055 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 79.251 ? 0.786 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 83.627 ? 2.140 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 85.561 ? 1.156 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm" > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 49.326 ? 0.843 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 100.291 ? 1.271 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 101.494 ? 1.027 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 94.606 ? 1.522 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > > BR, > Rado > From: Paul Sandoz > Sent: Friday, August 6, 2021 18:04 > To: Rados?aw Smogura > Cc: panama-dev at openjdk.java.net > Subject: Re: Issues with loop unrolling: better pinned node > > Hi Rado, > > It?s good you are looking at the IR > > Out of curiosity, what happens if you turn off bounds checking [*]? > > Paul. > > [*] > -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 > > > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: > > > > Hi all, > > > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > > bb_issues.png > > drive.google.com > > > > > > And sample code > > > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > > var limit = SPECIES.loopBound(in.limit()); > > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > > } > > } > > > > Kind regards, > > Rado From github.com+7535718+rsmogura at openjdk.java.net Fri Aug 6 18:27:56 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Fri, 6 Aug 2021 18:27:56 GMT Subject: [vectorIntrinsics] RFR: (Draft) Perofrmance improvements for polluted cases Message-ID: Hi all, I would like to submit this piece of work, for byte buffers and polluted cases. It resolves some performance issues related to mem barriers when in scope are both on- and off-heap buffer. This is not the most ideal as I could not connect it with loop unrolling (other PR). However, it's still 3x faster than the normal case. The approach uses subtype check to switch loop over on / off heap kind, and void true nullable base in byte buffer. After Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.arrayCopy 1024 avgt 30 19.647 ? 0.235 ns/op ByteBufferVectorAccess.directBuffers 1024 avgt 30 19.384 ? 0.099 ns/op ByteBufferVectorAccess.heapBuffers 1024 avgt 30 17.020 ? 1.273 ns/op ByteBufferVectorAccess.heapBuffersNotInlined 1024 avgt 30 17.755 ? 1.814 ns/op ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 46.248 ? 0.685 ns/op ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 92.144 ? 2.336 ns/op ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 92.182 ? 3.180 ns/op ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 94.900 ? 2.619 ns/op Before Benchmark (size) Mode Cnt Score Error Units ByteBufferVectorAccess.arrayCopy 1024 avgt 30 14.772 ? 0.115 ns/op ByteBufferVectorAccess.directBuffers 1024 avgt 30 18.967 ? 0.036 ns/op ByteBufferVectorAccess.heapBuffers 1024 avgt 30 14.783 ? 0.128 ns/op ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 109.559 ? 1.164 ns/op ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 219.787 ? 2.055 ns/op ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 218.920 ? 2.123 ns/op ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 219.689 ? 1.874 ns/op ------------- Commit messages: - Perofrmance improvements for polluted cases Changes: https://git.openjdk.java.net/panama-vector/pull/109/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=109&range=00 Stats: 374 lines in 11 files changed: 245 ins; 0 del; 129 mod Patch: https://git.openjdk.java.net/panama-vector/pull/109.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/109/head:pull/109 PR: https://git.openjdk.java.net/panama-vector/pull/109 From mail at smogura.eu Fri Aug 6 18:33:23 2021 From: mail at smogura.eu (=?windows-1250?Q?Rados=B3aw_Smogura?=) Date: Fri, 6 Aug 2021 18:33:23 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: <173fbdaf-efb3-4e79-b9ba-e65c68c92ef0@oracle.com> References: , <173fbdaf-efb3-4e79-b9ba-e65c68c92ef0@oracle.com> Message-ID: Hi Vladimir, So for this case, code checks if phi saw self, and if not zeroes merge width. // This restriction is temporarily necessary to ensure termination: if (!saw_self && adr_type() == TypePtr::BOTTOM) merge_width = 0; Later method MemNode::optimize_memory_chain is called [1], but this one does not operate on wide memory. I opened draft PR with code I test (I use if to split polluted cases so Unsafe will not get null and not-null at same base). And here's a fresh XML with IR [2] Kind regards, Rado [1] https://github.com/openjdk/panama-vector/blob/master/src/hotspot/share/opto/cfgnode.cpp#L2327 [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector] panama-vector/cfgnode.cpp at master ? openjdk/panama-vector Panama vector. Contribute to openjdk/panama-vector development by creating an account on GitHub. github.com [2] https://drive.google.com/file/d/1v8Lfqjc-k22vvA0HbIYdWDbBg3G2ZPcL/view?usp=sharing ________________________________ From: Vladimir Ivanov Sent: Friday, August 6, 2021 19:41 To: Rados?aw Smogura ; panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node Can you double-check why the Phi is not split through the MemoryMerge nodes [1]? I suspect self-referential nature of the IR shape (it's a memory state inside the loop after all) poses some challenges which aren't evident on the screenshot you made. Best regards, Vladimir Ivanov [1] https://github.com/openjdk/panama-vector/blob/master/src/hotspot/share/opto/cfgnode.cpp#L2187 On 06.08.2021 18:39, Rados?aw Smogura wrote: > Hi all, > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > bb_issues.png > drive.google.com > > > And sample code > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > var limit = SPECIES.loopBound(in.limit()); > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > } > } > > Kind regards, > Rado > From psandoz at openjdk.java.net Fri Aug 6 18:46:53 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Fri, 6 Aug 2021 18:46:53 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: <0Y9x4C7swVmJJNrueJjl4rDA6HuT-PAZK5S0_G0BjE8=.5b15acc5-c439-4a5f-87d1-94c12b70904e@github.com> References: <0Y9x4C7swVmJJNrueJjl4rDA6HuT-PAZK5S0_G0BjE8=.5b15acc5-c439-4a5f-87d1-94c12b70904e@github.com> Message-ID: On Fri, 6 Aug 2021 18:18:35 GMT, Maurizio Cimadamore wrote: > > Re: `MemorySegment.toXArray`, yes good point. I think we could remove these. They are a bit like the `Arrays.copyOf/Range` methods. Not suggesting we such methods. > > I'm less sure about this now - on the one hand these are clearly redundant. On the other hand, there is a symmetry between MemorySegment::ofArray(XYZ[]) and MemorySegment::toXYZArray(). > Although a key difference is `ofArray` is a factory method creating a view over the memory region covered by the primitive array, not a copy, so i would argue its not quite symmetric. Might as well do `intArray..clone()` rather than `MemorySegment.ofArray(intArray).toIntArray()` > Another option would be to just expose a `toByteArray`, e.g. just expose a basic byte view of the segment (after all a segment is just a bag of bytes), which would be consistent with the decision of only exposing `asByteBuffer` (although it's easier to go from, say, a ByteBuffer to an IntBuffer than it is to go from a byte array to an int array). Yeah, i think that would simplify, giving us choices to expand copying utilities in `MemoryAccess` if need be. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mail at smogura.eu Fri Aug 6 20:43:54 2021 From: mail at smogura.eu (=?windows-1250?Q?Rados=B3aw_Smogura?=) Date: Fri, 6 Aug 2021 20:43:54 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> , <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com>, Message-ID: Hi all, Now when I checked it again. it works as expected, and it's the same code. In draft code I check if the buffer is direct by using type checking to unswitch loop, as unswitching over ByteBuffer.hb did not work (the graph was quite similar). However, I thought that this unswitch actually helped to build correct loops, and any kind of improvement around it would be rather for the purpose of better-looking code. But it looks like that sometimes (but only sometimes) loop still can not be correctly built, or maybe the full optimization kicks in very, very late. Kind regards, Rado ________________________________ From: panama-dev on behalf of Rados?aw Smogura Sent: Friday, August 6, 2021 20:22 To: Paul Sandoz Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node Yes, The normal case looks, good. It's all about polluted cases [1] BR, Rado [1] https://github.com/openjdk/panama-vector/pull/109 [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109] (Draft) Perofrmance improvements for polluted cases by rsmogura ? Pull Request #109 ? openjdk/panama-vector Hi all, I would like to submit this piece of work, for byte buffers and polluted cases. It resolves some performance issues related to mem barriers when in scope are both on- and off-heap buffer. T... github.com [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector] Comparing openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? openjdk/panama-vector Panama vector. Contribute to openjdk/panama-vector development by creating an account on GitHub. github.com ________________________________ From: Paul Sandoz Sent: Friday, August 6, 2021 20:04 To: Rados?aw Smogura Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node I am confused as to the case under test. In your initial email of this thread were you also referring implicitly to polluted cases? Paul. > On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: > > Hi Paul, > > There's a performance improvement, but. I still can't unroll polluted cases (I cherry-picked loop unrolling). The graph still has few nodes taking buffer limit from phi, and on IR I don't see vectors nodes cascading. > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" JOBS=12 > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 40.472 ? 1.055 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 79.251 ? 0.786 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 83.627 ? 2.140 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 85.561 ? 1.156 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm" > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 49.326 ? 0.843 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 100.291 ? 1.271 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 101.494 ? 1.027 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 94.606 ? 1.522 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > > BR, > Rado > From: Paul Sandoz > Sent: Friday, August 6, 2021 18:04 > To: Rados?aw Smogura > Cc: panama-dev at openjdk.java.net > Subject: Re: Issues with loop unrolling: better pinned node > > Hi Rado, > > It?s good you are looking at the IR > > Out of curiosity, what happens if you turn off bounds checking [*]? > > Paul. > > [*] > -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 > > > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: > > > > Hi all, > > > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > > bb_issues.png > > drive.google.com > > > > > > And sample code > > > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > > var limit = SPECIES.loopBound(in.limit()); > > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > > } > > } > > > > Kind regards, > > Rado From psandoz at openjdk.java.net Fri Aug 6 21:24:51 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Fri, 6 Aug 2021 21:24:51 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:36:26 GMT, Jatin Bhateja wrote: > - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. > - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template line 611: > 609: return lanewise(XOR, broadcast(-1), m); > 610: } else if (op == NEG) { > 611: return lanewise(NOT, m).lanewise(ADD, broadcast(1), m); Why not stick to the same pattern is the non-masked `lanewiseTemplate` method? Suggestion: if (op == NOT) { return broadcast(-1).lanewise(XOR, this, m); } else if (op == NEG) { return broadcast(0).lanewise(SUB, this, m); ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From psandoz at openjdk.java.net Fri Aug 6 21:32:41 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Fri, 6 Aug 2021 21:32:41 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 01:20:30 GMT, Xiaohong Gong wrote: > This patch adds the predicate support for the following masked vector load/store operations: > - fromByteArray/fromByteBuffer > - intoByteArray/intoByteBuffer > > The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. > > Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. > > Note that this patch doesn't contain any backend changes. Java changes look good. ------------- Marked as reviewed by psandoz (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/107 From uschindler at openjdk.java.net Fri Aug 6 22:14:39 2021 From: uschindler at openjdk.java.net (Uwe Schindler) Date: Fri, 6 Aug 2021 22:14:39 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:01:10 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has refreshed the contents of this pull request, and previous commits have been removed. The incremental views will show differences compared to the previous content of the PR. The pull request contains one new commit since the last revision: > > Revert name of accessors in MemoryAccess Hi, I tested the latest variant with Lucene. Performance seems OK, heap profile is also fine (identical to our old bytebuffer code, so no extra allocations by panama). Code: https://github.com/uschindler/lucene/blob/7ed6da79239fa8f860ad58bf5568d0001927b6a2/lucene/core/src/java/org/apache/lucene/store/MemorySegmentIndexInput.java#L148-L211 I am fine with both APIs in memory access, although I liked the first variant using write/read a bit more. But I have seen the same problems with order of parameters. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From xgong at openjdk.java.net Mon Aug 9 01:17:55 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 01:17:55 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Fri, 6 Aug 2021 21:29:52 GMT, Paul Sandoz wrote: >> This patch adds the predicate support for the following masked vector load/store operations: >> - fromByteArray/fromByteBuffer >> - intoByteArray/intoByteBuffer >> >> The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. >> >> Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. >> >> Note that this patch doesn't contain any backend changes. > > Java changes look good. Thanks for the review @PaulSandoz ! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From xgong at openjdk.java.net Mon Aug 9 01:17:55 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 01:17:55 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 01:20:30 GMT, Xiaohong Gong wrote: > This patch adds the predicate support for the following masked vector load/store operations: > - fromByteArray/fromByteBuffer > - intoByteArray/intoByteBuffer > > The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. > > Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. > > Note that this patch doesn't contain any backend changes. @jatin-bhateja , could you please help to take a look at this patch especially the compiler part? Thanks so much! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From xgong at openjdk.java.net Mon Aug 9 02:16:33 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 02:16:33 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v2] In-Reply-To: References: Message-ID: > This is the initial SVE backend implementations for all masking operations with the SVE predicate feature. It contains: > - SVE codegen for vector operations under a mask controlling > - SVE codegen for vector mask operations with predicate instructions > > The size of libjvm.so increases about 1.86% after adding all the backend changes. And the performance gain is about 3.7% ~ 7.88x for some masking operations of IntMaxVector with SVE 512 bits: > > Benchmark Gain > IntMaxVector.ABSMasked 1.198 > IntMaxVector.ADDMasked 1.040 > IntMaxVector.ADDMaskedLanes 1.068 > IntMaxVector.ANDMasked 1.117 > IntMaxVector.ANDMaskedLanes 1.101 > IntMaxVector.AND_NOTMasked 1.037 > IntMaxVector.ASHRMasked 1.286 > IntMaxVector.ASHRMaskedShift 1.096 > IntMaxVector.BITWISE_BLENDMasked 1.085 > IntMaxVector.LSHRMasked 1.405 > IntMaxVector.LSHRMaskedShift 1.092 > IntMaxVector.MAXMaskedLanes 1.079 > IntMaxVector.MINMaskedLanes 1.079 > IntMaxVector.MULMasked 1.370 > IntMaxVector.ORMasked 1.038 > IntMaxVector.ORMaskedLanes 1.103 > IntMaxVector.SUBMasked 1.043 > IntMaxVector.XORMasked 1.151 > IntMaxVector.XORMaskedLanes 1.103 > IntMaxVector.allTrue 1.157 > IntMaxVector.anyTrue 1.158 > IntMaxVector.gatherMasked 7.880 > IntMaxVector.scatterMasked 4.732 Xiaohong Gong 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 three additional commits since the last revision: - Add the implementation for masked compare and mask reinterpretation when esize is different - Merge panama-vector:vectorIntrinsics+mask into JDK-8271313 - 8271313: AArch64: SVE backend support for masking operations with predicate feature ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/105/files - new: https://git.openjdk.java.net/panama-vector/pull/105/files/bfb36151..0f56d0a6 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=105&range=01 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=105&range=00-01 Stats: 612 lines in 43 files changed: 471 ins; 98 del; 43 mod Patch: https://git.openjdk.java.net/panama-vector/pull/105.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/105/head:pull/105 PR: https://git.openjdk.java.net/panama-vector/pull/105 From njian at openjdk.java.net Mon Aug 9 06:15:53 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Mon, 9 Aug 2021 06:15:53 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v2] In-Reply-To: References: Message-ID: <0ZnuxwbV34hSgTz0gq3AHdl2AnZ-xsnErmc9PBEKejo=.a0d8b135-e065-472e-821e-1aa41a32ad09@github.com> On Mon, 9 Aug 2021 02:16:33 GMT, Xiaohong Gong wrote: >> This is the initial SVE backend implementations for all masking operations with the SVE predicate feature. It contains: >> - SVE codegen for vector operations under a mask controlling >> - SVE codegen for vector mask operations with predicate instructions >> >> The size of libjvm.so increases about 1.86% after adding all the backend changes. And the performance gain is about 3.7% ~ 7.88x for some masking operations of IntMaxVector with SVE 512 bits: >> >> Benchmark Gain >> IntMaxVector.ABSMasked 1.198 >> IntMaxVector.ADDMasked 1.040 >> IntMaxVector.ADDMaskedLanes 1.068 >> IntMaxVector.ANDMasked 1.117 >> IntMaxVector.ANDMaskedLanes 1.101 >> IntMaxVector.AND_NOTMasked 1.037 >> IntMaxVector.ASHRMasked 1.286 >> IntMaxVector.ASHRMaskedShift 1.096 >> IntMaxVector.BITWISE_BLENDMasked 1.085 >> IntMaxVector.LSHRMasked 1.405 >> IntMaxVector.LSHRMaskedShift 1.092 >> IntMaxVector.MAXMaskedLanes 1.079 >> IntMaxVector.MINMaskedLanes 1.079 >> IntMaxVector.MULMasked 1.370 >> IntMaxVector.ORMasked 1.038 >> IntMaxVector.ORMaskedLanes 1.103 >> IntMaxVector.SUBMasked 1.043 >> IntMaxVector.XORMasked 1.151 >> IntMaxVector.XORMaskedLanes 1.103 >> IntMaxVector.allTrue 1.157 >> IntMaxVector.anyTrue 1.158 >> IntMaxVector.gatherMasked 7.880 >> IntMaxVector.scatterMasked 4.732 > > Xiaohong Gong 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 three additional commits since the last revision: > > - Add the implementation for masked compare and mask reinterpretation when esize is different > - Merge panama-vector:vectorIntrinsics+mask into JDK-8271313 > - 8271313: AArch64: SVE backend support for masking operations with predicate feature src/hotspot/cpu/aarch64/aarch64_sve.ad line 173: > 171: // By default, we only support vector operations with no less than 8 bytes and 2 elements. > 172: // TODO: set min vector size to 8 and have a full test. > 173: return 16 <= length_in_bytes && length_in_bytes <= MaxVectorSize && vlen >= 2; I think we should fix this TODO in this patch. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/105 From xgong at openjdk.java.net Mon Aug 9 07:10:53 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 07:10:53 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 21:22:05 GMT, Paul Sandoz wrote: >> - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. >> - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 > > src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template line 611: > >> 609: return lanewise(XOR, broadcast(-1), m); >> 610: } else if (op == NEG) { >> 611: return lanewise(NOT, m).lanewise(ADD, broadcast(1), m); > > Why not stick to the same pattern is the non-masked `lanewiseTemplate` method? > Suggestion: > > if (op == NOT) { > return broadcast(-1).lanewise(XOR, this, m); > } else if (op == NEG) { > return broadcast(0).lanewise(SUB, this, m); Seems the result is not equal to `this` vector for the non-active lanes (false lane for `m`)? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From xgong at openjdk.java.net Mon Aug 9 07:15:46 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 07:15:46 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:36:26 GMT, Jatin Bhateja wrote: > - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. > - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java line 596: > 594: return lanewise(XOR, broadcast(-1), m); > 595: } else if (op == NEG) { > 596: return lanewise(NOT, m).lanewise(ADD, broadcast(1), m); Why not directly intrinsify `NEG` as an unary op and generate the "NegVI" node in compiler? SVE supports the masked neg instruction. How about x86 AVX-512? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From xgong at openjdk.java.net Mon Aug 9 07:30:09 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 07:30:09 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v3] In-Reply-To: References: Message-ID: > This is the initial SVE backend implementations for all masking operations with the SVE predicate feature. It contains: > - SVE codegen for vector operations under a mask controlling > - SVE codegen for vector mask operations with predicate instructions > > The size of libjvm.so increases about 1.86% after adding all the backend changes. And the performance gain is about 3.7% ~ 7.88x for some masking operations of IntMaxVector with SVE 512 bits: > > Benchmark Gain > IntMaxVector.ABSMasked 1.198 > IntMaxVector.ADDMasked 1.040 > IntMaxVector.ADDMaskedLanes 1.068 > IntMaxVector.ANDMasked 1.117 > IntMaxVector.ANDMaskedLanes 1.101 > IntMaxVector.AND_NOTMasked 1.037 > IntMaxVector.ASHRMasked 1.286 > IntMaxVector.ASHRMaskedShift 1.096 > IntMaxVector.BITWISE_BLENDMasked 1.085 > IntMaxVector.LSHRMasked 1.405 > IntMaxVector.LSHRMaskedShift 1.092 > IntMaxVector.MAXMaskedLanes 1.079 > IntMaxVector.MINMaskedLanes 1.079 > IntMaxVector.MULMasked 1.370 > IntMaxVector.ORMasked 1.038 > IntMaxVector.ORMaskedLanes 1.103 > IntMaxVector.SUBMasked 1.043 > IntMaxVector.XORMasked 1.151 > IntMaxVector.XORMaskedLanes 1.103 > IntMaxVector.allTrue 1.157 > IntMaxVector.anyTrue 1.158 > IntMaxVector.gatherMasked 7.880 > IntMaxVector.scatterMasked 4.732 Xiaohong Gong has updated the pull request incrementally with one additional commit since the last revision: Fix 64 bits vector tests fail issue ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/105/files - new: https://git.openjdk.java.net/panama-vector/pull/105/files/0f56d0a6..cdf6fc6c Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=105&range=02 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=105&range=01-02 Stats: 7 lines in 3 files changed: 2 ins; 2 del; 3 mod Patch: https://git.openjdk.java.net/panama-vector/pull/105.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/105/head:pull/105 PR: https://git.openjdk.java.net/panama-vector/pull/105 From xgong at openjdk.java.net Mon Aug 9 07:30:15 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 9 Aug 2021 07:30:15 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v2] In-Reply-To: <0ZnuxwbV34hSgTz0gq3AHdl2AnZ-xsnErmc9PBEKejo=.a0d8b135-e065-472e-821e-1aa41a32ad09@github.com> References: <0ZnuxwbV34hSgTz0gq3AHdl2AnZ-xsnErmc9PBEKejo=.a0d8b135-e065-472e-821e-1aa41a32ad09@github.com> Message-ID: On Mon, 9 Aug 2021 06:12:04 GMT, Ningsheng Jian wrote: >> Xiaohong Gong 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 three additional commits since the last revision: >> >> - Add the implementation for masked compare and mask reinterpretation when esize is different >> - Merge panama-vector:vectorIntrinsics+mask into JDK-8271313 >> - 8271313: AArch64: SVE backend support for masking operations with predicate feature > > src/hotspot/cpu/aarch64/aarch64_sve.ad line 173: > >> 171: // By default, we only support vector operations with no less than 8 bytes and 2 elements. >> 172: // TODO: set min vector size to 8 and have a full test. >> 173: return 16 <= length_in_bytes && length_in_bytes <= MaxVectorSize && vlen >= 2; > > I think we should fix this TODO in this patch. Fixed in this patch. Thanks for the advice! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/105 From mcimadamore at openjdk.java.net Mon Aug 9 10:47:41 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Mon, 9 Aug 2021 10:47:41 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v10] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision: Leave only one copyFrom method (as in Java 17). Add back remaining copy method as statics. ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/c547d09f..b07f2b9b Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=09 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=08-09 Stats: 210 lines in 10 files changed: 106 ins; 78 del; 26 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Mon Aug 9 10:52:51 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Mon, 9 Aug 2021 10:52:51 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v10] In-Reply-To: References: Message-ID: <7SxOkjdpDNoMwxn_QsHYrEt8yPexYxhrg83pjpJcWk4=.cfa2a325-73bf-4f61-a81b-9928e8f3b6c5@github.com> On Mon, 9 Aug 2021 10:47:41 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision: > > Leave only one copyFrom method (as in Java 17). > Add back remaining copy method as statics. In the end, I've decided to: * only leave one `copyFrom` method taking a segment - this is a version that is friendly with slicing * leave the toXYZArray - again these methods are friendly with slicing * add back remaining segment copy method as statics, as I think the instance declaration makes order of argument harder to parse, and using System::arrayCopy-like parameter order is cleaner for more complex copies. I believe this strikes a good balance. Copy operations are common enough that some special casing in the API is required - even though that comes at a slight cost in terms of API uniformity. I also decided to leave `fill` where it is - while in some cases I'm able to see better performances with a straight loop and dereference, performance seem to be more fragile - especially as, in the general case, we have to take into account segment sizes that exceed `Integer.MAX_VALUE`. Javadoc updated inline here: http://cr.openjdk.java.net/~mcimadamore/panama/memorycopy_finalize_javadoc/javadoc/jdk/incubator/foreign/package-summary.html ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From jbhateja at openjdk.java.net Mon Aug 9 11:37:43 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 9 Aug 2021 11:37:43 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: <5t7pAFNWvLYgCLTW97VbdrIKV_HFoI4FbwgaMV7NwYc=.2d832893-f0e7-4a59-9757-9c52df407f12@github.com> On Mon, 9 Aug 2021 07:12:33 GMT, Xiaohong Gong wrote: >> - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. >> - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 > > src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java line 596: > >> 594: return lanewise(XOR, broadcast(-1), m); >> 595: } else if (op == NEG) { >> 596: return lanewise(NOT, m).lanewise(ADD, broadcast(1), m); > > Why not directly intrinsify `NEG` as an unary op and generate the "NegVI" node in compiler? SVE supports the masked neg instruction. How about x86 AVX-512? For targets which do not support direct vector NEG, logic will need to dismantled into vector NOT + ADD. Other approach was to emit vector multiplication with -1. But it will be costly for sub-word types (byte/word). I think we can take any approach, keep this java change as its and add compiler transform which folds the logic into NegVI during XOR idealization since it will be specific for one target (SVE) currently. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From jbhateja at openjdk.java.net Mon Aug 9 11:37:44 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 9 Aug 2021 11:37:44 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: <8GxsMINm52nudmFoxsHE-EhQZpaw8kPer513Wq8KjS0=.44bb1bdf-7621-4121-9ac0-903a31059a80@github.com> On Mon, 9 Aug 2021 07:07:34 GMT, Xiaohong Gong wrote: >> src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template line 611: >> >>> 609: return lanewise(XOR, broadcast(-1), m); >>> 610: } else if (op == NEG) { >>> 611: return lanewise(NOT, m).lanewise(ADD, broadcast(1), m); >> >> Why not stick to the same pattern is the non-masked `lanewiseTemplate` method? >> Suggestion: >> >> if (op == NOT) { >> return broadcast(-1).lanewise(XOR, this, m); >> } else if (op == NEG) { >> return broadcast(0).lanewise(SUB, this, m); > > Seems the result is not equal to `this` vector for the non-active lanes (false lane for `m`)? Yes, result will not be same since broadcasted zero vector is first operand. We need to select the lanes of 'this' vector when corresponding mask bit is false. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From psandoz at openjdk.java.net Mon Aug 9 16:24:43 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Mon, 9 Aug 2021 16:24:43 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: <8GxsMINm52nudmFoxsHE-EhQZpaw8kPer513Wq8KjS0=.44bb1bdf-7621-4121-9ac0-903a31059a80@github.com> References: <8GxsMINm52nudmFoxsHE-EhQZpaw8kPer513Wq8KjS0=.44bb1bdf-7621-4121-9ac0-903a31059a80@github.com> Message-ID: On Mon, 9 Aug 2021 11:34:55 GMT, Jatin Bhateja wrote: >> Seems the result is not equal to `this` vector for the non-active lanes (false lane for `m`)? > > Yes, result will not be same since broadcasted zero vector is first operand. We need to select the lanes of 'this' vector when corresponding mask bit is false. Doh! Can you place a comment the NOT/ADD expression? e.g. // Cannot perform broadcast(0).lanewise(SUB, this, m) // since we need to retain unselected lanes in this vector ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From mcimadamore at openjdk.java.net Mon Aug 9 16:26:33 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Mon, 9 Aug 2021 16:26:33 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v11] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: - Consolidate arrays functions to take Object (instead of using overloads) Simplify tests - Drop toXYZArray methods (but toByteArray) ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/b07f2b9b..f3f52e5b Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=10 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=09-10 Stats: 1091 lines in 9 files changed: 177 ins; 787 del; 127 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Mon Aug 9 16:36:19 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Mon, 9 Aug 2021 16:36:19 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v12] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: - Minor javadoc tweak - Fix whitespaces ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/f3f52e5b..f5565279 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=11 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=10-11 Stats: 2 lines in 2 files changed: 0 ins; 0 del; 2 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Mon Aug 9 16:36:22 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Mon, 9 Aug 2021 16:36:22 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v11] In-Reply-To: References: Message-ID: On Mon, 9 Aug 2021 16:26:33 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: > > - Consolidate arrays functions to take Object (instead of using overloads) > Simplify tests > - Drop toXYZArray methods (but toByteArray) Another update: I decided to remove toXYZArray methods (as discussed last week). And I have also consolidated the various primitive-accepting routines such as MemorySegment::ofArray and MemoryAccess::copy to work with `Object` instead of having multiple unrelated overloads. This was suggested by John some time ago - and I raised some performance concerns. I have now verified that the `Object`-accepting versions of the methods are just as fast, regardless of whether code is inlined or not. They are also easier to work with when the code doesn't know the type of the array it's working with, so these changes led to biggie simplifications in the memory copy tests. A javadoc for this iteration is here: http://cr.openjdk.java.net/~mcimadamore/panama/memorycopy_finalize_javadoc_v2/javadoc/jdk/incubator/foreign/package-summary.html (I put it in a different location so that it can be compared with the previous one). It would be nice if @uschindler could test this iteration (sorry for the back and forth!), as this change might have a non trivial impact on performances. If things regress, we can go back to the previous iteration (but in my benchmarks I didn't see evidence of regression). As John pointed out, the reason I like this version more is that it does without primitive overloads, which I think will look rather stale once Valhalla is around. That is, `MemorySegment` is Valhalla-ready as is - perhaps some adjustments will be required on `MemoryAccess` - but since that's a bag of static methods, it seems less problematic. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Mon Aug 9 17:15:22 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Mon, 9 Aug 2021 17:15:22 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v13] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with one additional commit since the last revision: Remove redundant MemorySegment::copy overload Fix javadoc ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/f5565279..5c9b3664 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=12 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=11-12 Stats: 38 lines in 3 files changed: 0 ins; 33 del; 5 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From sviswanathan at openjdk.java.net Mon Aug 9 23:33:57 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Mon, 9 Aug 2021 23:33:57 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: On Fri, 6 Aug 2021 17:06:07 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: > > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. src/hotspot/cpu/x86/x86.ad line 8610: > 8608: match(Set dst (AddVL (Binary dst src2) mask)); > 8609: match(Set dst (AddVF (Binary dst src2) mask)); > 8610: match(Set dst (AddVD (Binary dst src2) mask)); Could we add the match rules for sub, and, or, xor, mul, div, min, max, rearrange here? The ins_encode part it the same for all of these. src/hotspot/cpu/x86/x86.ad line 8629: > 8627: match(Set dst (AddVL (Binary dst src2) mask)); > 8628: match(Set dst (AddVF (Binary dst src2) mask)); > 8629: match(Set dst (AddVD (Binary dst src2) mask)); Could we add the match rules for sub, and, or, xor, mul, div, min, max, rearrange here? The ins_encode part it the same for all of these. src/hotspot/cpu/x86/x86.ad line 8833: > 8831: match(Set dst (LShiftVS (Binary dst src2) mask)); > 8832: match(Set dst (LShiftVI (Binary dst src2) mask)); > 8833: match(Set dst (LShiftVL (Binary dst src2) mask)); Could we add the match rules for RShift, URShift here? The ins_encode part it the same for all of these. src/hotspot/cpu/x86/x86.ad line 8850: > 8848: match(Set dst (LShiftVS (Binary dst src2) mask)); > 8849: match(Set dst (LShiftVI (Binary dst src2) mask)); > 8850: match(Set dst (LShiftVL (Binary dst src2) mask)); Could we add the match rules for RShift, URShift here? The ins_encode part it the same for all of these. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From njian at openjdk.java.net Tue Aug 10 03:48:47 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Tue, 10 Aug 2021 03:48:47 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v3] In-Reply-To: References: Message-ID: On Mon, 9 Aug 2021 07:30:09 GMT, Xiaohong Gong wrote: >> This is the initial SVE backend implementations for all masking operations with the SVE predicate feature. It contains: >> - SVE codegen for vector operations under a mask controlling >> - SVE codegen for vector mask operations with predicate instructions >> >> The size of libjvm.so increases about 1.86% after adding all the backend changes. And the performance gain is about 3.7% ~ 7.88x for some masking operations of IntMaxVector with SVE 512 bits: >> >> Benchmark Gain >> IntMaxVector.ABSMasked 1.198 >> IntMaxVector.ADDMasked 1.040 >> IntMaxVector.ADDMaskedLanes 1.068 >> IntMaxVector.ANDMasked 1.117 >> IntMaxVector.ANDMaskedLanes 1.101 >> IntMaxVector.AND_NOTMasked 1.037 >> IntMaxVector.ASHRMasked 1.286 >> IntMaxVector.ASHRMaskedShift 1.096 >> IntMaxVector.BITWISE_BLENDMasked 1.085 >> IntMaxVector.LSHRMasked 1.405 >> IntMaxVector.LSHRMaskedShift 1.092 >> IntMaxVector.MAXMaskedLanes 1.079 >> IntMaxVector.MINMaskedLanes 1.079 >> IntMaxVector.MULMasked 1.370 >> IntMaxVector.ORMasked 1.038 >> IntMaxVector.ORMaskedLanes 1.103 >> IntMaxVector.SUBMasked 1.043 >> IntMaxVector.XORMasked 1.151 >> IntMaxVector.XORMaskedLanes 1.103 >> IntMaxVector.allTrue 1.157 >> IntMaxVector.anyTrue 1.158 >> IntMaxVector.gatherMasked 7.880 >> IntMaxVector.scatterMasked 4.732 > > Xiaohong Gong has updated the pull request incrementally with one additional commit since the last revision: > > Fix 64 bits vector tests fail issue LGTM ------------- Marked as reviewed by njian (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/105 From mcimadamore at openjdk.java.net Tue Aug 10 09:32:09 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Tue, 10 Aug 2021 09:32:09 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v14] In-Reply-To: References: Message-ID: > This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. > > The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. > > I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). > > You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. > > I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: - Tweak micro benchmarks - Improve performance of generic copy methods ------------- Changes: - all: https://git.openjdk.java.net/panama-foreign/pull/568/files - new: https://git.openjdk.java.net/panama-foreign/pull/568/files/5c9b3664..a94eda93 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=13 - incr: https://webrevs.openjdk.java.net/?repo=panama-foreign&pr=568&range=12-13 Stats: 90 lines in 2 files changed: 69 ins; 3 del; 18 mod Patch: https://git.openjdk.java.net/panama-foreign/pull/568.diff Fetch: git fetch https://git.openjdk.java.net/panama-foreign pull/568/head:pull/568 PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Tue Aug 10 09:35:57 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Tue, 10 Aug 2021 09:35:57 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v14] In-Reply-To: References: Message-ID: On Tue, 10 Aug 2021 09:32:09 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: > > - Tweak micro benchmarks > - Improve performance of generic copy methods While the latest API still looks good - it occurred to me that if we want to do anything in MemoryAccess::copy which e.g. for small copy sizes bypasses the bulk copy and just does a for loop, having all the copy overloads merged into one could be problematic (because of pollution). That said, the threshold for switching copy mechanism in the ByteBuffer API is set at 6 bytes (!!) - which is very low (e.g. 1.5 ints). So I'm not sure how much that logic is really needed (especially since now `Unsafe.memoryCopy` is a VM intrinsic). That said, if, one day, we'd like to rewrite those routines in Java, using memory access API + vector API, using an opaque object carrier can definitively be an issue (the vector API also likes to be sharp in its carrier type). ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From github.com+7535718+rsmogura at openjdk.java.net Tue Aug 10 19:20:45 2021 From: github.com+7535718+rsmogura at openjdk.java.net (Radoslaw Smogura) Date: Tue, 10 Aug 2021 19:20:45 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v14] In-Reply-To: References: Message-ID: On Tue, 10 Aug 2021 09:32:46 GMT, Maurizio Cimadamore wrote: > That said, if, one day, we'd like to rewrite those routines in Java, using memory access API + vector API, using an opaque object carrier can definitively be an issue (the vector API also likes to be sharp in its carrier type). I think, It?s more about checking off-/on- heap than having just concrete object class. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From psandoz at openjdk.java.net Tue Aug 10 20:00:53 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Tue, 10 Aug 2021 20:00:53 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v14] In-Reply-To: References: Message-ID: On Tue, 10 Aug 2021 19:17:39 GMT, Radoslaw Smogura wrote: > That said, if, one day, we'd like to rewrite those routines in Java, using memory access API + vector API, using an opaque object carrier can definitively be an issue (the vector API also likes to be sharp in its carrier type). I am not too concerned about this. For memory copying it is important to choose the largest shape (i.e. largest vector register) so we could choose to use Vector or Vector etc. even when copying arrays of floats or doubles. That is sort of how vectorized mistmatch is implemented. It will become easier to do this when we enhance the Vector API to load/store from segments, which could be backed by primitive arrays or native regions. ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From mcimadamore at openjdk.java.net Tue Aug 10 21:05:51 2021 From: mcimadamore at openjdk.java.net (Maurizio Cimadamore) Date: Tue, 10 Aug 2021 21:05:51 GMT Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v14] In-Reply-To: References: Message-ID: On Tue, 10 Aug 2021 09:32:09 GMT, Maurizio Cimadamore wrote: >> This patch ties up some loose ends with the MemoryCopy API, and it also prepares the ground for some other related refactorings in this area. >> >> The meat of this patch is represented by the various changes in MemoryCopy, where all methods were renamed to simply `copy`, and the length parameter (now called `elementCount`) is always moved to the end. >> >> I've also simplified naming of parameters, as I think distinguishing between `index` and `offset` is enough (e.g. an array has an index, a segment has an offset). >> >> You will see that, at the very end of the class, three more copy methods have been added, which deal fully in terms of segments. I have also moved the complex layout-based memory segment copy operation (which does the swap) as a static method in this class, as I believe the static form makes the method more regular and usable. >> >> I've made some changes to our uses of `copyFrom` in the linker, to use the new methods in `MemoryCopy` when the copy operation was performing slicing in the source/target segment, which I think makes the code more readable. Of course these changes are completely optional and could be omitted as well. > > Maurizio Cimadamore has updated the pull request incrementally with two additional commits since the last revision: > > - Tweak micro benchmarks > - Improve performance of generic copy methods > > That said, if, one day, we'd like to rewrite those routines in Java, using memory access API + vector API, using an opaque object carrier can definitively be an issue (the vector API also likes to be sharp in its carrier type). > > I am not too concerned about this. For memory copying it is important to choose the largest shape (i.e. largest vector register) so we could choose to use Vector or Vector etc. even when copying arrays of floats or doubles. That is sort of how vectorized mistmatch is implemented. It will become easier to do this when we enhance the Vector API to load/store from segments, which could be backed by primitive arrays or native regions. True - I guess what I mean is that the vector shape won't be known statically in the code (while it could be if there were different overloads). ------------- PR: https://git.openjdk.java.net/panama-foreign/pull/568 From xgong at openjdk.java.net Wed Aug 11 01:21:40 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Wed, 11 Aug 2021 01:21:40 GMT Subject: [vectorIntrinsics+mask] RFR: 8271313: AArch64: SVE backend support for masking operations with predicate feature [v3] In-Reply-To: References: Message-ID: On Tue, 10 Aug 2021 03:45:42 GMT, Ningsheng Jian wrote: >> Xiaohong Gong has updated the pull request incrementally with one additional commit since the last revision: >> >> Fix 64 bits vector tests fail issue > > LGTM Thanks for the review @nsjian ! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/105 From xgong at openjdk.java.net Wed Aug 11 01:21:41 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Wed, 11 Aug 2021 01:21:41 GMT Subject: [vectorIntrinsics+mask] Integrated: 8271313: AArch64: SVE backend support for masking operations with predicate feature In-Reply-To: References: Message-ID: On Fri, 30 Jul 2021 03:31:14 GMT, Xiaohong Gong wrote: > This is the initial SVE backend implementations for all masking operations with the SVE predicate feature. It contains: > - SVE codegen for vector operations under a mask controlling > - SVE codegen for vector mask operations with predicate instructions > > The size of libjvm.so increases about 1.86% after adding all the backend changes. And the performance gain is about 3.7% ~ 7.88x for some masking operations of IntMaxVector with SVE 512 bits: > > Benchmark Gain > IntMaxVector.ABSMasked 1.198 > IntMaxVector.ADDMasked 1.040 > IntMaxVector.ADDMaskedLanes 1.068 > IntMaxVector.ANDMasked 1.117 > IntMaxVector.ANDMaskedLanes 1.101 > IntMaxVector.AND_NOTMasked 1.037 > IntMaxVector.ASHRMasked 1.286 > IntMaxVector.ASHRMaskedShift 1.096 > IntMaxVector.BITWISE_BLENDMasked 1.085 > IntMaxVector.LSHRMasked 1.405 > IntMaxVector.LSHRMaskedShift 1.092 > IntMaxVector.MAXMaskedLanes 1.079 > IntMaxVector.MINMaskedLanes 1.079 > IntMaxVector.MULMasked 1.370 > IntMaxVector.ORMasked 1.038 > IntMaxVector.ORMaskedLanes 1.103 > IntMaxVector.SUBMasked 1.043 > IntMaxVector.XORMasked 1.151 > IntMaxVector.XORMaskedLanes 1.103 > IntMaxVector.allTrue 1.157 > IntMaxVector.anyTrue 1.158 > IntMaxVector.gatherMasked 7.880 > IntMaxVector.scatterMasked 4.732 This pull request has now been integrated. Changeset: 163c1d53 Author: Xiaohong Gong URL: https://git.openjdk.java.net/panama-vector/commit/163c1d53d6de77f140f1f905c94f7123f6d2be8d Stats: 4868 lines in 9 files changed: 3298 ins; 482 del; 1088 mod 8271313: AArch64: SVE backend support for masking operations with predicate feature Co-authored-by: Eric Liu Co-authored-by: Ningsheng Jian Reviewed-by: njian ------------- PR: https://git.openjdk.java.net/panama-vector/pull/105 From xgong at openjdk.java.net Wed Aug 11 01:37:36 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Wed, 11 Aug 2021 01:37:36 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: <5t7pAFNWvLYgCLTW97VbdrIKV_HFoI4FbwgaMV7NwYc=.2d832893-f0e7-4a59-9757-9c52df407f12@github.com> References: <5t7pAFNWvLYgCLTW97VbdrIKV_HFoI4FbwgaMV7NwYc=.2d832893-f0e7-4a59-9757-9c52df407f12@github.com> Message-ID: <1w3WEt579j0GGGP8h423lIrymFqMn3KnDttmgxXfVlk=.889872ec-ffa5-45d4-a7ce-834b1bcf13e8@github.com> On Mon, 9 Aug 2021 11:32:49 GMT, Jatin Bhateja wrote: >> src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java line 596: >> >>> 594: return lanewise(XOR, broadcast(-1), m); >>> 595: } else if (op == NEG) { >>> 596: return lanewise(NOT, m).lanewise(ADD, broadcast(1), m); >> >> Why not directly intrinsify `NEG` as an unary op and generate the "NegVI" node in compiler? SVE supports the masked neg instruction. How about x86 AVX-512? > > For targets which do not support direct vector NEG, logic will need to dismantled into vector NOT + ADD. > Other approach was to emit vector multiplication with -1. But it will be costly for sub-word types (byte/word). I think we can take any approach, keep this java change as its and add compiler transform which folds the logic into NegVI during XOR idealization since it will be specific for one target (SVE) currently. OK, this makes sense to me. Thanks! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From leerho at gmail.com Wed Aug 11 21:09:19 2021 From: leerho at gmail.com (leerho) Date: Wed, 11 Aug 2021 14:09:19 -0700 Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: Hello Maurizio, I can see that "MemoryCopy" has now been nicely integrated into MemoryAccess. It looks good. I have one question and a plea: - Do you still plan on adding a "isOverlapping(Segment)" to MemorySegment? As I mentioned before, this simplifies the code required when attempting to copy elements between segments where the elements are not primitives. - A while ago I requested a simple empty Interface (added to Scope) that could be extended by the user to provide a call back mechanism between the code operating on a segment/slice and the higher-level code that is controlling the scope. This would allow, for example, a simplified way for the lower level code to request a larger segment to operate with. Both MemorySegment and ResourceScope are now sealed interfaces, which would lock out any possibility for users to add this kind of functionality later. I realize this could also be provisioned as a separate argument passed between the higher-level code and the lower-level code, but this is not as elegant as having this simple mechanism built into the Java code. Cheers, Lee. On Fri, Aug 6, 2021 at 3:16 PM Uwe Schindler wrote: > On Fri, 6 Aug 2021 17:01:10 GMT, Maurizio Cimadamore < > mcimadamore at openjdk.org> wrote: > > >> This patch ties up some loose ends with the MemoryCopy API, and it also > prepares the ground for some other related refactorings in this area. > >> > >> The meat of this patch is represented by the various changes in > MemoryCopy, where all methods were renamed to simply `copy`, and the length > parameter (now called `elementCount`) is always moved to the end. > >> > >> I've also simplified naming of parameters, as I think distinguishing > between `index` and `offset` is enough (e.g. an array has an index, a > segment has an offset). > >> > >> You will see that, at the very end of the class, three more copy > methods have been added, which deal fully in terms of segments. I have also > moved the complex layout-based memory segment copy operation (which does > the swap) as a static method in this class, as I believe the static form > makes the method more regular and usable. > >> > >> I've made some changes to our uses of `copyFrom` in the linker, to use > the new methods in `MemoryCopy` when the copy operation was performing > slicing in the source/target segment, which I think makes the code more > readable. Of course these changes are completely optional and could be > omitted as well. > > > > Maurizio Cimadamore has refreshed the contents of this pull request, and > previous commits have been removed. The incremental views will show > differences compared to the previous content of the PR. The pull request > contains one new commit since the last revision: > > > > Revert name of accessors in MemoryAccess > > Hi, > I tested the latest variant with Lucene. Performance seems OK, heap > profile is also fine (identical to our old bytebuffer code, so no extra > allocations by panama). Code: > https://github.com/uschindler/lucene/blob/7ed6da79239fa8f860ad58bf5568d0001927b6a2/lucene/core/src/java/org/apache/lucene/store/MemorySegmentIndexInput.java#L148-L211 > > I am fine with both APIs in memory access, although I liked the first > variant using write/read a bit more. But I have seen the same problems with > order of parameters. > > ------------- > > PR: https://git.openjdk.java.net/panama-foreign/pull/568 > From maurizio.cimadamore at oracle.com Wed Aug 11 21:29:38 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Wed, 11 Aug 2021 22:29:38 +0100 Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: Message-ID: <8fa5aefd-695d-7b31-4342-ffc8ad4cb765@oracle.com> On 11/08/2021 22:09, leerho wrote: > Hello Maurizio, > I can see that "MemoryCopy" has now been nicely integrated into > MemoryAccess.? It looks good. > > I have one question and a plea: > > * Do you still plan on adding a "isOverlapping(Segment)" to > MemorySegment?? As I mentioned before, this simplifies the code > required when attempting to copy elements between segments where > the elements are not primitives. > That is still on the cards, yes. > > * A while ago I requested a simple empty Interface (added to Scope) > that could be extended?by the user to provide a call back > mechanism between?the code operating on a segment/slice and the > higher-level code that is controlling the scope.? This would > allow, for example, a simplified way for the lower level code to > request a larger segment to operate with.? Both MemorySegment and > ResourceScope are now sealed interfaces, which would lock out any > possibility?for users to add this kind of functionality later.? I > realize this could also be provisioned as a separate argument > passed between the higher-level code and the lower-level code, but > this is not as elegant as having this simple mechanism built into > the Java code. > ResourceScope is too low level to allow for extensibility - it is tied with VM internals, especially in its handling of shared scope closure. I have to admit, I have trouble understanding what you are proposing - e.g. what this callback would be for. What calls to resource scope do you wish to intercept? Maurizio > Cheers, > Lee. > > > On Fri, Aug 6, 2021 at 3:16 PM Uwe Schindler > > wrote: > > On Fri, 6 Aug 2021 17:01:10 GMT, Maurizio Cimadamore > > wrote: > > >> This patch ties up some loose ends with the MemoryCopy API, and > it also prepares the ground for some other related refactorings in > this area. > >> > >> The meat of this patch is represented by the various changes in > MemoryCopy, where all methods were renamed to simply `copy`, and > the length parameter (now called `elementCount`) is always moved > to the end. > >> > >> I've also simplified naming of parameters, as I think > distinguishing between `index` and `offset` is enough (e.g. an > array has an index, a segment has an offset). > >> > >> You will see that, at the very end of the class, three more > copy methods have been added, which deal fully in terms of > segments. I have also moved the complex layout-based memory > segment copy operation (which does the swap) as a static method in > this class, as I believe the static form makes the method more > regular and usable. > >> > >> I've made some changes to our uses of `copyFrom` in the linker, > to use the new methods in `MemoryCopy` when the copy operation was > performing slicing in the source/target segment, which I think > makes the code more readable. Of course these changes are > completely optional and could be omitted as well. > > > > Maurizio Cimadamore has refreshed the contents of this pull > request, and previous commits have been removed. The incremental > views will show differences compared to the previous content of > the PR. The pull request contains one new commit since the last > revision: > > > >? ?Revert name of accessors in MemoryAccess > > Hi, > I tested the latest variant with Lucene. Performance seems OK, > heap profile is also fine (identical to our old bytebuffer code, > so no extra allocations by panama). Code: > https://github.com/uschindler/lucene/blob/7ed6da79239fa8f860ad58bf5568d0001927b6a2/lucene/core/src/java/org/apache/lucene/store/MemorySegmentIndexInput.java#L148-L211 > > > I am fine with both APIs in memory access, although I liked the > first variant using write/read a bit more. But I have seen the > same problems with order of parameters. > > ------------- > > PR: https://git.openjdk.java.net/panama-foreign/pull/568 > > From maurizio.cimadamore at oracle.com Wed Aug 11 21:44:06 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Wed, 11 Aug 2021 22:44:06 +0100 Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: <8fa5aefd-695d-7b31-4342-ffc8ad4cb765@oracle.com> References: <8fa5aefd-695d-7b31-4342-ffc8ad4cb765@oracle.com> Message-ID: <8ff688f6-d4c4-41df-2409-88c9acaec5ad@oracle.com> I've resurrected an older conversation here: https://mail.openjdk.java.net/pipermail/panama-dev/2021-April/013191.html At that time we discussed using a custom allocator to track allocation pressure. I think that's still the way to go. Adding more features on ResourceScope is IMHO not the way to go, given that a ResourceScope is not used just for memory segments. If you want to keep track of how much memory is allocated, likely you need a custom allocator which has the ability to do that, and react accordingly, which is why the SegmentAllocator is there. Note that a SegmentAllocator can be built on top of a scope, e.g. you don't have to give up scopes (see what we do for arena allocators): e.g. you start with a scope, wrap it into an allocator and then use the allocator. Maurizio On 11/08/2021 22:29, Maurizio Cimadamore wrote: > I have to admit, I have trouble understanding what you are proposing - > e.g. what this callback would be for. What calls to resource scope do > you wish to intercept? From leerho at gmail.com Wed Aug 11 23:20:50 2021 From: leerho at gmail.com (leerho) Date: Wed, 11 Aug 2021 16:20:50 -0700 Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: <8ff688f6-d4c4-41df-2409-88c9acaec5ad@oracle.com> References: <8fa5aefd-695d-7b31-4342-ffc8ad4cb765@oracle.com> <8ff688f6-d4c4-41df-2409-88c9acaec5ad@oracle.com> Message-ID: Yes, now I remember. Thank you. I apologize for the redundant request. Nonetheless, I guess I am having difficulty in figuring out how to use this allocator in our use case. Let me try an elementary example. public class Parent { > > MemoryScope scope = defineScope(...); > MemorySegment arena = defineArenaSegment(..., scope); > MemorySegment[] segArr = //allocate a large number of segments as slices > of arena > > Aggregator[] aggArr = //array of aggregators that operate each in their > own segment > for (int i=0; i < segArr.length(); i++) { > aggArr[i] = new Aggregator(segArr[i]); > } > > //Start the process of updating all the aggregators with data. The > parent has no clue as to // which aggregators will need more memory. > public class ParentAllocator extends SegmentAllocator { > @Override > public MemorySegment allocate(long bytesSize, long bytesAlignment) { > ... > } > } > } > public class Aggregator { > public Aggregator(MemorySegment seg) {} > public void update(data) { > //oops, my segment is full. I need a larger segment. > //How do I access ParentAllocator? Unless I pass it along with the > segment? > } } On Wed, Aug 11, 2021 at 2:44 PM Maurizio Cimadamore < maurizio.cimadamore at oracle.com> wrote: > I've resurrected an older conversation here: > > https://mail.openjdk.java.net/pipermail/panama-dev/2021-April/013191.html > > At that time we discussed using a custom allocator to track allocation > pressure. I think that's still the way to go. > > Adding more features on ResourceScope is IMHO not the way to go, given > that a ResourceScope is not used just for memory segments. If you want > to keep track of how much memory is allocated, likely you need a custom > allocator which has the ability to do that, and react accordingly, which > is why the SegmentAllocator is there. Note that a SegmentAllocator can > be built on top of a scope, e.g. you don't have to give up scopes (see > what we do for arena allocators): e.g. you start with a scope, wrap it > into an allocator and then use the allocator. > > Maurizio > > On 11/08/2021 22:29, Maurizio Cimadamore wrote: > > I have to admit, I have trouble understanding what you are proposing - > > e.g. what this callback would be for. What calls to resource scope do > > you wish to intercept? > From sviswanathan at openjdk.java.net Thu Aug 12 00:07:57 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Thu, 12 Aug 2021 00:07:57 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: On Fri, 6 Aug 2021 17:06:07 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: > > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. src/hotspot/cpu/x86/assembler_x86.cpp line 7569: > 7567: } > 7568: > 7569: void Assembler::evpxord(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { Most of the added instruction are very similar. Lot of duplication of code. Could be modularized for easy maintenance and review. src/hotspot/cpu/x86/assembler_x86.cpp line 7585: > 7583: > 7584: void Assembler::evpxorq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 7585: assert(VM_Version::supports_evex(), ""); The following assert is missing from this and similar instruction: assert(vector_len == AVX_512bit || VM_Version::supports_avx512vl(), ""); Please make sure that the asserts are similar. src/hotspot/cpu/x86/assembler_x86.cpp line 7592: > 7590: if (merge) { > 7591: attributes.reset_is_clear_context(); > 7592: } Isn't this needed only for instructions with memory operand? src/hotspot/cpu/x86/assembler_x86.cpp line 8310: > 8308: > 8309: void Assembler::evpaddq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 8310: InstructionMark im(this); Don't need InstructionMark for register only instructions. Multiple similar instances. src/hotspot/cpu/x86/assembler_x86.cpp line 8561: > 8559: } > 8560: > 8561: void Assembler::evpmulw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpmullw. src/hotspot/cpu/x86/assembler_x86.cpp line 8574: > 8572: } > 8573: > 8574: void Assembler::evpmulw(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpmullw. src/hotspot/cpu/x86/assembler_x86.cpp line 8589: > 8587: } > 8588: > 8589: void Assembler::evpmuld(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpmulld. src/hotspot/cpu/x86/assembler_x86.cpp line 8602: > 8600: } > 8601: > 8602: void Assembler::evpmuld(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpmulld. src/hotspot/cpu/x86/assembler_x86.cpp line 8617: > 8615: } > 8616: > 8617: void Assembler::evpmulq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpmullq. src/hotspot/cpu/x86/assembler_x86.cpp line 8630: > 8628: } > 8629: > 8630: void Assembler::evpmulq(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpmullq. src/hotspot/cpu/x86/assembler_x86.cpp line 8877: > 8875: } > 8876: > 8877: void Assembler::evfmaps(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { It will be good to specify the flavor of fma here, say evfmaps213ps based on the opcode that you use. Another point is that the 213 flavor does the following operation: dst = src + dst * nds; Wouldn't the 231 flavor be better? src/hotspot/cpu/x86/assembler_x86.cpp line 8890: > 8888: } > 8889: > 8890: void Assembler::evfmaps(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { It will be good to specify the flavor of fma here, say evfmaps213ps based on the opcode that you use. src/hotspot/cpu/x86/assembler_x86.cpp line 8905: > 8903: } > 8904: > 8905: void Assembler::evfmapd(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { It will be good to specify the flavor of fma here, say evfmaps213pd based on the opcode that you use. src/hotspot/cpu/x86/assembler_x86.cpp line 8918: > 8916: } > 8917: > 8918: void Assembler::evfmapd(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { It will be good to specify the flavor of fma here, say evfmaps213pd based on the opcode that you use. src/hotspot/cpu/x86/assembler_x86.cpp line 8933: > 8931: } > 8932: > 8933: void Assembler::evppermb(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpermb. src/hotspot/cpu/x86/assembler_x86.cpp line 8946: > 8944: } > 8945: > 8946: void Assembler::evppermb(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpermb. src/hotspot/cpu/x86/assembler_x86.cpp line 8960: > 8958: } > 8959: > 8960: void Assembler::evppermw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpermw. src/hotspot/cpu/x86/assembler_x86.cpp line 8973: > 8971: } > 8972: > 8973: void Assembler::evppermw(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpermw. src/hotspot/cpu/x86/assembler_x86.cpp line 8987: > 8985: } > 8986: > 8987: void Assembler::evppermd(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpermd. src/hotspot/cpu/x86/assembler_x86.cpp line 9000: > 8998: } > 8999: > 9000: void Assembler::evppermd(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpermd. src/hotspot/cpu/x86/assembler_x86.cpp line 9014: > 9012: } > 9013: > 9014: void Assembler::evppermq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { This should be evpermq. src/hotspot/cpu/x86/assembler_x86.cpp line 9027: > 9025: } > 9026: > 9027: void Assembler::evppermq(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be evpermq. src/hotspot/cpu/x86/assembler_x86.cpp line 9043: > 9041: void Assembler::evpsllw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9042: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9043: InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true); So far WIG is encoded with vex_w as false. We could keep that consistent here and set vex_w to false. src/hotspot/cpu/x86/assembler_x86.cpp line 9079: > 9077: void Assembler::evpsrlw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9078: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9079: InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true); So far WIG is encoded with vex_w as false. We could keep that consistent here and set vex_w to false. src/hotspot/cpu/x86/assembler_x86.cpp line 9115: > 9113: void Assembler::evpsraw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9114: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9115: InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true); So far WIG is encoded with vex_w as false. We could keep that consistent here and set vex_w to false. src/hotspot/cpu/x86/assembler_x86.cpp line 9259: > 9257: void Assembler::evpminsb(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9258: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9259: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9285: > 9283: void Assembler::evpminsw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9284: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9285: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9291: > 9289: attributes.reset_is_clear_context(); > 9290: } > 9291: int encode = vex_prefix_and_encode(dst->encoding(), nds->encoding(), src->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes); This should be VEX_OPCODE_0F. src/hotspot/cpu/x86/assembler_x86.cpp line 9304: > 9302: attributes.reset_is_clear_context(); > 9303: } > 9304: vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes); This should be VEX_OPCODE_0F. src/hotspot/cpu/x86/assembler_x86.cpp line 9311: > 9309: void Assembler::evpminsd(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9310: assert(vector_len == AVX_512bit || VM_Version::supports_avx512vl(), ""); > 9311: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9337: > 9335: void Assembler::evpminsq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9336: assert(vector_len == AVX_512bit || VM_Version::supports_avx512vl(), ""); > 9337: InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9364: > 9362: void Assembler::evpmaxsb(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9363: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9364: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9377: > 9375: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9376: InstructionMark im(this); > 9377: InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ false, /* no_mask_reg */ false, /* uses_vl */ true); So far WIG is encoded with vex_w as false. We could keep that consistent here and set vex_w to false. src/hotspot/cpu/x86/assembler_x86.cpp line 9390: > 9388: void Assembler::evpmaxsw(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9389: assert(VM_Version::supports_avx512bw() && (vector_len == AVX_512bit || VM_Version::supports_avx512vl()), ""); > 9390: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9409: > 9407: attributes.reset_is_clear_context(); > 9408: } > 9409: vex_prefix(src, nds->encoding(), dst->encoding(), VEX_SIMD_66, VEX_OPCODE_0F_38, &attributes); VEX_OPCODE_OF_38 should be VEX_OPCODE_0F. src/hotspot/cpu/x86/assembler_x86.cpp line 9416: > 9414: void Assembler::evpmaxsd(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9415: assert(vector_len == AVX_512bit || VM_Version::supports_avx512vl(), ""); > 9416: InstructionAttr attributes(vector_len, /* vex_w */ false, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 9442: > 9440: void Assembler::evpmaxsq(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > 9441: assert(vector_len == AVX_512bit || VM_Version::supports_avx512vl(), ""); > 9442: InstructionAttr attributes(vector_len, /* vex_w */ true, /* legacy_mode */ _legacy_mode_bw, /* no_mask_reg */ false, /* uses_vl */ true); legacy_mode should be false here. src/hotspot/cpu/x86/assembler_x86.cpp line 10388: > 10386: _attributes->set_evex_encoding(evex_encoding); > 10387: > 10388: // P0: byte 2, initialized to RXBR00mm This should be R'RXB00mm. src/hotspot/cpu/x86/assembler_x86.cpp line 10410: > 10408: 0 : > 10409: _attributes->get_embedded_opmask_register_specifier(); > 10410: // EVEX.v for extending EVEX.vvvv or VIDX This should be EVEX.v`. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 12 06:23:49 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 06:23:49 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: <6m5J2NvaUmfHQis0XTAZSOdyaeaXFqCvJov1z1c7ieU=.374e7dae-d07b-40d1-8d05-b56c53128abd@github.com> On Wed, 11 Aug 2021 22:32:46 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: >> >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. > > src/hotspot/cpu/x86/assembler_x86.cpp line 8877: > >> 8875: } >> 8876: >> 8877: void Assembler::evfmaps(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > > It will be good to specify the flavor of fma here, say evfmaps213ps based on the opcode that you use. > Another point is that the 213 flavor does the following operation: > dst = src + dst * nds; > Wouldn't the 231 flavor be better? Existing implementation is not functionally incorrect, predication will still choose the old (dst) or new value, connections are set appropriately in IR. > src/hotspot/cpu/x86/assembler_x86.cpp line 9000: > >> 8998: } >> 8999: >> 9000: void Assembler::evppermd(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { > > This should be evpermd. evp is chosen as prefix in all the masked assemble routines. (evex + vector + packed) > src/hotspot/cpu/x86/x86.ad line 8610: > >> 8608: match(Set dst (AddVL (Binary dst src2) mask)); >> 8609: match(Set dst (AddVF (Binary dst src2) mask)); >> 8610: match(Set dst (AddVD (Binary dst src2) mask)); > > Could we add the match rules for sub, and, or, xor, mul, div, min, max, rearrange here? > The ins_encode part it the same for all of these. We will not be saving anything by clubbing the rules, on pattern per operation is easy to review and maintain. Your suggestion will make one pattern very bulky. > src/hotspot/cpu/x86/x86.ad line 8629: > >> 8627: match(Set dst (AddVL (Binary dst src2) mask)); >> 8628: match(Set dst (AddVF (Binary dst src2) mask)); >> 8629: match(Set dst (AddVD (Binary dst src2) mask)); > > Could we add the match rules for sub, and, or, xor, mul, div, min, max, rearrange here? > The ins_encode part it the same for all of these. Same as above > src/hotspot/cpu/x86/x86.ad line 8833: > >> 8831: match(Set dst (LShiftVS (Binary dst src2) mask)); >> 8832: match(Set dst (LShiftVI (Binary dst src2) mask)); >> 8833: match(Set dst (LShiftVL (Binary dst src2) mask)); > > Could we add the match rules for RShift, URShift here? > The ins_encode part it the same for all of these. Same as above > src/hotspot/cpu/x86/x86.ad line 8850: > >> 8848: match(Set dst (LShiftVS (Binary dst src2) mask)); >> 8849: match(Set dst (LShiftVI (Binary dst src2) mask)); >> 8850: match(Set dst (LShiftVL (Binary dst src2) mask)); > > Could we add the match rules for RShift, URShift here? > The ins_encode part it the same for all of these. Same as above ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From youngty1997 at gmail.com Thu Aug 12 09:23:08 2021 From: youngty1997 at gmail.com (Ty Young) Date: Thu, 12 Aug 2021 04:23:08 -0500 Subject: abstract layouts Message-ID: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> Hi, When decorating a layout with attributes, there is no way to declare that some attributes need to be filled in by an API user. In order to fix this, I'd like to introduce some simple changes in order to support that[1]: 1. withAttribute no longer accepts a null value as an attribute value. 2. Addition of an asAbstract method[2], which takes in a var args of attributes that need to be filled in(indicated by a null value). 3. Addition of an isAbstract method[3], which returns true if any attribute has a value of null. 4. Addition of an unfilledAttributes method[4] which returns a list of all attributes that have a null attribute value and need filled in. There are some minor code style consistency mistakes with the asAbstract method and the docs could be improved, but this is more about just putting the idea out there. [1] https://github.com/BlueGoliath/panama-foreign/tree/abstract_layouts [2] https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L251 [3] https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L610 [4] https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L342 From maurizio.cimadamore at oracle.com Thu Aug 12 09:38:29 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 12 Aug 2021 10:38:29 +0100 Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: References: <8fa5aefd-695d-7b31-4342-ffc8ad4cb765@oracle.com> <8ff688f6-d4c4-41df-2409-88c9acaec5ad@oracle.com> Message-ID: <404686ea-013b-dbed-d423-3566652af415@oracle.com> My first reaction is that the scope belongs to the Parent, while the allocator belongs to the Aggregator. Or maybe the Aggregator has a link to the Parent. I get that you want aggregator to be a simple thing that only works off a memory segment - and avoid passing extra parameters; but I think there is a more important question here which is whether your API wants to expose memory segments directly, or not, to clients. A memory segment is a relatively neutral entity (like a ByteBuffer), and I think that, in general, if you feel like you need to add more semantics to a segment, you are probably better off creating your own abstraction which has a segment inside (which is used for low level memory operations). If this was a normal API I'd say: sure, you can extend MemorySegment and ResourceScope, and add whatever you want in there. But that's not going to work: if you extend MemorySegment (e.g. to add a "parent" pointer) all VarHandles/MethodHandles taking a MemorySegment will be way less efficient, because you have lost exact type match with the VH/MH signature (e.g. the VH takes a MemorySegment, but you are passing a LeeSegment which is a subclass of MemorySegment). This (coupled with safety concerns) are the reasons as to why inheritance is mostly a no go in the API. Maurizio On 12/08/2021 00:20, leerho wrote: > Yes, now I remember. Thank you.? I apologize for the redundant > request.? Nonetheless, I guess I am having difficulty in figuring out > how to use this allocator in our use case.? Let me try an elementary > example. > > public class Parent { > > ? MemoryScope scope = defineScope(...); > ? MemorySegment arena = defineArenaSegment(..., scope); > ? MemorySegment[] segArr = //allocate a large number of segments > as slices of arena > > ? Aggregator[] aggArr = //array of aggregators that operate each > in their own segment > ? for (int i=0; i < segArr.length(); i++) { > ? ? aggArr[i] = new Aggregator(segArr[i]); > ? } > > ? //Start the process of updating all the aggregators with data. > The parent has no clue as to > > ? // which aggregators will need more memory. > > > ? public class ParentAllocator extends SegmentAllocator { > ? ? @Override > ? ? public MemorySegment allocate(long bytesSize, long > bytesAlignment) { > ? ? ? ... > ? ? } > ? } > } > > > public class Aggregator { > > > ? public Aggregator(MemorySegment seg) {} > > > ? public void update(data) { > ? ? //oops, my segment is full.? I need a larger segment. > ? ? //How do I access ParentAllocator? Unless I pass it along with > the segment? > ? } > > > } > > On Wed, Aug 11, 2021 at 2:44 PM Maurizio Cimadamore > > wrote: > > I've resurrected an older conversation here: > > https://mail.openjdk.java.net/pipermail/panama-dev/2021-April/013191.html > > > At that time we discussed using a custom allocator to track > allocation > pressure. I think that's still the way to go. > > Adding more features on ResourceScope is IMHO not the way to go, > given > that a ResourceScope is not used just for memory segments. If you > want > to keep track of how much memory is allocated, likely you need a > custom > allocator which has the ability to do that, and react accordingly, > which > is why the SegmentAllocator is there. Note that a SegmentAllocator > can > be built on top of a scope, e.g. you don't have to give up scopes > (see > what we do for arena allocators): e.g. you start with a scope, > wrap it > into an allocator and then use the allocator. > > Maurizio > > On 11/08/2021 22:29, Maurizio Cimadamore wrote: > > I have to admit, I have trouble understanding what you are > proposing - > > e.g. what this callback would be for. What calls to resource > scope do > > you wish to intercept? > From maurizio.cimadamore at oracle.com Thu Aug 12 10:08:43 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 12 Aug 2021 11:08:43 +0100 Subject: abstract layouts In-Reply-To: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> Message-ID: <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> As we're approaching finalization of the API, I've been thinking about things that are suboptimal, or that can be pruned from the API. Layout attributes, frankly, seems one of such things. I think it would generally be more useful to allow for inheritance, so that you can define your own e.g. ValueLayout with the extra info you need stapled onto the side. One problem in the way of that is the fact that the layout API features some "wither" methods: for instance `MemoryLayout::withName(String string)`. Let's imagine a client adds a custom subclass of ValueLayout: ``` class ColoredLayout extends ValueLayout { ??? enum Color { ???????? RED, GREEN, BLUE; ??? } ??? final Color color; ??? ColoredLayout(Color color, ... ??) { ?????? ... ??? } ??? ... } ``` Here, what happens if the client doesn't override `withName`, `withBitAlignment`, etc. ? Well, the `super` implementation will be called - but that implementation will yield a `ValueLayout` not a `ColoredLayout`! Fixing this is difficult, as the Java language doesn't have the concept to mark a method as "you need to re-override this, even if an impl is available in the supertype". One thing we could do to approach to this would be to insert an intermediate class: ``` class AbstractValueLayout extends ValueLayout { // extension point! ???? abstract AbstractValueLayout withName(String name); ???? ... } ``` E.g. re-abstract all the wither methods, so that clients are forced to override them. But this approach has limitations too. For one, the hierarchy looks odd, as the abstract class is at the bottom - but maybe that can be fixed if we were willing to change the entire API to take AbstractValueLayout in place of ValueLayout - at which point ValueLayout would just be a leaf. But the more worrying issue is that this trick would have to be repeated for every layout subclasses (e.g. group, sequence layouts) - so we end up with 3 extra abstract classes, which are used as extension points. That's a lot of API surface for something that's not very common to use (which is the same problem layout attributes have). For these reasons, in the short term I'm tempted to just remove layout attributes, and either leave the hierarchy sealed (which would mean loss of functionality, albeit corner case one), or just open up the hierarchy and allow subclasses (maybe with some spelling in the javadoc which says "make sure to override the withers or it won't work"). P.S. As to your original question, I think all you did is achievable using static methods on the side which take a layout and add the empty attributes. Layout attributes are (see above) a corner use case, and abstract attributes are even a more cornery one (although I don't doubt they are useful in your case), and I think adding the API you propose has very low return on complexity. The hope is that, if we do end up opening up the layout hierarchy (with some javadoc caveats), we'll be out of your hair, and you can add as many custom layouts as you want - which I think is a solution you would prefer in the long run. Cheers Maurizio On 12/08/2021 10:23, Ty Young wrote: > Hi, > > > When decorating a layout with attributes, there is no way to declare > that some attributes need to be filled in by an API user. In order to > fix this, I'd like to introduce some simple changes in order to > support that[1]: > > > 1. withAttribute no longer accepts a null value as an attribute value. > > 2. Addition of an asAbstract method[2], which takes in a var args of > attributes that need to be filled in(indicated by a null value). > > 3. Addition of an isAbstract method[3], which returns true if any > attribute has a value of null. > > 4. Addition of an unfilledAttributes method[4] which returns a list of > all attributes that have a null attribute value and need filled in. > > > There are some minor code style consistency mistakes with the > asAbstract method and the docs could be improved, but this is more > about just putting the idea out there. > > > [1] https://github.com/BlueGoliath/panama-foreign/tree/abstract_layouts > > > [2] > https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L251 > > > [3] > https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L610 > > > [4] > https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L342 > From youngty1997 at gmail.com Thu Aug 12 11:24:36 2021 From: youngty1997 at gmail.com (Ty Young) Date: Thu, 12 Aug 2021 06:24:36 -0500 Subject: abstract layouts In-Reply-To: <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> Message-ID: <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> I'd very much like it if layouts were opened up and non-sealed. It would allow for less wasteful(no Optional) and faster code(no HashMap, things can be final). It also would be nice if GroupLayout was removed and replaced with StructLayout and UnionLayout, or used as a shared/common interface/class for them. I feel like the with* issues could be fixed with generics, e.g.: public interface MemoryLayout> { ??? public L withName(String name); } If SequenceLayout also used generics it would fix SequenceLayout not properly representing the element type, as you can then do: SequenceLayout intSequence; with SequenceLayout's class being: public class SequenceLayout> implements MemoryLayout> All of the basic layout types should be interfaces, not classes IMO. Basic implementations could be put in a non-exported package. Users can get a basic implementation from MemoryLayout static methods, as they do now. I don't think what I'm proposing could be done with static decorator methods. The information being added as attributes include MethodHandles for the class's constructor, e.g. a constructor MethodHandle for a NativeInteger class, something that specific can only be done at the class level I think. On 8/12/21 5:08 AM, Maurizio Cimadamore wrote: > As we're approaching finalization of the API, I've been thinking about > things that are suboptimal, or that can be pruned from the API. Layout > attributes, frankly, seems one of such things. > > I think it would generally be more useful to allow for inheritance, so > that you can define your own e.g. ValueLayout with the extra info you > need stapled onto the side. > > One problem in the way of that is the fact that the layout API > features some "wither" methods: for instance > `MemoryLayout::withName(String string)`. Let's imagine a client adds a > custom subclass of ValueLayout: > > ``` > class ColoredLayout extends ValueLayout { > ??? enum Color { > ???????? RED, GREEN, BLUE; > ??? } > > ??? final Color color; > > ??? ColoredLayout(Color color, ... ??) { > ?????? ... > ??? } > > ??? ... > } > ``` > > Here, what happens if the client doesn't override `withName`, > `withBitAlignment`, etc. ? Well, the `super` implementation will be > called - but that implementation will yield a `ValueLayout` not a > `ColoredLayout`! > > Fixing this is difficult, as the Java language doesn't have the > concept to mark a method as "you need to re-override this, even if an > impl is available in the supertype". > > One thing we could do to approach to this would be to insert an > intermediate class: > > ``` > class AbstractValueLayout extends ValueLayout { // extension point! > ???? abstract AbstractValueLayout withName(String name); > ???? ... > } > ``` > > E.g. re-abstract all the wither methods, so that clients are forced to > override them. But this approach has limitations too. For one, the > hierarchy looks odd, as the abstract class is at the bottom - but > maybe that can be fixed if we were willing to change the entire API to > take AbstractValueLayout in place of ValueLayout - at which point > ValueLayout would just be a leaf. > > But the more worrying issue is that this trick would have to be > repeated for every layout subclasses (e.g. group, sequence layouts) - > so we end up with 3 extra abstract classes, which are used as > extension points. That's a lot of API surface for something that's not > very common to use (which is the same problem layout attributes have). > > > For these reasons, in the short term I'm tempted to just remove layout > attributes, and either leave the hierarchy sealed (which would mean > loss of functionality, albeit corner case one), or just open up the > hierarchy and allow subclasses (maybe with some spelling in the > javadoc which says "make sure to override the withers or it won't work"). > > P.S. > > As to your original question, I think all you did is achievable using > static methods on the side which take a layout and add the empty > attributes. Layout attributes are (see above) a corner use case, and > abstract attributes are even a more cornery one (although I don't > doubt they are useful in your case), and I think adding the API you > propose has very low return on complexity. The hope is that, if we do > end up opening up the layout hierarchy (with some javadoc caveats), > we'll be out of your hair, and you can add as many custom layouts as > you want - which I think is a solution you would prefer in the long run. > > Cheers > Maurizio > > > On 12/08/2021 10:23, Ty Young wrote: >> Hi, >> >> >> When decorating a layout with attributes, there is no way to declare >> that some attributes need to be filled in by an API user. In order to >> fix this, I'd like to introduce some simple changes in order to >> support that[1]: >> >> >> 1. withAttribute no longer accepts a null value as an attribute value. >> >> 2. Addition of an asAbstract method[2], which takes in a var args of >> attributes that need to be filled in(indicated by a null value). >> >> 3. Addition of an isAbstract method[3], which returns true if any >> attribute has a value of null. >> >> 4. Addition of an unfilledAttributes method[4] which returns a list >> of all attributes that have a null attribute value and need filled in. >> >> >> There are some minor code style consistency mistakes with the >> asAbstract method and the docs could be improved, but this is more >> about just putting the idea out there. >> >> >> [1] https://github.com/BlueGoliath/panama-foreign/tree/abstract_layouts >> >> >> [2] >> https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L251 >> >> >> [3] >> https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L610 >> >> >> [4] >> https://github.com/BlueGoliath/panama-foreign/blob/a1c81e0b2b929cc3e1738c31acc97830294e0346/src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemoryLayout.java#L342 >> From jbhateja at openjdk.java.net Thu Aug 12 11:30:38 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 11:30:38 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: On Wed, 11 Aug 2021 21:19:29 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: >> >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. > > src/hotspot/cpu/x86/assembler_x86.cpp line 7569: > >> 7567: } >> 7568: >> 7569: void Assembler::evpxord(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { > > Most of the added instruction are very similar. Lot of duplication of code. Could be modularized for easy maintenance and review. These are leaf level routines and existing assembler were lacking the routines with masked variant. Further re-factoring may complexify things? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 12 12:08:42 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 12:08:42 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: On Wed, 11 Aug 2021 21:15:22 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: >> >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. > > src/hotspot/cpu/x86/assembler_x86.cpp line 7592: > >> 7590: if (merge) { >> 7591: attributes.reset_is_clear_context(); >> 7592: } > > Isn't this needed only for instructions with memory operand? Merging/Zeroing semantics is associated with destination vector register. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 12 12:17:50 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 12:17:50 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: - 8270349: Review comments resolution. - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. - 8270349: Fix for 32-bit build failure. - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. ------------- Changes: https://git.openjdk.java.net/panama-vector/pull/99/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=02 Stats: 3270 lines in 20 files changed: 3121 ins; 45 del; 104 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 12 12:23:47 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 12:23:47 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Mon, 26 Jul 2021 10:30:42 GMT, Xiaohong Gong wrote: >> VectorNode::make_mask_node is only going to be called for masked operations. I don't think AndVMask is being created for non-predicated targets. So we can take either approach. > > Ok, can the opcodes like `AndVMask` be blocked for non-predicated targets in `Matcher::match_rule_supported` ? Matcher::match_rule_supported only check the existence of pattern based on the opcode and default return value is true. AddVI v1 v2 AddVI v1 v2 mask Where as match_rule_supported_vector_masked initially calls match_rule_supported, it then return false in default case and true only for operations for which masked patterns exist. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 12 12:26:39 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 12:26:39 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Thu, 12 Aug 2021 12:17:50 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: > > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. Hi @sviswa7 , Thanks for take a look at this. your comments have been addressed. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From maurizio.cimadamore at oracle.com Thu Aug 12 13:12:21 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 12 Aug 2021 14:12:21 +0100 Subject: abstract layouts In-Reply-To: <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> Message-ID: On 12/08/2021 12:24, Ty Young wrote: > I'd very much like it if layouts were opened up and non-sealed. It > would allow for less wasteful(no Optional) and faster code(no HashMap, > things can be final). I agree that would work better. > It also would be nice if GroupLayout was removed and replaced with > StructLayout and UnionLayout, or used as a shared/common > interface/class for them. That is largely orthogonal and irrelevant in the discussion we're having here. > > > I feel like the with* issues could be fixed with generics, e.g.: > > > public interface MemoryLayout> { > > ??? public L withName(String name); > > } I don't think this solves much - as you will have, likely: ValueLayout extends MemoryLayout At which point you're back to square one - if you define `TyLayout extends ValueLayout`, there's nothing forcing you to override withName. I did experiments adding generic types to all layouts two years ago and honestly, it doesn't work very well. About 99% of the times, the most helpful thing the client has to say about a layout is MemoryLayout, which seems like forcing 99% of the users to use generics because 1% of use cases might need them. But that's beside the point - generics do not solve the problem I was talking about. Also, in my experience, having f-bounded type variables in hierarchies works very well when you have one top class and a single level of leaves (which are all peers). It works much less when you have to start defining sub-hierarchies in the leaves - because either the intermediate nodes are conscious about the type variables and leave them open (leading to very verbose and borderline uncomprehensible generic declarations), or they fix the type variables, in which case the leaves will not take advantage of the f-bound, and you'll be back in no-generic-land. > > All of the basic layout types should be interfaces, not classes IMO. > Basic implementations could be put in a non-exported package. Users > can get a basic implementation from MemoryLayout static methods, as > they do now. Again, this seems a bit of a shallow comment. We can turn layouts from interface to classes in 2 minutes, by doing a targeted refactoring. But again, whether classes or interfaces, the problem I pointed out is still there and is the one we'd need to solve to be able to let clients to subclass layouts freely. > > > I don't think what I'm proposing could be done with static decorator > methods. The information being added as attributes include > MethodHandles for the class's constructor, e.g. a constructor > MethodHandle for a NativeInteger class, something that specific can > only be done at the class level I think. Well, the original proposal was to add a bunch of methods: * MemoryLayout::isAbstract * MemroyLayout::asAbstract * MemoryLayout::unfilledAttributes If we have layout attributes (like we do in today's API), there is no need for these methods to _be_ in MemoryLayout. They can be static methods taking a layout, defined wherever you want. Just use a special name to encode the attribute names - e.g. "abstract/foo" - then: * isAbstract --> does the layout have any attribute whose name starts with "abstract/" which are set to null? * asAbstract --> encode the attribute names to use the "abstract/" prefix * unfilledAttributes -> get all the attributes whose name start with "abstract/" and return those that have no value set Maurizio From maurizio.cimadamore at oracle.com Thu Aug 12 13:39:02 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 12 Aug 2021 14:39:02 +0100 Subject: abstract layouts In-Reply-To: References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> Message-ID: <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> May I suggest, for the benefit of the conversation, that instead of focusing on the _hows_ we focus instead on the _whys_ ? E.g. "I'd like to decorate a layout with information X and Y, because I use these information in order to do Z" In other words, by having a full picture of what you are trying to do we might understand better what the requirements really are. Thanks Maurizio On 12/08/2021 14:12, Maurizio Cimadamore wrote: > > On 12/08/2021 12:24, Ty Young wrote: >> I'd very much like it if layouts were opened up and non-sealed. It >> would allow for less wasteful(no Optional) and faster code(no >> HashMap, things can be final). > I agree that would work better. > >> It also would be nice if GroupLayout was removed and replaced with >> StructLayout and UnionLayout, or used as a shared/common >> interface/class for them. > That is largely orthogonal and irrelevant in the discussion we're > having here. >> >> >> I feel like the with* issues could be fixed with generics, e.g.: >> >> >> public interface MemoryLayout> { >> >> ??? public L withName(String name); >> >> } > > I don't think this solves much - as you will have, likely: > > ValueLayout extends MemoryLayout > > At which point you're back to square one - if you define `TyLayout > extends ValueLayout`, there's nothing forcing you to override withName. > > I did experiments adding generic types to all layouts two years ago > and honestly, it doesn't work very well. About 99% of the times, the > most helpful thing the client has to say about a layout is > MemoryLayout, which seems like forcing 99% of the users to use > generics because 1% of use cases might need them. But that's beside > the point - generics do not solve the problem I was talking about. > Also, in my experience, having f-bounded type variables in hierarchies > works very well when you have one top class and a single level of > leaves (which are all peers). It works much less when you have to > start defining sub-hierarchies in the leaves - because either the > intermediate nodes are conscious about the type variables and leave > them open (leading to very verbose and borderline uncomprehensible > generic declarations), or they fix the type variables, in which case > the leaves will not take advantage of the f-bound, and you'll be back > in no-generic-land. > > >> >> All of the basic layout types should be interfaces, not classes IMO. >> Basic implementations could be put in a non-exported package. Users >> can get a basic implementation from MemoryLayout static methods, as >> they do now. > Again, this seems a bit of a shallow comment. We can turn layouts from > interface to classes in 2 minutes, by doing a targeted refactoring. > But again, whether classes or interfaces, the problem I pointed out is > still there and is the one we'd need to solve to be able to let > clients to subclass layouts freely. >> >> >> I don't think what I'm proposing could be done with static decorator >> methods. The information being added as attributes include >> MethodHandles for the class's constructor, e.g. a constructor >> MethodHandle for a NativeInteger class, something that specific can >> only be done at the class level I think. > > Well, the original proposal was to add a bunch of methods: > > * MemoryLayout::isAbstract > * MemroyLayout::asAbstract > * MemoryLayout::unfilledAttributes > > If we have layout attributes (like we do in today's API), there is no > need for these methods to _be_ in MemoryLayout. They can be static > methods taking a layout, defined wherever you want. Just use a special > name to encode the attribute names - e.g. "abstract/foo" - then: > > * isAbstract --> does the layout have any attribute whose name starts > with "abstract/" which are set to null? > * asAbstract --> encode the attribute names to use the "abstract/" prefix > * unfilledAttributes -> get all the attributes whose name start with > "abstract/" and return those that have no value set > > Maurizio > > > > From sviswanathan at openjdk.java.net Thu Aug 12 17:01:42 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Thu, 12 Aug 2021 17:01:42 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: On Thu, 12 Aug 2021 11:27:42 GMT, Jatin Bhateja wrote: >> src/hotspot/cpu/x86/assembler_x86.cpp line 7569: >> >>> 7567: } >>> 7568: >>> 7569: void Assembler::evpxord(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { >> >> Most of the added instruction are very similar. Lot of duplication of code. Could be modularized for easy maintenance and review. > > These are leaf level routines and existing assembler were lacking masked variants of these routines. Further re-factoring may complexify things. Sounds good. >> src/hotspot/cpu/x86/assembler_x86.cpp line 9000: >> >>> 8998: } >>> 8999: >>> 9000: void Assembler::evppermd(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { >> >> This should be evpermd. > > evp is chosen as prefix in all the masked assemble routines. (evex + vector + packed) ev is the prefix and evp. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From youngty1997 at gmail.com Thu Aug 12 18:00:42 2021 From: youngty1997 at gmail.com (Ty Young) Date: Thu, 12 Aug 2021 13:00:42 -0500 Subject: abstract layouts In-Reply-To: <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> Message-ID: Because it's needed for a NativePointer64 type: NativePointer64 intPointer = new NativePointer64<>(NativeInteger.LAYOUT); NativeInteger has 3 MethodHandles embedded into it, one which accepts nothing(safe), one which accepts a MemorySegment(unsafe), and one which accepts a MemoryAddress(unsafe, what is used by NativePointer64). NativePointer then takes the given layout, embeds it inside of itself, then reads it later when getting the dereferenced value. Doing this generates garbage because of Optional since the NativePointer64.LAYOUT needs to have NativeInteger embedded inside of it, which then needs to be resolved according to a type attribute, e.g. enum, pointer, number. It's wasteful(in terms of memory) and slow(have to go through a tree of static methods to resolve). Layouts being opened up would help. On 8/12/21 8:39 AM, Maurizio Cimadamore wrote: > May I suggest, for the benefit of the conversation, that instead of > focusing on the _hows_ we focus instead on the _whys_ ? > > E.g. "I'd like to decorate a layout with information X and Y, because > I use these information in order to do Z" > > In other words, by having a full picture of what you are trying to do > we might understand better what the requirements really are. > > Thanks > Maurizio > > On 12/08/2021 14:12, Maurizio Cimadamore wrote: >> >> On 12/08/2021 12:24, Ty Young wrote: >>> I'd very much like it if layouts were opened up and non-sealed. It >>> would allow for less wasteful(no Optional) and faster code(no >>> HashMap, things can be final). >> I agree that would work better. >> >>> It also would be nice if GroupLayout was removed and replaced with >>> StructLayout and UnionLayout, or used as a shared/common >>> interface/class for them. >> That is largely orthogonal and irrelevant in the discussion we're >> having here. >>> >>> >>> I feel like the with* issues could be fixed with generics, e.g.: >>> >>> >>> public interface MemoryLayout> { >>> >>> ??? public L withName(String name); >>> >>> } >> >> I don't think this solves much - as you will have, likely: >> >> ValueLayout extends MemoryLayout >> >> At which point you're back to square one - if you define `TyLayout >> extends ValueLayout`, there's nothing forcing you to override withName. >> >> I did experiments adding generic types to all layouts two years ago >> and honestly, it doesn't work very well. About 99% of the times, the >> most helpful thing the client has to say about a layout is >> MemoryLayout, which seems like forcing 99% of the users to use >> generics because 1% of use cases might need them. But that's beside >> the point - generics do not solve the problem I was talking about. >> Also, in my experience, having f-bounded type variables in >> hierarchies works very well when you have one top class and a single >> level of leaves (which are all peers). It works much less when you >> have to start defining sub-hierarchies in the leaves - because either >> the intermediate nodes are conscious about the type variables and >> leave them open (leading to very verbose and borderline >> uncomprehensible generic declarations), or they fix the type >> variables, in which case the leaves will not take advantage of the >> f-bound, and you'll be back in no-generic-land. >> >> >>> >>> All of the basic layout types should be interfaces, not classes IMO. >>> Basic implementations could be put in a non-exported package. Users >>> can get a basic implementation from MemoryLayout static methods, as >>> they do now. >> Again, this seems a bit of a shallow comment. We can turn layouts >> from interface to classes in 2 minutes, by doing a targeted >> refactoring. But again, whether classes or interfaces, the problem I >> pointed out is still there and is the one we'd need to solve to be >> able to let clients to subclass layouts freely. >>> >>> >>> I don't think what I'm proposing could be done with static decorator >>> methods. The information being added as attributes include >>> MethodHandles for the class's constructor, e.g. a constructor >>> MethodHandle for a NativeInteger class, something that specific can >>> only be done at the class level I think. >> >> Well, the original proposal was to add a bunch of methods: >> >> * MemoryLayout::isAbstract >> * MemroyLayout::asAbstract >> * MemoryLayout::unfilledAttributes >> >> If we have layout attributes (like we do in today's API), there is no >> need for these methods to _be_ in MemoryLayout. They can be static >> methods taking a layout, defined wherever you want. Just use a >> special name to encode the attribute names - e.g. "abstract/foo" - then: >> >> * isAbstract --> does the layout have any attribute whose name starts >> with "abstract/" which are set to null? >> * asAbstract --> encode the attribute names to use the "abstract/" >> prefix >> * unfilledAttributes -> get all the attributes whose name start with >> "abstract/" and return those that have no value set >> >> Maurizio >> >> >> >> From sviswanathan at openjdk.java.net Thu Aug 12 18:20:43 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Thu, 12 Aug 2021 18:20:43 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Thu, 12 Aug 2021 12:17:50 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: > > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 3915: > 3913: evand(eType, dst, mask, src1, src2, merge, vlen_enc); break; > 3914: case Op_AbsVD: > 3915: case Op_MulVB: Why specifically only AbsVD and MulVB are called out here? src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 3985: > 3983: evand(eType, dst, mask, src1, src2, merge, vlen_enc); break; > 3984: case Op_AbsVD: > 3985: case Op_MulVB: Why specifically only AbsVD and MulVB are called out here? src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8212: > 8210: case T_BOOLEAN: > 8211: case T_BYTE: > 8212: kandbl(dst, src1, src2); Is the type here the vector element type? Is so, for byte vector we need kandql. For short kanddl. For int kandwl, For long kandbl. src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8236: > 8234: case T_BOOLEAN: > 8235: case T_BYTE: > 8236: korbl(dst, src1, src2); Is the type here the vector element type? Is so, for byte vector we need korql. For short kordl. For int korwl, For long korbl. src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8260: > 8258: case T_BOOLEAN: > 8259: case T_BYTE: > 8260: kxorbl(dst, src1, src2); Is the type here the vector element type? Is so, for byte vector we need kxorql. For short kxordl. For int kxorwl, For long kxorbl. src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8384: > 8382: switch(type) { > 8383: case T_INT: > 8384: Assembler::evpord(dst, mask, nds, src, merge, vector_len); break; What about subword types here for or, xor, and? src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8425: > 8423: } > 8424: > 8425: void MacroAssembler::evpperm(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { This should be moved next to the register variant of the evpperm. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From maurizio.cimadamore at oracle.com Thu Aug 12 18:27:32 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 12 Aug 2021 19:27:32 +0100 Subject: abstract layouts In-Reply-To: References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> Message-ID: <3ff74eae-b010-c6ca-7799-8e2a76bdc2ec@oracle.com> I think what you are trying to do is problematic. You have NativeInteger, and NativeInteger has a static layout. You want to attach other static information (method handles). The information has to be _static_ if you want to have any chance of the JVM to optimize all that. But, with attributes, you are storing the MHs in a map - so, not static. Even if you could declare your own layout class, storing the method handles in final fields of the custom layout won't help (if the final fields aren't trusted by the JVM, which they are not, except for special provisions for some JDK packages). In other words, I don't see a path (besides spinning a new NativePointer64 instance which is exclusively dedicated to NativeInteger) by which you can get performance when accessing the NativeInteger from the NativePointer64. But, if you don't care much about inlining/performance, then maybe you can just use a ClassValue and store all the MethodHandles related to NativeInteger in there? That is going to provide similar (if not better) performance than those with layout attributes. I guess what I'm trying to say is that, unless I misunderstood your example, it seems another case of "layout attributes are attractive nuisance" - e.g. once they are there, one is tempted to just inject stuff into layouts, but you already have custom classes wrapping layouts, so why don't you associate the (static) metadata with the classes, rather than the layouts? Maurizio On 12/08/2021 19:00, Ty Young wrote: > Because it's needed for a NativePointer64 type: > > > NativePointer64 intPointer = new > NativePointer64<>(NativeInteger.LAYOUT); > > > NativeInteger has 3 MethodHandles embedded into it, one which accepts > nothing(safe), one which accepts a MemorySegment(unsafe), and one > which accepts a MemoryAddress(unsafe, what is used by > NativePointer64). NativePointer then takes the given layout, embeds it > inside of itself, then reads it later when getting the dereferenced > value. Doing this generates garbage because of Optional since the > NativePointer64.LAYOUT needs to have NativeInteger embedded inside of > it, which then needs to be resolved according to a type attribute, > e.g. enum, pointer, number. It's wasteful(in terms of memory) and > slow(have to go through a tree of static methods to resolve). Layouts > being opened up would help. > > > > On 8/12/21 8:39 AM, Maurizio Cimadamore wrote: >> May I suggest, for the benefit of the conversation, that instead of >> focusing on the _hows_ we focus instead on the _whys_ ? >> >> E.g. "I'd like to decorate a layout with information X and Y, because >> I use these information in order to do Z" >> >> In other words, by having a full picture of what you are trying to do >> we might understand better what the requirements really are. >> >> Thanks >> Maurizio >> >> On 12/08/2021 14:12, Maurizio Cimadamore wrote: >>> >>> On 12/08/2021 12:24, Ty Young wrote: >>>> I'd very much like it if layouts were opened up and non-sealed. It >>>> would allow for less wasteful(no Optional) and faster code(no >>>> HashMap, things can be final). >>> I agree that would work better. >>> >>>> It also would be nice if GroupLayout was removed and replaced with >>>> StructLayout and UnionLayout, or used as a shared/common >>>> interface/class for them. >>> That is largely orthogonal and irrelevant in the discussion we're >>> having here. >>>> >>>> >>>> I feel like the with* issues could be fixed with generics, e.g.: >>>> >>>> >>>> public interface MemoryLayout> { >>>> >>>> ??? public L withName(String name); >>>> >>>> } >>> >>> I don't think this solves much - as you will have, likely: >>> >>> ValueLayout extends MemoryLayout >>> >>> At which point you're back to square one - if you define `TyLayout >>> extends ValueLayout`, there's nothing forcing you to override withName. >>> >>> I did experiments adding generic types to all layouts two years ago >>> and honestly, it doesn't work very well. About 99% of the times, the >>> most helpful thing the client has to say about a layout is >>> MemoryLayout, which seems like forcing 99% of the users to use >>> generics because 1% of use cases might need them. But that's beside >>> the point - generics do not solve the problem I was talking about. >>> Also, in my experience, having f-bounded type variables in >>> hierarchies works very well when you have one top class and a single >>> level of leaves (which are all peers). It works much less when you >>> have to start defining sub-hierarchies in the leaves - because >>> either the intermediate nodes are conscious about the type variables >>> and leave them open (leading to very verbose and borderline >>> uncomprehensible generic declarations), or they fix the type >>> variables, in which case the leaves will not take advantage of the >>> f-bound, and you'll be back in no-generic-land. >>> >>> >>>> >>>> All of the basic layout types should be interfaces, not classes >>>> IMO. Basic implementations could be put in a non-exported package. >>>> Users can get a basic implementation from MemoryLayout static >>>> methods, as they do now. >>> Again, this seems a bit of a shallow comment. We can turn layouts >>> from interface to classes in 2 minutes, by doing a targeted >>> refactoring. But again, whether classes or interfaces, the problem I >>> pointed out is still there and is the one we'd need to solve to be >>> able to let clients to subclass layouts freely. >>>> >>>> >>>> I don't think what I'm proposing could be done with static >>>> decorator methods. The information being added as attributes >>>> include MethodHandles for the class's constructor, e.g. a >>>> constructor MethodHandle for a NativeInteger class, something that >>>> specific can only be done at the class level I think. >>> >>> Well, the original proposal was to add a bunch of methods: >>> >>> * MemoryLayout::isAbstract >>> * MemroyLayout::asAbstract >>> * MemoryLayout::unfilledAttributes >>> >>> If we have layout attributes (like we do in today's API), there is >>> no need for these methods to _be_ in MemoryLayout. They can be >>> static methods taking a layout, defined wherever you want. Just use >>> a special name to encode the attribute names - e.g. "abstract/foo" - >>> then: >>> >>> * isAbstract --> does the layout have any attribute whose name >>> starts with "abstract/" which are set to null? >>> * asAbstract --> encode the attribute names to use the "abstract/" >>> prefix >>> * unfilledAttributes -> get all the attributes whose name start with >>> "abstract/" and return those that have no value set >>> >>> Maurizio >>> >>> >>> >>> From youngty1997 at gmail.com Thu Aug 12 18:49:14 2021 From: youngty1997 at gmail.com (Ty Young) Date: Thu, 12 Aug 2021 13:49:14 -0500 Subject: abstract layouts In-Reply-To: <3ff74eae-b010-c6ca-7799-8e2a76bdc2ec@oracle.com> References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> <3ff74eae-b010-c6ca-7799-8e2a76bdc2ec@oracle.com> Message-ID: My understanding is that if: -XX:+UnlockExperimentalVMOptions -XX:+TrustFinalNonStaticFields are set then non-static final fields are optimized. Is that not true? Anyway, I don't want to hear anything about what I'm doing being "problematic" when the whole reason I'm doing what I'm doing is because of issues with FMA/FFI API. If you don't like it then open up layouts, otherwise I really don't want to hear it. It was well known that attributes were going to be used(and was even encouraged) for this purpose so I have no clue why all of a sudden it's a bad idea in your mind. I knew it was less optimal idea well over a year ago, but it's not like I have the power to change it. On 8/12/21 1:27 PM, Maurizio Cimadamore wrote: > I think what you are trying to do is problematic. > > You have NativeInteger, and NativeInteger has a static layout. You > want to attach other static information (method handles). The > information has to be _static_ if you want to have any chance of the > JVM to optimize all that. > > But, with attributes, you are storing the MHs in a map - so, not > static. Even if you could declare your own layout class, storing the > method handles in final fields of the custom layout won't help (if the > final fields aren't trusted by the JVM, which they are not, except for > special provisions for some JDK packages). > > In other words, I don't see a path (besides spinning a new > NativePointer64 instance which is exclusively dedicated to > NativeInteger) by which you can get performance when accessing the > NativeInteger from the NativePointer64. > > But, if you don't care much about inlining/performance, then maybe you > can just use a ClassValue and store all the MethodHandles related to > NativeInteger in there? That is going to provide similar (if not > better) performance than those with layout attributes. > > I guess what I'm trying to say is that, unless I misunderstood your > example, it seems another case of "layout attributes are attractive > nuisance" - e.g. once they are there, one is tempted to just inject > stuff into layouts, but you already have custom classes wrapping > layouts, so why don't you associate the (static) metadata with the > classes, rather than the layouts? > > Maurizio > > On 12/08/2021 19:00, Ty Young wrote: >> Because it's needed for a NativePointer64 type: >> >> >> NativePointer64 intPointer = new >> NativePointer64<>(NativeInteger.LAYOUT); >> >> >> NativeInteger has 3 MethodHandles embedded into it, one which accepts >> nothing(safe), one which accepts a MemorySegment(unsafe), and one >> which accepts a MemoryAddress(unsafe, what is used by >> NativePointer64). NativePointer then takes the given layout, embeds >> it inside of itself, then reads it later when getting the >> dereferenced value. Doing this generates garbage because of Optional >> since the NativePointer64.LAYOUT needs to have NativeInteger embedded >> inside of it, which then needs to be resolved according to a type >> attribute, e.g. enum, pointer, number. It's wasteful(in terms of >> memory) and slow(have to go through a tree of static methods to >> resolve). Layouts being opened up would help. >> >> >> >> On 8/12/21 8:39 AM, Maurizio Cimadamore wrote: >>> May I suggest, for the benefit of the conversation, that instead of >>> focusing on the _hows_ we focus instead on the _whys_ ? >>> >>> E.g. "I'd like to decorate a layout with information X and Y, >>> because I use these information in order to do Z" >>> >>> In other words, by having a full picture of what you are trying to >>> do we might understand better what the requirements really are. >>> >>> Thanks >>> Maurizio >>> >>> On 12/08/2021 14:12, Maurizio Cimadamore wrote: >>>> >>>> On 12/08/2021 12:24, Ty Young wrote: >>>>> I'd very much like it if layouts were opened up and non-sealed. It >>>>> would allow for less wasteful(no Optional) and faster code(no >>>>> HashMap, things can be final). >>>> I agree that would work better. >>>> >>>>> It also would be nice if GroupLayout was removed and replaced with >>>>> StructLayout and UnionLayout, or used as a shared/common >>>>> interface/class for them. >>>> That is largely orthogonal and irrelevant in the discussion we're >>>> having here. >>>>> >>>>> >>>>> I feel like the with* issues could be fixed with generics, e.g.: >>>>> >>>>> >>>>> public interface MemoryLayout> { >>>>> >>>>> ??? public L withName(String name); >>>>> >>>>> } >>>> >>>> I don't think this solves much - as you will have, likely: >>>> >>>> ValueLayout extends MemoryLayout >>>> >>>> At which point you're back to square one - if you define `TyLayout >>>> extends ValueLayout`, there's nothing forcing you to override >>>> withName. >>>> >>>> I did experiments adding generic types to all layouts two years ago >>>> and honestly, it doesn't work very well. About 99% of the times, >>>> the most helpful thing the client has to say about a layout is >>>> MemoryLayout, which seems like forcing 99% of the users to use >>>> generics because 1% of use cases might need them. But that's beside >>>> the point - generics do not solve the problem I was talking about. >>>> Also, in my experience, having f-bounded type variables in >>>> hierarchies works very well when you have one top class and a >>>> single level of leaves (which are all peers). It works much less >>>> when you have to start defining sub-hierarchies in the leaves - >>>> because either the intermediate nodes are conscious about the type >>>> variables and leave them open (leading to very verbose and >>>> borderline uncomprehensible generic declarations), or they fix the >>>> type variables, in which case the leaves will not take advantage of >>>> the f-bound, and you'll be back in no-generic-land. >>>> >>>> >>>>> >>>>> All of the basic layout types should be interfaces, not classes >>>>> IMO. Basic implementations could be put in a non-exported package. >>>>> Users can get a basic implementation from MemoryLayout static >>>>> methods, as they do now. >>>> Again, this seems a bit of a shallow comment. We can turn layouts >>>> from interface to classes in 2 minutes, by doing a targeted >>>> refactoring. But again, whether classes or interfaces, the problem >>>> I pointed out is still there and is the one we'd need to solve to >>>> be able to let clients to subclass layouts freely. >>>>> >>>>> >>>>> I don't think what I'm proposing could be done with static >>>>> decorator methods. The information being added as attributes >>>>> include MethodHandles for the class's constructor, e.g. a >>>>> constructor MethodHandle for a NativeInteger class, something that >>>>> specific can only be done at the class level I think. >>>> >>>> Well, the original proposal was to add a bunch of methods: >>>> >>>> * MemoryLayout::isAbstract >>>> * MemroyLayout::asAbstract >>>> * MemoryLayout::unfilledAttributes >>>> >>>> If we have layout attributes (like we do in today's API), there is >>>> no need for these methods to _be_ in MemoryLayout. They can be >>>> static methods taking a layout, defined wherever you want. Just use >>>> a special name to encode the attribute names - e.g. "abstract/foo" >>>> - then: >>>> >>>> * isAbstract --> does the layout have any attribute whose name >>>> starts with "abstract/" which are set to null? >>>> * asAbstract --> encode the attribute names to use the "abstract/" >>>> prefix >>>> * unfilledAttributes -> get all the attributes whose name start >>>> with "abstract/" and return those that have no value set >>>> >>>> Maurizio >>>> >>>> >>>> >>>> From jbhateja at openjdk.java.net Thu Aug 12 18:55:50 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 12 Aug 2021 18:55:50 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: <3hf7DtD-cnZiTaG406shF214ViPu_a4OCLb2ykCaBkc=.22a0f103-be7a-4349-85ea-e465646413b9@github.com> On Thu, 12 Aug 2021 17:48:40 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: >> >> - 8270349: Review comments resolution. >> - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. > > src/hotspot/cpu/x86/c2_MacroAssembler_x86.cpp line 3915: > >> 3913: evand(eType, dst, mask, src1, src2, merge, vlen_enc); break; >> 3914: case Op_AbsVD: >> 3915: case Op_MulVB: > > Why specifically only AbsVD and MulVB are called out here? Will remove them. > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8212: > >> 8210: case T_BOOLEAN: >> 8211: case T_BYTE: >> 8212: kandbl(dst, src1, src2); > > Is the type here the vector element type? Is so, for byte vector we need kandql. For short kanddl. For int kandwl, For long kandbl. No its not vector type. From the instruction side always T_LONG basic type is passed. TypeVectMask is vector of booleans. We can use vector length to emit shorter instructions , but efficiency wise its wont be different to doing an operation over entire opmask register. > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8236: > >> 8234: case T_BOOLEAN: >> 8235: case T_BYTE: >> 8236: korbl(dst, src1, src2); > > Is the type here the vector element type? Is so, for byte vector we need korql. For short kordl. For int korwl, For long korbl. same as above > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8260: > >> 8258: case T_BOOLEAN: >> 8259: case T_BYTE: >> 8260: kxorbl(dst, src1, src2); > > Is the type here the vector element type? Is so, for byte vector we need kxorql. For short kxordl. For int kxorwl, For long kxorbl. same as above > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8384: > >> 8382: switch(type) { >> 8383: case T_INT: >> 8384: Assembler::evpord(dst, mask, nds, src, merge, vector_len); break; > > What about subword types here for or, xor, and? Skipped for now through match_rule_supported_vector_mask, since blend vector operation may be beneficial in that case instead of doing any special handling for sub-words. > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8425: > >> 8423: } >> 8424: >> 8425: void MacroAssembler::evpperm(BasicType type, XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { > > This should be moved next to the register variant of the evpperm. Will do this change. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From mail at smogura.eu Thu Aug 12 20:37:40 2021 From: mail at smogura.eu (=?windows-1250?Q?Rados=B3aw_Smogura?=) Date: Thu, 12 Aug 2021 20:37:40 +0000 Subject: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> , <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com>, Message-ID: Vladimir, Paul, I hope you have a good day. I wonder what do you think about something like this [1] - it's virtually small single class change This change tries to find unique memory for load node. I implemented it as separate phase, as optimization may not run in Ideal method. I think it's ligher than phi split out. Loops has been transformed. RCE started. Kind regards, Rado [1] - https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 [2] - https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation (full test case) ________________________________ From: Rados?aw Smogura on behalf of Rados?aw Smogura Sent: Friday, August 6, 2021 22:43 To: Rados?aw Smogura ; Paul Sandoz ; Vladimir Ivanov Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node Hi all, Now when I checked it again. it works as expected, and it's the same code. In draft code I check if the buffer is direct by using type checking to unswitch loop, as unswitching over ByteBuffer.hb did not work (the graph was quite similar). However, I thought that this unswitch actually helped to build correct loops, and any kind of improvement around it would be rather for the purpose of better-looking code. But it looks like that sometimes (but only sometimes) loop still can not be correctly built, or maybe the full optimization kicks in very, very late. Kind regards, Rado ________________________________ From: panama-dev on behalf of Rados?aw Smogura Sent: Friday, August 6, 2021 20:22 To: Paul Sandoz Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node Yes, The normal case looks, good. It's all about polluted cases [1] BR, Rado [1] https://github.com/openjdk/panama-vector/pull/109 [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109] (Draft) Perofrmance improvements for polluted cases by rsmogura ? Pull Request #109 ? openjdk/panama-vector Hi all, I would like to submit this piece of work, for byte buffers and polluted cases. It resolves some performance issues related to mem barriers when in scope are both on- and off-heap buffer. T... github.com [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector] Comparing openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? openjdk/panama-vector Panama vector. Contribute to openjdk/panama-vector development by creating an account on GitHub. github.com ________________________________ From: Paul Sandoz Sent: Friday, August 6, 2021 20:04 To: Rados?aw Smogura Cc: panama-dev at openjdk.java.net Subject: Re: Issues with loop unrolling: better pinned node I am confused as to the case under test. In your initial email of this thread were you also referring implicitly to polluted cases? Paul. > On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: > > Hi Paul, > > There's a performance improvement, but. I still can't unroll polluted cases (I cherry-picked loop unrolling). The graph still has few nodes taking buffer limit from phi, and on IR I don't see vectors nodes cascading. > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" JOBS=12 > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 30 40.472 ? 1.055 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 30 79.251 ? 0.786 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 30 83.627 ? 2.140 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 30 85.561 ? 1.156 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm" > Benchmark (size) Mode Cnt Score Error Units > ByteBufferVectorAccess.pollutedBuffers2 1024 avgt 10 49.326 ? 0.843 ns/op > ByteBufferVectorAccess.pollutedBuffers2:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers3 1024 avgt 10 100.291 ? 1.271 ns/op > ByteBufferVectorAccess.pollutedBuffers3:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers4 1024 avgt 10 101.494 ? 1.027 ns/op > ByteBufferVectorAccess.pollutedBuffers4:?asm 1024 avgt NaN --- > ByteBufferVectorAccess.pollutedBuffers5 1024 avgt 10 94.606 ? 1.522 ns/op > ByteBufferVectorAccess.pollutedBuffers5:?asm 1024 avgt NaN > > > BR, > Rado > From: Paul Sandoz > Sent: Friday, August 6, 2021 18:04 > To: Rados?aw Smogura > Cc: panama-dev at openjdk.java.net > Subject: Re: Issues with loop unrolling: better pinned node > > Hi Rado, > > It?s good you are looking at the IR > > Out of curiosity, what happens if you turn off bounds checking [*]? > > Paul. > > [*] > -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 > > > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: > > > > Hi all, > > > > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. > > > > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? > > > > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > > bb_issues.png > > drive.google.com > > > > > > And sample code > > > > protected void copyMemory(ByteBuffer in, ByteBuffer out) { > > var limit = SPECIES.loopBound(in.limit()); > > for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { > > final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); > > v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); > > } > > } > > > > Kind regards, > > Rado From maurizio.cimadamore at oracle.com Thu Aug 12 21:32:23 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Thu, 12 Aug 2021 22:32:23 +0100 Subject: abstract layouts In-Reply-To: References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> <3ff74eae-b010-c6ca-7799-8e2a76bdc2ec@oracle.com> Message-ID: On 12/08/2021 19:49, Ty Young wrote: > My understanding is that if: > > > -XX:+UnlockExperimentalVMOptions > -XX:+TrustFinalNonStaticFields > > > are set then non-static final fields are optimized. Is that not true? Well, that's not my idea of "supported" - but ok. > > > Anyway, I don't want to hear anything about what I'm doing being > "problematic" when the whole reason I'm doing what I'm doing is > because of issues with FMA/FFI API. If you don't like it then open up > layouts, otherwise I really don't want to hear it. It was well known > that attributes were going to be used(and was even encouraged) for > this purpose so I have no clue why all of a sudden it's a bad idea in > your mind. I knew it was less optimal idea well over a year ago, but > it's not like I have the power to change it. There are many things that are wrong with this statement. But let me back off. In general, when the design of an API evolves, one learn more things. The main reason why layout attributes were added in the first place was (solely) to support metadata which would help the linker going about its business. Then, since we were there, we decided to open up the machinery. I think it is legitimate, after some time, to ask the question of who's using layout attributes (apart from the linker itself) and why. If it turns out that there's little uses for the attribute API, and that the few uses there are can be done in other ways, then I think it is a legitimate question to ask whether we want to expose layouts attributes in the final API. As for "why not just use inheritance" which has been brought up other times too, I gave an explanation earlier today; having immutable classes with withers, and have them also extensible via subclassing is not something that is very common. It's either one or the other, typically. So, it's not like there's an obvious solution to this problem which we are failing for some reason to see - it's either: 1. keep attributes as they are 2. drop attributes and allow inheritance (but with the 99% chance of having broken subclasses) 3. drop attributes period I don't think (2) is such a great place to be. So it's either (1) or (3). Your use case doesn't shift the balance one way or another, as you can do same things even w/o layout attributes, sorry. But maybe somebody else has a different use case, in which case I'd be interested to hear. (For the records, when thinking about (3) I also did an exercise and I went back and reimplemented jextract - which uses 4-5 different layout attributes. Turns out none of them was _really_ needed and in fact the code ended up cleaner w/o them). Maurizio > > > > On 8/12/21 1:27 PM, Maurizio Cimadamore wrote: >> I think what you are trying to do is problematic. >> >> You have NativeInteger, and NativeInteger has a static layout. You >> want to attach other static information (method handles). The >> information has to be _static_ if you want to have any chance of the >> JVM to optimize all that. >> >> But, with attributes, you are storing the MHs in a map - so, not >> static. Even if you could declare your own layout class, storing the >> method handles in final fields of the custom layout won't help (if >> the final fields aren't trusted by the JVM, which they are not, >> except for special provisions for some JDK packages). >> >> In other words, I don't see a path (besides spinning a new >> NativePointer64 instance which is exclusively dedicated to >> NativeInteger) by which you can get performance when accessing the >> NativeInteger from the NativePointer64. >> >> But, if you don't care much about inlining/performance, then maybe >> you can just use a ClassValue and store all the MethodHandles related >> to NativeInteger in there? That is going to provide similar (if not >> better) performance than those with layout attributes. >> >> I guess what I'm trying to say is that, unless I misunderstood your >> example, it seems another case of "layout attributes are attractive >> nuisance" - e.g. once they are there, one is tempted to just inject >> stuff into layouts, but you already have custom classes wrapping >> layouts, so why don't you associate the (static) metadata with the >> classes, rather than the layouts? >> >> Maurizio >> >> On 12/08/2021 19:00, Ty Young wrote: >>> Because it's needed for a NativePointer64 type: >>> >>> >>> NativePointer64 intPointer = new >>> NativePointer64<>(NativeInteger.LAYOUT); >>> >>> >>> NativeInteger has 3 MethodHandles embedded into it, one which >>> accepts nothing(safe), one which accepts a MemorySegment(unsafe), >>> and one which accepts a MemoryAddress(unsafe, what is used by >>> NativePointer64). NativePointer then takes the given layout, embeds >>> it inside of itself, then reads it later when getting the >>> dereferenced value. Doing this generates garbage because of Optional >>> since the NativePointer64.LAYOUT needs to have NativeInteger >>> embedded inside of it, which then needs to be resolved according to >>> a type attribute, e.g. enum, pointer, number. It's wasteful(in terms >>> of memory) and slow(have to go through a tree of static methods to >>> resolve). Layouts being opened up would help. >>> >>> >>> >>> On 8/12/21 8:39 AM, Maurizio Cimadamore wrote: >>>> May I suggest, for the benefit of the conversation, that instead of >>>> focusing on the _hows_ we focus instead on the _whys_ ? >>>> >>>> E.g. "I'd like to decorate a layout with information X and Y, >>>> because I use these information in order to do Z" >>>> >>>> In other words, by having a full picture of what you are trying to >>>> do we might understand better what the requirements really are. >>>> >>>> Thanks >>>> Maurizio >>>> >>>> On 12/08/2021 14:12, Maurizio Cimadamore wrote: >>>>> >>>>> On 12/08/2021 12:24, Ty Young wrote: >>>>>> I'd very much like it if layouts were opened up and non-sealed. >>>>>> It would allow for less wasteful(no Optional) and faster code(no >>>>>> HashMap, things can be final). >>>>> I agree that would work better. >>>>> >>>>>> It also would be nice if GroupLayout was removed and replaced >>>>>> with StructLayout and UnionLayout, or used as a shared/common >>>>>> interface/class for them. >>>>> That is largely orthogonal and irrelevant in the discussion we're >>>>> having here. >>>>>> >>>>>> >>>>>> I feel like the with* issues could be fixed with generics, e.g.: >>>>>> >>>>>> >>>>>> public interface MemoryLayout> { >>>>>> >>>>>> ??? public L withName(String name); >>>>>> >>>>>> } >>>>> >>>>> I don't think this solves much - as you will have, likely: >>>>> >>>>> ValueLayout extends MemoryLayout >>>>> >>>>> At which point you're back to square one - if you define `TyLayout >>>>> extends ValueLayout`, there's nothing forcing you to override >>>>> withName. >>>>> >>>>> I did experiments adding generic types to all layouts two years >>>>> ago and honestly, it doesn't work very well. About 99% of the >>>>> times, the most helpful thing the client has to say about a layout >>>>> is MemoryLayout, which seems like forcing 99% of the users to >>>>> use generics because 1% of use cases might need them. But that's >>>>> beside the point - generics do not solve the problem I was talking >>>>> about. Also, in my experience, having f-bounded type variables in >>>>> hierarchies works very well when you have one top class and a >>>>> single level of leaves (which are all peers). It works much less >>>>> when you have to start defining sub-hierarchies in the leaves - >>>>> because either the intermediate nodes are conscious about the type >>>>> variables and leave them open (leading to very verbose and >>>>> borderline uncomprehensible generic declarations), or they fix the >>>>> type variables, in which case the leaves will not take advantage >>>>> of the f-bound, and you'll be back in no-generic-land. >>>>> >>>>> >>>>>> >>>>>> All of the basic layout types should be interfaces, not classes >>>>>> IMO. Basic implementations could be put in a non-exported >>>>>> package. Users can get a basic implementation from MemoryLayout >>>>>> static methods, as they do now. >>>>> Again, this seems a bit of a shallow comment. We can turn layouts >>>>> from interface to classes in 2 minutes, by doing a targeted >>>>> refactoring. But again, whether classes or interfaces, the problem >>>>> I pointed out is still there and is the one we'd need to solve to >>>>> be able to let clients to subclass layouts freely. >>>>>> >>>>>> >>>>>> I don't think what I'm proposing could be done with static >>>>>> decorator methods. The information being added as attributes >>>>>> include MethodHandles for the class's constructor, e.g. a >>>>>> constructor MethodHandle for a NativeInteger class, something >>>>>> that specific can only be done at the class level I think. >>>>> >>>>> Well, the original proposal was to add a bunch of methods: >>>>> >>>>> * MemoryLayout::isAbstract >>>>> * MemroyLayout::asAbstract >>>>> * MemoryLayout::unfilledAttributes >>>>> >>>>> If we have layout attributes (like we do in today's API), there is >>>>> no need for these methods to _be_ in MemoryLayout. They can be >>>>> static methods taking a layout, defined wherever you want. Just >>>>> use a special name to encode the attribute names - e.g. >>>>> "abstract/foo" - then: >>>>> >>>>> * isAbstract --> does the layout have any attribute whose name >>>>> starts with "abstract/" which are set to null? >>>>> * asAbstract --> encode the attribute names to use the "abstract/" >>>>> prefix >>>>> * unfilledAttributes -> get all the attributes whose name start >>>>> with "abstract/" and return those that have no value set >>>>> >>>>> Maurizio >>>>> >>>>> >>>>> >>>>> From mark.reinhold at oracle.com Thu Aug 12 21:45:38 2021 From: mark.reinhold at oracle.com (mark.reinhold at oracle.com) Date: Thu, 12 Aug 2021 14:45:38 -0700 (PDT) Subject: New candidate JEP: 417: Vector API (Third Incubator) Message-ID: <20210812214538.EA2C93EEAA5@eggemoggin.niobe.net> https://openjdk.java.net/jeps/417 Summary: Introduce an API to express vector computations that reliably compile at runtime to optimal vector instructions on supported CPU architectures, thus achieving performance superior to equivalent scalar computations. - Mark From youngty1997 at gmail.com Fri Aug 13 00:28:42 2021 From: youngty1997 at gmail.com (Ty Young) Date: Thu, 12 Aug 2021 19:28:42 -0500 Subject: abstract layouts In-Reply-To: References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> <3ff74eae-b010-c6ca-7799-8e2a76bdc2ec@oracle.com> Message-ID: On 8/12/21 4:32 PM, Maurizio Cimadamore wrote: > > On 12/08/2021 19:49, Ty Young wrote: >> My understanding is that if: >> >> >> -XX:+UnlockExperimentalVMOptions >> -XX:+TrustFinalNonStaticFields >> >> >> are set then non-static final fields are optimized. Is that not true? > Well, that's not my idea of "supported" - but ok. >> >> >> Anyway, I don't want to hear anything about what I'm doing being >> "problematic" when the whole reason I'm doing what I'm doing is >> because of issues with FMA/FFI API. If you don't like it then open up >> layouts, otherwise I really don't want to hear it. It was well known >> that attributes were going to be used(and was even encouraged) for >> this purpose so I have no clue why all of a sudden it's a bad idea in >> your mind. I knew it was less optimal idea well over a year ago, but >> it's not like I have the power to change it. > > There are many things that are wrong with this statement. But let me > back off. > > > In general, when the design of an API evolves, one learn more things. > The main reason why layout attributes were added in the first place > was (solely) to support metadata which would help the linker going > about its business. Then, since we were there, we decided to open up > the machinery. > > I think it is legitimate, after some time, to ask the question of > who's using layout attributes (apart from the linker itself) and why. > If it turns out that there's little uses for the attribute API, and > that the few uses there are can be done in other ways, then I think it > is a legitimate question to ask whether we want to expose layouts > attributes in the final API. > > As for "why not just use inheritance" which has been brought up other > times too, I gave an explanation earlier today; having immutable > classes with withers, and have them also extensible via subclassing is > not something that is very common. It's either one or the other, > typically. So, it's not like there's an obvious solution to this > problem which we are failing for some reason to see - it's either: > > 1. keep attributes as they are > 2. drop attributes and allow inheritance (but with the 99% chance of > having broken subclasses) > 3. drop attributes period > > I don't think (2) is such a great place to be. So it's either (1) or > (3). Your use case doesn't shift the balance one way or another, as > you can do same things even w/o layout attributes, sorry. But maybe > somebody else has a different use case, in which case I'd be > interested to hear. The gaslighting is strong in this statement. You have never up to this point even indicated that attributes may be removed. In fact, up to this point, you have at the very least implied that attributes were going to be a thing for higher-level APIs that need decorating layouts in order to work, never that it was solely for linker that I can remember. You yourself claimed that higher level APIs would be supported, knowing that layouts and their attributes were used in this exact same way as it is here because the source code was public at the time. And to add insult to injury you're suggesting that there is some magical way in which I can support all use cases by... doing what? Creating explicit dereference types for every standard type? How deep should I go with that? 1 explicit dereference class for each type? 2? 3? 4? 10? For someone who refuses to add 3 tiny and simple methods and a small API change and doesn't seem to want to breakout GroupLayout into StructLayout and UnionLayout, that suggestion is a bit ironic. I've probably used Panama since the beginning, have promoted it, have one of the few real-world actual applications that use it, and have reported bugs that somehow people working on Panama full time weren't able to find *because* I have an actual application that uses Panama and not just a few classes that are modified from using Unsafe/ByteBuffers, which seems to be what everyone else is doing and **cannot** be compared to my projects. To claim that my use case is somehow not valid and gaslight out of such a small sample side(1/1, AFAIK) sure is a slap in the face. Seems to be a trend with the death of the system wide JRE(not really, there are JREs and programs that need them but we'll pretend otherwise) and the deprecation of SecurityManager,? so I guess at least you're being consistent. Is there even anyone else using Project Panama in a real-world GUI application or something? Even internally at Oracle? If not, FFI support should be removed too. Since so few people are using it, It's too much API baggage for too little return! If a sample size of 1 outside of Oracle isn't enough to keep attributes then surely it's not enough to keep FFI support, right? I mean, JNI/JNA/GraalVM/other projects exist already, why complicate things further? It's such a corner-case and not worth supporting. > > (For the records, when thinking about (3) I also did an exercise and I > went back and reimplemented jextract - which uses 4-5 different layout > attributes. Turns out none of them was _really_ needed and in fact the > code ended up cleaner w/o them). Great! Don't remember it ever being said it was explicitly for jextract until... now? Over a year(2? So long ago!) later? > > Maurizio > > >> >> >> >> On 8/12/21 1:27 PM, Maurizio Cimadamore wrote: >>> I think what you are trying to do is problematic. >>> >>> You have NativeInteger, and NativeInteger has a static layout. You >>> want to attach other static information (method handles). The >>> information has to be _static_ if you want to have any chance of the >>> JVM to optimize all that. >>> >>> But, with attributes, you are storing the MHs in a map - so, not >>> static. Even if you could declare your own layout class, storing the >>> method handles in final fields of the custom layout won't help (if >>> the final fields aren't trusted by the JVM, which they are not, >>> except for special provisions for some JDK packages). >>> >>> In other words, I don't see a path (besides spinning a new >>> NativePointer64 instance which is exclusively dedicated to >>> NativeInteger) by which you can get performance when accessing the >>> NativeInteger from the NativePointer64. >>> >>> But, if you don't care much about inlining/performance, then maybe >>> you can just use a ClassValue and store all the MethodHandles >>> related to NativeInteger in there? That is going to provide similar >>> (if not better) performance than those with layout attributes. >>> >>> I guess what I'm trying to say is that, unless I misunderstood your >>> example, it seems another case of "layout attributes are attractive >>> nuisance" - e.g. once they are there, one is tempted to just inject >>> stuff into layouts, but you already have custom classes wrapping >>> layouts, so why don't you associate the (static) metadata with the >>> classes, rather than the layouts? >>> >>> Maurizio >>> >>> On 12/08/2021 19:00, Ty Young wrote: >>>> Because it's needed for a NativePointer64 type: >>>> >>>> >>>> NativePointer64 intPointer = new >>>> NativePointer64<>(NativeInteger.LAYOUT); >>>> >>>> >>>> NativeInteger has 3 MethodHandles embedded into it, one which >>>> accepts nothing(safe), one which accepts a MemorySegment(unsafe), >>>> and one which accepts a MemoryAddress(unsafe, what is used by >>>> NativePointer64). NativePointer then takes the given layout, embeds >>>> it inside of itself, then reads it later when getting the >>>> dereferenced value. Doing this generates garbage because of >>>> Optional since the NativePointer64.LAYOUT needs to have >>>> NativeInteger embedded inside of it, which then needs to be >>>> resolved according to a type attribute, e.g. enum, pointer, number. >>>> It's wasteful(in terms of memory) and slow(have to go through a >>>> tree of static methods to resolve). Layouts being opened up would >>>> help. >>>> >>>> >>>> >>>> On 8/12/21 8:39 AM, Maurizio Cimadamore wrote: >>>>> May I suggest, for the benefit of the conversation, that instead >>>>> of focusing on the _hows_ we focus instead on the _whys_ ? >>>>> >>>>> E.g. "I'd like to decorate a layout with information X and Y, >>>>> because I use these information in order to do Z" >>>>> >>>>> In other words, by having a full picture of what you are trying to >>>>> do we might understand better what the requirements really are. >>>>> >>>>> Thanks >>>>> Maurizio >>>>> >>>>> On 12/08/2021 14:12, Maurizio Cimadamore wrote: >>>>>> >>>>>> On 12/08/2021 12:24, Ty Young wrote: >>>>>>> I'd very much like it if layouts were opened up and non-sealed. >>>>>>> It would allow for less wasteful(no Optional) and faster code(no >>>>>>> HashMap, things can be final). >>>>>> I agree that would work better. >>>>>> >>>>>>> It also would be nice if GroupLayout was removed and replaced >>>>>>> with StructLayout and UnionLayout, or used as a shared/common >>>>>>> interface/class for them. >>>>>> That is largely orthogonal and irrelevant in the discussion we're >>>>>> having here. >>>>>>> >>>>>>> >>>>>>> I feel like the with* issues could be fixed with generics, e.g.: >>>>>>> >>>>>>> >>>>>>> public interface MemoryLayout> { >>>>>>> >>>>>>> ??? public L withName(String name); >>>>>>> >>>>>>> } >>>>>> >>>>>> I don't think this solves much - as you will have, likely: >>>>>> >>>>>> ValueLayout extends MemoryLayout >>>>>> >>>>>> At which point you're back to square one - if you define >>>>>> `TyLayout extends ValueLayout`, there's nothing forcing you to >>>>>> override withName. >>>>>> >>>>>> I did experiments adding generic types to all layouts two years >>>>>> ago and honestly, it doesn't work very well. About 99% of the >>>>>> times, the most helpful thing the client has to say about a >>>>>> layout is MemoryLayout, which seems like forcing 99% of the >>>>>> users to use generics because 1% of use cases might need them. >>>>>> But that's beside the point - generics do not solve the problem I >>>>>> was talking about. Also, in my experience, having f-bounded type >>>>>> variables in hierarchies works very well when you have one top >>>>>> class and a single level of leaves (which are all peers). It >>>>>> works much less when you have to start defining sub-hierarchies >>>>>> in the leaves - because either the intermediate nodes are >>>>>> conscious about the type variables and leave them open (leading >>>>>> to very verbose and borderline uncomprehensible generic >>>>>> declarations), or they fix the type variables, in which case the >>>>>> leaves will not take advantage of the f-bound, and you'll be back >>>>>> in no-generic-land. >>>>>> >>>>>> >>>>>>> >>>>>>> All of the basic layout types should be interfaces, not classes >>>>>>> IMO. Basic implementations could be put in a non-exported >>>>>>> package. Users can get a basic implementation from MemoryLayout >>>>>>> static methods, as they do now. >>>>>> Again, this seems a bit of a shallow comment. We can turn layouts >>>>>> from interface to classes in 2 minutes, by doing a targeted >>>>>> refactoring. But again, whether classes or interfaces, the >>>>>> problem I pointed out is still there and is the one we'd need to >>>>>> solve to be able to let clients to subclass layouts freely. >>>>>>> >>>>>>> >>>>>>> I don't think what I'm proposing could be done with static >>>>>>> decorator methods. The information being added as attributes >>>>>>> include MethodHandles for the class's constructor, e.g. a >>>>>>> constructor MethodHandle for a NativeInteger class, something >>>>>>> that specific can only be done at the class level I think. >>>>>> >>>>>> Well, the original proposal was to add a bunch of methods: >>>>>> >>>>>> * MemoryLayout::isAbstract >>>>>> * MemroyLayout::asAbstract >>>>>> * MemoryLayout::unfilledAttributes >>>>>> >>>>>> If we have layout attributes (like we do in today's API), there >>>>>> is no need for these methods to _be_ in MemoryLayout. They can be >>>>>> static methods taking a layout, defined wherever you want. Just >>>>>> use a special name to encode the attribute names - e.g. >>>>>> "abstract/foo" - then: >>>>>> >>>>>> * isAbstract --> does the layout have any attribute whose name >>>>>> starts with "abstract/" which are set to null? >>>>>> * asAbstract --> encode the attribute names to use the >>>>>> "abstract/" prefix >>>>>> * unfilledAttributes -> get all the attributes whose name start >>>>>> with "abstract/" and return those that have no value set >>>>>> >>>>>> Maurizio >>>>>> >>>>>> >>>>>> >>>>>> From sviswanathan at openjdk.java.net Fri Aug 13 00:30:36 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Fri, 13 Aug 2021 00:30:36 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: <3hf7DtD-cnZiTaG406shF214ViPu_a4OCLb2ykCaBkc=.22a0f103-be7a-4349-85ea-e465646413b9@github.com> References: <3hf7DtD-cnZiTaG406shF214ViPu_a4OCLb2ykCaBkc=.22a0f103-be7a-4349-85ea-e465646413b9@github.com> Message-ID: On Thu, 12 Aug 2021 18:49:21 GMT, Jatin Bhateja wrote: >> src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8212: >> >>> 8210: case T_BOOLEAN: >>> 8211: case T_BYTE: >>> 8212: kandbl(dst, src1, src2); >> >> Is the type here the vector element type? Is so, for byte vector we need kandql. For short kanddl. For int kandwl, For long kandbl. > > No its not vector type. From the instruction side always T_LONG basic type is passed. TypeVectMask is vector of booleans. We can use vector length to emit shorter instructions , but efficiency wise its wont be different to doing an operation over entire opmask register. "uint masklen" would be a better argument instead of "BasicType type". Similar to your other mask operation instructions like alltrue, anytrue, kortest below. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Fri Aug 13 00:30:39 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Fri, 13 Aug 2021 00:30:39 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Thu, 12 Aug 2021 12:17:50 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: > > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8449: > 8447: kshiftrbl(kscratch, kscratch, 8-masklen); > 8448: kandbl(kscratch, kscratch, src); > 8449: ktestbl(kscratch, kscratch); This could be replaced by: ktestbl(kscratch, src); src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8464: > 8462: kshiftlbl(kscratch, kscratch, masklen); > 8463: korbl(kscratch, kscratch, src); > 8464: kortestbl(kscratch, kscratch); This could be replaced by a single instruction: kortestbl(kscratch, src); src/hotspot/share/opto/compile.cpp line 2367: > 2365: case Op_AndV: > 2366: case Op_OrV: > 2367: return n->req() == 2; Why the check on #of inputs here? And and Or are always binary isnt it? src/hotspot/share/opto/vector.cpp line 344: > 342: // spilled to a vector though a VectorStoreMaskOperation before actual StoreVector > 343: // operation to vector payload field. > 344: if (is_mask && (value->bottom_type()->isa_vectmask() || bt != T_BOOLEAN)) { What happens on platforms that dont support predicate registers. Do we generate extra VectorStoreMask instruction now? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Fri Aug 13 00:47:39 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Fri, 13 Aug 2021 00:47:39 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: <3UUGcNe-zMkLSFLy7QNDlmC9cL_oeu0z5KAlEs1kTIA=.30a2cf93-58ae-4134-83c7-39d15525fbd2@github.com> On Thu, 12 Aug 2021 12:17:50 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: > > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. src/hotspot/cpu/x86/x86.ad line 3464: > 3462: %} > 3463: ins_pipe( pipe_slow ); > 3464: %} This is overriding the instructs reinterpret_expand* and reitnerpret_shrink. So doesnt look correct. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From maurizio.cimadamore at oracle.com Fri Aug 13 00:59:08 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Fri, 13 Aug 2021 01:59:08 +0100 Subject: abstract layouts In-Reply-To: References: <21f6e2a3-2241-b259-ec0d-832141813cd2@gmail.com> <45281a9c-4f62-3214-33b3-07b93c3b1e05@oracle.com> <68b44eba-519d-aa06-0edb-cd681c0fbd60@gmail.com> <9d6e39ad-aa20-8543-12f5-13ee947961a0@oracle.com> <3ff74eae-b010-c6ca-7799-8e2a76bdc2ec@oracle.com> Message-ID: I will not reply to this thread any further. Not only the discussion is not productive, but I find some of the claims offensive, not to me (I can take it :-) ), but to everyone else who has contributed in this mailing list thus far. If this is your idea of "contributing", I think we must live on different planets. Maurizio On 13/08/2021 01:28, Ty Young wrote: > > On 8/12/21 4:32 PM, Maurizio Cimadamore wrote: >> >> On 12/08/2021 19:49, Ty Young wrote: >>> My understanding is that if: >>> >>> >>> -XX:+UnlockExperimentalVMOptions >>> -XX:+TrustFinalNonStaticFields >>> >>> >>> are set then non-static final fields are optimized. Is that not true? >> Well, that's not my idea of "supported" - but ok. >>> >>> >>> Anyway, I don't want to hear anything about what I'm doing being >>> "problematic" when the whole reason I'm doing what I'm doing is >>> because of issues with FMA/FFI API. If you don't like it then open >>> up layouts, otherwise I really don't want to hear it. It was well >>> known that attributes were going to be used(and was even encouraged) >>> for this purpose so I have no clue why all of a sudden it's a bad >>> idea in your mind. I knew it was less optimal idea well over a year >>> ago, but it's not like I have the power to change it. >> >> There are many things that are wrong with this statement. But let me >> back off. >> >> >> In general, when the design of an API evolves, one learn more things. >> The main reason why layout attributes were added in the first place >> was (solely) to support metadata which would help the linker going >> about its business. Then, since we were there, we decided to open up >> the machinery. >> >> I think it is legitimate, after some time, to ask the question of >> who's using layout attributes (apart from the linker itself) and why. >> If it turns out that there's little uses for the attribute API, and >> that the few uses there are can be done in other ways, then I think >> it is a legitimate question to ask whether we want to expose layouts >> attributes in the final API. >> >> As for "why not just use inheritance" which has been brought up other >> times too, I gave an explanation earlier today; having immutable >> classes with withers, and have them also extensible via subclassing >> is not something that is very common. It's either one or the other, >> typically. So, it's not like there's an obvious solution to this >> problem which we are failing for some reason to see - it's either: >> >> 1. keep attributes as they are >> 2. drop attributes and allow inheritance (but with the 99% chance of >> having broken subclasses) >> 3. drop attributes period >> >> I don't think (2) is such a great place to be. So it's either (1) or >> (3). Your use case doesn't shift the balance one way or another, as >> you can do same things even w/o layout attributes, sorry. But maybe >> somebody else has a different use case, in which case I'd be >> interested to hear. > > > The gaslighting is strong in this statement. You have never up to this > point even indicated that attributes may be removed. In fact, up to > this point, you have at the very least implied that attributes were > going to be a thing for higher-level APIs that need decorating layouts > in order to work, never that it was solely for linker that I can > remember. You yourself claimed that higher level APIs would be > supported, knowing that layouts and their attributes were used in this > exact same way as it is here because the source code was public at the > time. > > > And to add insult to injury you're suggesting that there is some > magical way in which I can support all use cases by... doing what? > Creating explicit dereference types for every standard type? How deep > should I go with that? 1 explicit dereference class for each type? 2? > 3? 4? 10? For someone who refuses to add 3 tiny and simple methods and > a small API change and doesn't seem to want to breakout GroupLayout > into StructLayout and UnionLayout, that suggestion is a bit ironic. > > > I've probably used Panama since the beginning, have promoted it, have > one of the few real-world actual applications that use it, and have > reported bugs that somehow people working on Panama full time weren't > able to find *because* I have an actual application that uses Panama > and not just a few classes that are modified from using > Unsafe/ByteBuffers, which seems to be what everyone else is doing and > **cannot** be compared to my projects. To claim that my use case is > somehow not valid and gaslight out of such a small sample side(1/1, > AFAIK) sure is a slap in the face. Seems to be a trend with the death > of the system wide JRE(not really, there are JREs and programs that > need them but we'll pretend otherwise) and the deprecation of > SecurityManager,? so I guess at least you're being consistent. > > > Is there even anyone else using Project Panama in a real-world GUI > application or something? Even internally at Oracle? If not, FFI > support should be removed too. Since so few people are using it, It's > too much API baggage for too little return! If a sample size of 1 > outside of Oracle isn't enough to keep attributes then surely it's not > enough to keep FFI support, right? I mean, JNI/JNA/GraalVM/other > projects exist already, why complicate things further? It's such a > corner-case and not worth supporting. > > >> >> (For the records, when thinking about (3) I also did an exercise and >> I went back and reimplemented jextract - which uses 4-5 different >> layout attributes. Turns out none of them was _really_ needed and in >> fact the code ended up cleaner w/o them). > > > Great! Don't remember it ever being said it was explicitly for > jextract until... now? Over a year(2? So long ago!) later? > > >> >> Maurizio >> >> >>> >>> >>> >>> On 8/12/21 1:27 PM, Maurizio Cimadamore wrote: >>>> I think what you are trying to do is problematic. >>>> >>>> You have NativeInteger, and NativeInteger has a static layout. You >>>> want to attach other static information (method handles). The >>>> information has to be _static_ if you want to have any chance of >>>> the JVM to optimize all that. >>>> >>>> But, with attributes, you are storing the MHs in a map - so, not >>>> static. Even if you could declare your own layout class, storing >>>> the method handles in final fields of the custom layout won't help >>>> (if the final fields aren't trusted by the JVM, which they are not, >>>> except for special provisions for some JDK packages). >>>> >>>> In other words, I don't see a path (besides spinning a new >>>> NativePointer64 instance which is exclusively dedicated to >>>> NativeInteger) by which you can get performance when accessing the >>>> NativeInteger from the NativePointer64. >>>> >>>> But, if you don't care much about inlining/performance, then maybe >>>> you can just use a ClassValue and store all the MethodHandles >>>> related to NativeInteger in there? That is going to provide similar >>>> (if not better) performance than those with layout attributes. >>>> >>>> I guess what I'm trying to say is that, unless I misunderstood your >>>> example, it seems another case of "layout attributes are attractive >>>> nuisance" - e.g. once they are there, one is tempted to just inject >>>> stuff into layouts, but you already have custom classes wrapping >>>> layouts, so why don't you associate the (static) metadata with the >>>> classes, rather than the layouts? >>>> >>>> Maurizio >>>> >>>> On 12/08/2021 19:00, Ty Young wrote: >>>>> Because it's needed for a NativePointer64 type: >>>>> >>>>> >>>>> NativePointer64 intPointer = new >>>>> NativePointer64<>(NativeInteger.LAYOUT); >>>>> >>>>> >>>>> NativeInteger has 3 MethodHandles embedded into it, one which >>>>> accepts nothing(safe), one which accepts a MemorySegment(unsafe), >>>>> and one which accepts a MemoryAddress(unsafe, what is used by >>>>> NativePointer64). NativePointer then takes the given layout, >>>>> embeds it inside of itself, then reads it later when getting the >>>>> dereferenced value. Doing this generates garbage because of >>>>> Optional since the NativePointer64.LAYOUT needs to have >>>>> NativeInteger embedded inside of it, which then needs to be >>>>> resolved according to a type attribute, e.g. enum, pointer, >>>>> number. It's wasteful(in terms of memory) and slow(have to go >>>>> through a tree of static methods to resolve). Layouts being opened >>>>> up would help. >>>>> >>>>> >>>>> >>>>> On 8/12/21 8:39 AM, Maurizio Cimadamore wrote: >>>>>> May I suggest, for the benefit of the conversation, that instead >>>>>> of focusing on the _hows_ we focus instead on the _whys_ ? >>>>>> >>>>>> E.g. "I'd like to decorate a layout with information X and Y, >>>>>> because I use these information in order to do Z" >>>>>> >>>>>> In other words, by having a full picture of what you are trying >>>>>> to do we might understand better what the requirements really are. >>>>>> >>>>>> Thanks >>>>>> Maurizio >>>>>> >>>>>> On 12/08/2021 14:12, Maurizio Cimadamore wrote: >>>>>>> >>>>>>> On 12/08/2021 12:24, Ty Young wrote: >>>>>>>> I'd very much like it if layouts were opened up and non-sealed. >>>>>>>> It would allow for less wasteful(no Optional) and faster >>>>>>>> code(no HashMap, things can be final). >>>>>>> I agree that would work better. >>>>>>> >>>>>>>> It also would be nice if GroupLayout was removed and replaced >>>>>>>> with StructLayout and UnionLayout, or used as a shared/common >>>>>>>> interface/class for them. >>>>>>> That is largely orthogonal and irrelevant in the discussion >>>>>>> we're having here. >>>>>>>> >>>>>>>> >>>>>>>> I feel like the with* issues could be fixed with generics, e.g.: >>>>>>>> >>>>>>>> >>>>>>>> public interface MemoryLayout> { >>>>>>>> >>>>>>>> ??? public L withName(String name); >>>>>>>> >>>>>>>> } >>>>>>> >>>>>>> I don't think this solves much - as you will have, likely: >>>>>>> >>>>>>> ValueLayout extends MemoryLayout >>>>>>> >>>>>>> At which point you're back to square one - if you define >>>>>>> `TyLayout extends ValueLayout`, there's nothing forcing you to >>>>>>> override withName. >>>>>>> >>>>>>> I did experiments adding generic types to all layouts two years >>>>>>> ago and honestly, it doesn't work very well. About 99% of the >>>>>>> times, the most helpful thing the client has to say about a >>>>>>> layout is MemoryLayout, which seems like forcing 99% of the >>>>>>> users to use generics because 1% of use cases might need them. >>>>>>> But that's beside the point - generics do not solve the problem >>>>>>> I was talking about. Also, in my experience, having f-bounded >>>>>>> type variables in hierarchies works very well when you have one >>>>>>> top class and a single level of leaves (which are all peers). It >>>>>>> works much less when you have to start defining sub-hierarchies >>>>>>> in the leaves - because either the intermediate nodes are >>>>>>> conscious about the type variables and leave them open (leading >>>>>>> to very verbose and borderline uncomprehensible generic >>>>>>> declarations), or they fix the type variables, in which case the >>>>>>> leaves will not take advantage of the f-bound, and you'll be >>>>>>> back in no-generic-land. >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> All of the basic layout types should be interfaces, not classes >>>>>>>> IMO. Basic implementations could be put in a non-exported >>>>>>>> package. Users can get a basic implementation from MemoryLayout >>>>>>>> static methods, as they do now. >>>>>>> Again, this seems a bit of a shallow comment. We can turn >>>>>>> layouts from interface to classes in 2 minutes, by doing a >>>>>>> targeted refactoring. But again, whether classes or interfaces, >>>>>>> the problem I pointed out is still there and is the one we'd >>>>>>> need to solve to be able to let clients to subclass layouts freely. >>>>>>>> >>>>>>>> >>>>>>>> I don't think what I'm proposing could be done with static >>>>>>>> decorator methods. The information being added as attributes >>>>>>>> include MethodHandles for the class's constructor, e.g. a >>>>>>>> constructor MethodHandle for a NativeInteger class, something >>>>>>>> that specific can only be done at the class level I think. >>>>>>> >>>>>>> Well, the original proposal was to add a bunch of methods: >>>>>>> >>>>>>> * MemoryLayout::isAbstract >>>>>>> * MemroyLayout::asAbstract >>>>>>> * MemoryLayout::unfilledAttributes >>>>>>> >>>>>>> If we have layout attributes (like we do in today's API), there >>>>>>> is no need for these methods to _be_ in MemoryLayout. They can >>>>>>> be static methods taking a layout, defined wherever you want. >>>>>>> Just use a special name to encode the attribute names - e.g. >>>>>>> "abstract/foo" - then: >>>>>>> >>>>>>> * isAbstract --> does the layout have any attribute whose name >>>>>>> starts with "abstract/" which are set to null? >>>>>>> * asAbstract --> encode the attribute names to use the >>>>>>> "abstract/" prefix >>>>>>> * unfilledAttributes -> get all the attributes whose name start >>>>>>> with "abstract/" and return those that have no value set >>>>>>> >>>>>>> Maurizio >>>>>>> >>>>>>> >>>>>>> >>>>>>> From leerho at gmail.com Fri Aug 13 02:39:24 2021 From: leerho at gmail.com (leerho) Date: Thu, 12 Aug 2021 19:39:24 -0700 Subject: [foreign-memaccess+abi] RFR: 8270376: Finalize API for memory copy [v9] In-Reply-To: <404686ea-013b-dbed-d423-3566652af415@oracle.com> References: <8fa5aefd-695d-7b31-4342-ffc8ad4cb765@oracle.com> <8ff688f6-d4c4-41df-2409-88c9acaec5ad@oracle.com> <404686ea-013b-dbed-d423-3566652af415@oracle.com> Message-ID: > > My first reaction is that the scope belongs to the Parent, while the > allocator belongs to the Aggregator. Indeed, that is the natural reaction from the object-oriented paradigm whereby the client object owns and manages its own memory. But this use case is different. I think there is a more important question here which is whether your API > wants to expose [the allocation and deallocation of] memory segments > directly, or not, to clients. ( [ ] my interpretation of what you meant ) Indeed. In the case I am trying to explain, the allocator clearly needs to belong to the Parent. The parent is the one managing and tracking overall memory consumption of the system and there can be millions of aggregators. The strategy of how to manage memory can change based on load conditions. For example, the parent may choose to redirect incoming data to another node in the cluster to reduce memory pressure on a particular node; or transfer some of the demand for off-heap memory onto the heap, etc. This is why the interface we designed for dealing with this issue is a *request* for a larger segment from the client to the parent. The parent can then determine how and where that request can be served based on issues at the system level. Thank you for your explanation wrt not allowing inheritance. It makes sense. Cheers, Lee. On Thu, Aug 12, 2021 at 2:38 AM Maurizio Cimadamore < maurizio.cimadamore at oracle.com> wrote: > My first reaction is that the scope belongs to the Parent, while the > allocator belongs to the Aggregator. > > Or maybe the Aggregator has a link to the Parent. > > I get that you want aggregator to be a simple thing that only works off a > memory segment - and avoid passing extra parameters; but I think there is a > more important question here which is whether your API wants to expose > memory segments directly, or not, to clients. > A memory segment is a relatively neutral entity (like a ByteBuffer), and I > think that, in general, if you feel like you need to add more semantics to > a segment, you are probably better off creating your own abstraction which > has a segment inside (which is used for low level memory operations). > > If this was a normal API I'd say: sure, you can extend MemorySegment and > ResourceScope, and add whatever you want in there. But that's not going to > work: if you extend MemorySegment (e.g. to add a "parent" pointer) all > VarHandles/MethodHandles taking a MemorySegment will be way less efficient, > because you have lost exact type match with the VH/MH signature (e.g. the > VH takes a MemorySegment, but you are passing a LeeSegment which is a > subclass of MemorySegment). > > This (coupled with safety concerns) are the reasons as to why inheritance > is mostly a no go in the API. > > Maurizio > > On 12/08/2021 00:20, leerho wrote: > > Yes, now I remember. Thank you. I apologize for the redundant request. > Nonetheless, I guess I am having difficulty in figuring out how to use this > allocator in our use case. Let me try an elementary example. > > public class Parent { >> >> MemoryScope scope = defineScope(...); >> MemorySegment arena = defineArenaSegment(..., scope); >> MemorySegment[] segArr = //allocate a large number of segments as >> slices of arena >> >> Aggregator[] aggArr = //array of aggregators that operate each in their >> own segment >> for (int i=0; i < segArr.length(); i++) { >> aggArr[i] = new Aggregator(segArr[i]); >> } >> >> //Start the process of updating all the aggregators with data. The >> parent has no clue as to > > // which aggregators will need more memory. > > >> public class ParentAllocator extends SegmentAllocator { >> @Override >> public MemorySegment allocate(long bytesSize, long bytesAlignment) { >> ... >> } >> } >> } > > >> public class Aggregator { > > >> public Aggregator(MemorySegment seg) {} > > >> public void update(data) { >> //oops, my segment is full. I need a larger segment. >> //How do I access ParentAllocator? Unless I pass it along with the >> segment? >> } > > > } > > On Wed, Aug 11, 2021 at 2:44 PM Maurizio Cimadamore < > maurizio.cimadamore at oracle.com> wrote: > >> I've resurrected an older conversation here: >> >> https://mail.openjdk.java.net/pipermail/panama-dev/2021-April/013191.html >> >> At that time we discussed using a custom allocator to track allocation >> pressure. I think that's still the way to go. >> >> Adding more features on ResourceScope is IMHO not the way to go, given >> that a ResourceScope is not used just for memory segments. If you want >> to keep track of how much memory is allocated, likely you need a custom >> allocator which has the ability to do that, and react accordingly, which >> is why the SegmentAllocator is there. Note that a SegmentAllocator can >> be built on top of a scope, e.g. you don't have to give up scopes (see >> what we do for arena allocators): e.g. you start with a scope, wrap it >> into an allocator and then use the allocator. >> >> Maurizio >> >> On 11/08/2021 22:29, Maurizio Cimadamore wrote: >> > I have to admit, I have trouble understanding what you are proposing - >> > e.g. what this callback would be for. What calls to resource scope do >> > you wish to intercept? >> > From xgong at openjdk.java.net Fri Aug 13 09:17:49 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Fri, 13 Aug 2021 09:17:49 GMT Subject: [vectorIntrinsics+mask] RFR: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 01:20:30 GMT, Xiaohong Gong wrote: > This patch adds the predicate support for the following masked vector load/store operations: > - fromByteArray/fromByteBuffer > - intoByteArray/intoByteBuffer > > The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. > > Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. > > Note that this patch doesn't contain any backend changes. Hi @jatin-bhateja, I have to integrate this PR now in case it blocks any further development. Any comments are still welcome and we can revisit them in future if needed. Thanks so much! ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From xgong at openjdk.java.net Fri Aug 13 09:17:50 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Fri, 13 Aug 2021 09:17:50 GMT Subject: [vectorIntrinsics+mask] Integrated: 8271539: Add masking support for load/store from/into byte array/buffer In-Reply-To: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> References: <35Ujp27LcvVCEWDaqAw7bzkQ9rkNW9NONiNokxLFHak=.0f6da639-d1ea-4a6f-bfe2-8dc7ae89ab3b@github.com> Message-ID: On Wed, 4 Aug 2021 01:20:30 GMT, Xiaohong Gong wrote: > This patch adds the predicate support for the following masked vector load/store operations: > - fromByteArray/fromByteBuffer > - intoByteArray/intoByteBuffer > > The masked APIs can respectively call the `VectorSupport.loadMasked/storeMasked` intrinsics with transforming the right mask class and value to them. The hotspot compiler will check whether it is using byte array/buffer when doing the memory accessing, and the input vector mask should be reinterpreted to a mask with the byte element type before used if it is. Besides, similar with the non-masked operations, the input vector to store should be reinterpreted to byte type before storing, and the vector loaded from the byte memory should be reinterpreted to the real vector type. > > Also fix an issue when checking array indexes with mask before calling the intrinsics. The original checking method doesn't take effect for negative offset. > > Note that this patch doesn't contain any backend changes. This pull request has now been integrated. Changeset: 16d2b994 Author: Xiaohong Gong URL: https://git.openjdk.java.net/panama-vector/commit/16d2b994dafa8583070326b276775180b40d45c3 Stats: 1668 lines in 41 files changed: 1536 ins; 78 del; 54 mod 8271539: Add masking support for load/store from/into byte array/buffer Reviewed-by: psandoz ------------- PR: https://git.openjdk.java.net/panama-vector/pull/107 From duke at openjdk.java.net Fri Aug 13 11:05:34 2021 From: duke at openjdk.java.net (duke) Date: Fri, 13 Aug 2021 11:05:34 GMT Subject: git: openjdk/panama-foreign: foreign-jextract: 69 new changesets Message-ID: Changeset: 0aca4f72 Author: Andy Herrick Date: 2021-08-06 12:24:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0aca4f72ce48bc75f2c466d1cba4ad70d3c7b875 8271868: Warn user when using mac-sign option with unsigned app-image. Reviewed-by: almatvee, asemenyuk ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacPkgBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources.properties ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties ! src/jdk.jpackage/share/classes/jdk/jpackage/internal/AppImageFile.java ! src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java Changeset: f4cf2f7c Author: Daniel D. Daugherty Date: 2021-08-06 13:38:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f4cf2f7cef6c09c16d714f08505327edd7032604 8272095: ProblemList java/nio/channels/FileChannel/Transfer2GPlus.java on linux-aarch64 Reviewed-by: alanb ! test/jdk/ProblemList.txt Changeset: cc615208 Author: Hamlin Li Date: 2021-08-06 14:16:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cc61520803513e5aab597322303145562948c9a6 8270842: G1: Only young regions need to redirty outside references in remset. Reviewed-by: tschatzl ! src/hotspot/share/gc/g1/g1EvacFailure.cpp Changeset: fa36e334 Author: Daniel D. Daugherty Date: 2021-08-06 14:18:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fa36e33437e9c8346a75ace8ed1b8c245b919d25 8271513: support JavaThreadIteratorWithHandle replacement by new ThreadsList::Iterator Co-authored-by: Kim Barrett Reviewed-by: kbarrett, dholmes, coleenp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp Changeset: e882087f Author: Igor Ignatyev Date: 2021-08-06 16:36:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e882087f7abb21eb776af8c14bc62e7624ebb7f3 8271904: mark hotspot runtime/ClassFile tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/ClassFile/FormatCheckingTest.java ! test/hotspot/jtreg/runtime/ClassFile/JsrRewriting.java ! test/hotspot/jtreg/runtime/ClassFile/OomWhileParsingRepeatedJsr.java ! test/hotspot/jtreg/runtime/ClassFile/TestCheckedExceptions.java Changeset: c495ede2 Author: Igor Ignatyev Date: 2021-08-06 18:49:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c495ede2c2df405e6eec0e205cd67401d7826c4c 8272099: mark hotspot runtime/Monitor tests which ignore external VM flags Reviewed-by: dcubed ! test/hotspot/jtreg/runtime/Monitor/MonitorUsedDeflationThresholdTest.java ! test/hotspot/jtreg/runtime/Monitor/SyncOnValueBasedClassTest.java Changeset: 38ff85c8 Author: Jie Fu Date: 2021-08-06 23:33:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/38ff85c824750e7da66fd86f5bde1c4587e529c4 8271461: CompileCommand support for hidden class methods Co-authored-by: Tianyelan Reviewed-by: yyang, xliu, iklam ! src/hotspot/share/compiler/methodMatcher.cpp Changeset: b84a9c7b Author: Hao Sun Committer: Aleksey Shipilev Date: 2021-08-09 09:38:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b84a9c7b377282bd9b3d9ac78707f0c12f8dc53d 8271956: AArch64: C1 build failed after JDK-8270947 Reviewed-by: shade, ngasson ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Changeset: a86ac0d1 Author: Roman Kennke Date: 2021-08-09 10:31:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a86ac0d1e3a6f02e587362c767abdf62b308d321 8271939: Clean up primitive raw accessors in oopDesc Reviewed-by: stefank, tschatzl ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/oops/instanceClassLoaderKlass.inline.hpp ! src/hotspot/share/oops/instanceMirrorKlass.cpp ! src/hotspot/share/oops/instanceMirrorKlass.inline.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 2f7a4693 Author: Albert Mingkun Yang Date: 2021-08-09 15:19:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2f7a46934c7f8cc024083aefc400d5d52f2c95a7 8271931: Make AbortVMOnVMOperationTimeout more resilient to OS scheduling Reviewed-by: shade, dholmes ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/runtime/vmThread.hpp Changeset: 272fcb42 Author: Ioi Lam Date: 2021-08-09 15:50:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/272fcb423a79b5b8bb4a80679b6b48feca66ebca 8272113: Build compare script fails with differences in classlist Reviewed-by: tschatzl, hseigel ! make/scripts/compare.sh Changeset: 0ac2be9b Author: Phil Race Date: 2021-08-09 15:58:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0ac2be9b35c56b4b1574cf03fe81111d3f39bedb 8272123: Problem list 4 jtreg tests which regularly fail on macos-aarch64 Reviewed-by: jdv, psadhukhan ! test/jdk/ProblemList.txt Changeset: 9c6457f2 Author: Artem Semenov Committer: Anton Tarasov Date: 2021-08-09 16:21:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9c6457f222e702b60fef4247c3e241c669eb9491 8267385: Create NSAccessibilityElement implementation for JavaComponentAccessibility 8262031: Create implementation for NSAccessibilityNavigableStaticText protocol 8264287: Create implementation for NSAccessibilityComboBox protocol peer 8264303: Create implementation for NSAccessibilityTabGroup protocol peer 8264292: Create implementation for NSAccessibilityList protocol peer 8267387: Create implementation for NSAccessibilityOutline protocol 8267388: Create implementation for NSAccessibilityTable protocol 8264286: Create implementation for NSAccessibilityColumn protocol peer 8264298: Create implementation for NSAccessibilityRow protocol peer 8264291: Create implementation for NSAccessibilityCell protocol peer Reviewed-by: kizune, pbansal, serb ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessibility.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessible.java ! src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ButtonAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CellAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CellAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CheckboxAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ColumnAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ColumnAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ComboBoxAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ComboBoxAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonComponentAccessibility.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonComponentAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/GroupAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ImageAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListRowAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineRowAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/RadiobuttonAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ScrollAreaAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SliderAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/StaticTextAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabButtonAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabButtonAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabGroupAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabGroupAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableRowAccessibility.m + test/jdk/java/awt/a11y/AccessibleComponentTest.java + test/jdk/java/awt/a11y/AccessibleJComboboxTest.java + test/jdk/java/awt/a11y/AccessibleJListTest.java + test/jdk/java/awt/a11y/AccessibleJTabbedPaneTest.java + test/jdk/java/awt/a11y/AccessibleJTableTest.java + test/jdk/java/awt/a11y/AccessibleJTreeTest.java + test/jdk/java/awt/a11y/AccessibleTextTest.java Changeset: 41dc795d Author: Naoto Sato Date: 2021-08-09 16:22:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/41dc795d6c08af84aa6544cc5a5704dcf99386cf 8264792: The NumberFormat for locale sq_XK formats price incorrectly. Reviewed-by: joehw, iris ! make/data/currency/CurrencyData.properties ! test/jdk/java/util/Currency/CurrencyTest.java ! test/jdk/java/util/Currency/ValidateISO4217.java Changeset: b53828b7 Author: Brian Burkhalter Date: 2021-08-09 16:50:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b53828b7c219f8f8fb22177bcc80b045ef7bad76 8272047: java/nio/channels/FileChannel/Transfer2GPlus.java failed with Unexpected transfer size: 2147418112 Reviewed-by: naoto, alanb ! test/jdk/ProblemList.txt ! test/jdk/java/nio/channels/FileChannel/Transfer2GPlus.java Changeset: 4548677e Author: Phil Race Date: 2021-08-09 18:15:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4548677e89fb7807639602d29b87dcaabe7b6d8d 8268824: Remove unused jdk.accessibility APIs deprecated for removal in JDK 9 Reviewed-by: serb ! src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AWTEventMonitor.java Changeset: 7fc99cf9 Author: Joe Darcy Date: 2021-08-09 18:33:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7fc99cf9b69f99fc78709e57b92cd88e09577d0f 8225488: Examine ExecutableType.getReceiverType behavior when source receiver parameter is absent Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java ! test/langtools/tools/javac/processing/model/element/TestExecutableReceiverType.java ! test/langtools/tools/javac/processing/model/type/BasicAnnoTests.java Changeset: 843943c2 Author: David Holmes Date: 2021-08-09 20:59:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/843943c204f6e8ca046919eae4e727bef6e3326c 8263567: gtests don't terminate the VM safely Reviewed-by: stuefe, dcubed ! test/hotspot/gtest/gtestMain.cpp ! test/hotspot/gtest/unittest.hpp Changeset: 9654fd73 Author: Igor Ignatyev Date: 2021-08-10 02:12:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9654fd73cd72e12cdb6934727f251dddacc18654 8271892: mark hotspot runtime/PrintStringTableStats/PrintStringTableStatsTest.java test as ignoring external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/PrintStringTableStats/PrintStringTableStatsTest.java Changeset: eb6f3fe5 Author: Igor Ignatyev Date: 2021-08-10 02:26:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/eb6f3fe59d469a369383a750d319318909cf8613 8272169: runtime/logging/LoaderConstraintsTest.java doesn't build test.Empty Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java Changeset: abdc1074 Author: Hamlin Li Date: 2021-08-10 03:18:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/abdc1074dcefda9012bb4d84c9f34a2dca5ea560 8270454: G1: Simplify region index comparison Reviewed-by: kbarrett, ayang, tschatzl ! src/hotspot/share/gc/g1/g1CollectionSet.cpp Changeset: 3b899ef7 Author: Igor Ignatyev Date: 2021-08-10 05:11:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3b899ef7ffd87477ac1b10f4334b127597e9fe32 8272168: some hotspot runtime/logging tests don't check exit code Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/logging/ClassInitializationTest.java ! test/hotspot/jtreg/runtime/logging/ClassResolutionTest.java ! test/hotspot/jtreg/runtime/logging/CondyIndyTest.java ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java ! test/hotspot/jtreg/runtime/logging/MonitorMismatchTest.java Changeset: d53d94b1 Author: Tobias Hartmann Date: 2021-08-10 05:36:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d53d94b14d09bbcbfd9bbc0d214ead9bd52e7f58 8271925: ZGC: Arraycopy stub passes invalid oop to load barrier Reviewed-by: neliasso, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Changeset: 2384e128 Author: Tobias Hartmann Date: 2021-08-10 05:37:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2384e128886ce8d60cb76e6cdae3a76ccebb9e89 8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert Reviewed-by: neliasso, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! test/hotspot/jtreg/compiler/arraycopy/TestObjectArrayClone.java Changeset: 089e83bf Author: Matthias Baesken Date: 2021-08-10 07:40:21 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/089e83bf1bf6f28cec8dd30288720b6d066301f0 8266490: Extend the OSContainer API to support the pids controller of cgroups Reviewed-by: sgehwolf, lucy ! src/hotspot/os/linux/cgroupSubsystem_linux.cpp ! src/hotspot/os/linux/cgroupSubsystem_linux.hpp ! src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp ! src/hotspot/os/linux/cgroupV1Subsystem_linux.hpp ! src/hotspot/os/linux/cgroupV2Subsystem_linux.cpp ! src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp ! src/hotspot/os/linux/osContainer_linux.cpp ! src/hotspot/os/linux/osContainer_linux.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/java.base/linux/classes/jdk/internal/platform/CgroupMetrics.java ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystem.java ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv1/CgroupV1Subsystem.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv2/CgroupV2Subsystem.java ! src/java.base/share/classes/jdk/internal/platform/Metrics.java ! src/java.base/share/classes/sun/launcher/LauncherHelper.java ! test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java ! test/hotspot/jtreg/containers/docker/TestMisc.java + test/hotspot/jtreg/containers/docker/TestPids.java + test/jdk/jdk/internal/platform/docker/TestPidsLimit.java ! test/lib/jdk/test/lib/containers/docker/Common.java Changeset: 1f881349 Author: Alan Hayward Committer: Nick Gasson Date: 2021-08-10 08:29:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1f8813495e8184b6c38319df1c2cb70de7811a76 8271869: AArch64: build errors with GCC11 in frame::saved_oop_result Reviewed-by: ngasson, aph ! src/hotspot/cpu/aarch64/frame_aarch64.inline.hpp Changeset: f2599ad8 Author: Albert Mingkun Yang Date: 2021-08-10 10:12:06 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f2599ad867476f11fdc455084bb64ab6e91fa146 8272196: Remove unused class ParStrongRootsScope Reviewed-by: tschatzl, pliden ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp Changeset: 2b05fae1 Author: Harold Seigel Date: 2021-08-10 12:17:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2b05fae15568d5eb91d6d6d32c29f2fda453a8f5 8260262: Use common code in function unmap_shared() in perfMemory_posix.cpp Reviewed-by: stuefe, coleenp ! src/hotspot/os/posix/perfMemory_posix.cpp Changeset: 35b399ac Author: Andrey Turbanov Committer: Jayathirth D V Date: 2021-08-10 13:27:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/35b399aca810db63371ff65046f047ef0b955161 8269130: Replace usages of Collection.toArray() with Collection.toArray(T[]) to avoid redundant array copying Reviewed-by: mullan, serb ! src/java.base/share/classes/java/security/Security.java ! src/java.base/share/classes/sun/security/pkcs/PKCS9Attributes.java ! src/java.desktop/share/classes/sun/font/SunFontManager.java ! src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java ! src/java.desktop/windows/classes/sun/awt/windows/WDesktopProperties.java ! src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PStack.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/SystemDictionaryHelper.java Changeset: 67869b49 Author: Martin Balao Date: 2021-08-10 16:28:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/67869b491ae1eaf311dfb8c61a9e94329a822ffc 8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup Reviewed-by: weijun ! src/java.security.jgss/share/classes/sun/security/krb5/internal/CredentialsUtil.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/ReferralsCache.java ! test/jdk/sun/security/krb5/auto/ReferralsTest.java Changeset: 57ae9fbe Author: Joe Darcy Date: 2021-08-10 16:49:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/57ae9fbe779e63f9606077047137b00220c6b3a2 8140442: Add getOutermostTypeElement to javax.lang.model utility class Reviewed-by: jlahoda ! src/java.compiler/share/classes/javax/lang/model/element/ElementKind.java ! src/java.compiler/share/classes/javax/lang/model/util/Elements.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.java ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/langtools/tools/javac/processing/model/util/elements/TestIsAutomaticMod.java + test/langtools/tools/javac/processing/model/util/elements/TestOutermostTypeElement.java Changeset: 66d1faa7 Author: Raffaello Giulietti Committer: Brian Burkhalter Date: 2021-08-10 17:16:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/66d1faa7847b645f20ab2e966adf0a523e3ffeb2 8271601: Math.floorMod(int, int) and Math.floorMod(long, long) differ in their logic Reviewed-by: bpb ! src/java.base/share/classes/java/lang/Math.java Changeset: b62e7420 Author: Alex Menkov Date: 2021-08-10 19:13:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b62e7420450dad5a807a5afa0f65f6632b344e29 8213714: AttachingConnector/attach/attach001 failed due to "bind failed: Address already in use" Reviewed-by: sspitsyn, cjplummer ! test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend001.java ! test/hotspot/jtreg/vmTestbase/nsk/share/IORedirector.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeProcess.java Changeset: 2a9acc31 Author: Dean Long Date: 2021-08-10 21:30:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2a9acc31b824ed964dfa2126bc5a859c79532d50 8272050: typo in MachSpillCopyNode::implementation after JDK-8131362 Reviewed-by: kvn, thartmann ! src/hotspot/cpu/aarch64/aarch64.ad Changeset: 14893527 Author: Sergey Bylokhov Date: 2021-08-10 22:22:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/148935279d177e66a08a7003975bce3077104e07 8271718: Crash when during color transformation the color profile is replaced Reviewed-by: prr ! src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMS.java + test/jdk/java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java Changeset: 5350b990 Author: Hui Shi Date: 2021-08-11 02:00:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5350b9901c6cebe5d40bbba9a31d1f26285b1cd6 8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj Reviewed-by: neliasso, xliu, thartmann ! src/hotspot/share/opto/macroArrayCopy.cpp + test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java Changeset: 846cc88f Author: Xiaowei Lu Committer: Per Liden Date: 2021-08-11 08:42:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/846cc88f9452a63269130b7fe17f504deaf2a773 8272138: ZGC: Adopt relaxed ordering for self-healing Co-authored-by: Hao Tang Reviewed-by: eosterlund, pliden ! src/hotspot/share/gc/z/zBarrier.inline.hpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: adba09b9 Author: Christoph G?ttschkes Committer: Aleksey Shipilev Date: 2021-08-11 08:48:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/adba09b91de2e86fe4eb844c9066a23b176176bd 8272146: Disable Fibonacci test on memory constrained systems Reviewed-by: dholmes, mseledtsov, shade ! test/hotspot/jtreg/runtime/Thread/Fibonacci.java Changeset: 3215dbc8 Author: Jan Lahoda Date: 2021-08-11 08:54:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3215dbc8b8e5f2c1454741dc7f94b0232c5d911f 8271928: ErroneousTree with start position -1 Reviewed-by: jlaskey, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/parser/JavacParserTest.java Changeset: 0d0f2d07 Author: Albert Mingkun Yang Date: 2021-08-11 10:19:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0d0f2d07f72cc709618e5e448d43be7704b1ac68 8272216: G1: replace G1ParScanThreadState::_dest with a constant Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Changeset: abebbe23 Author: Per Liden Date: 2021-08-11 11:07:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/abebbe2335a6dc9b12e5f271bf32cdc54f80b660 8267186: Add string deduplication support to ZGC Reviewed-by: eosterlund, kbarrett, stefank ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMark.hpp + src/hotspot/share/gc/z/zMarkContext.hpp + src/hotspot/share/gc/z/zMarkContext.inline.hpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: 3f723ca4 Author: Per Liden Date: 2021-08-11 11:09:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3f723ca4577b9cffeb6153ee386edd75f1dfb1c6 8271862: C2 intrinsic for Reference.refersTo() is often not used Reviewed-by: kbarrett, mchung ! src/java.base/share/classes/java/lang/ref/PhantomReference.java ! src/java.base/share/classes/java/lang/ref/Reference.java Changeset: cd1751c3 Author: Ivan Walulya Date: 2021-08-11 11:56:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd1751c34e974683f3d2734c8ad5823a6ea27295 8271884: G1CH::_expand_heap_after_alloc_failure is no longer needed Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1Allocator.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp Changeset: 61942276 Author: Ivan Walulya Date: 2021-08-11 14:33:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/619422764d55875c1b9687ae7e9ce4dc99b71bf9 8272228: G1: G1CardSetInlinePtr Fix tautological assertion Reviewed-by: ayang, tschatzl ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp Changeset: ec8d3bad Author: Jonathan Gibbons Date: 2021-08-11 18:03:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec8d3badc869be7898b5a49fa5f9ba447bbbcf8d 8271159: [REDO] JDK-8249634 doclint should report implicit constructor as missing javadoc comments Reviewed-by: darcy ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties ! test/langtools/jdk/javadoc/doclet/testDiagsLineCaret/TestDiagsLineCaret.java ! test/langtools/jdk/javadoc/doclet/testDocTreeDiags/TestDocTreeDiags.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testMissingComment/TestMissingComment.java ! test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java ! test/langtools/tools/doclint/AccessTest.java ! test/langtools/tools/doclint/AccessibilityTest.java ! test/langtools/tools/doclint/AnchorTest.java ! test/langtools/tools/doclint/AnchorTest2.java ! test/langtools/tools/doclint/CrashInAnnotateTest.java ! test/langtools/tools/doclint/CrashInAnnotateTest.out ! test/langtools/tools/doclint/CustomTagTest.java ! test/langtools/tools/doclint/DuplicateParamTest.java ! test/langtools/tools/doclint/DuplicateReturnTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.java ! test/langtools/tools/doclint/EmptyExceptionTest.java ! test/langtools/tools/doclint/EmptyParamTest.java ! test/langtools/tools/doclint/EmptyReturnTest.java ! test/langtools/tools/doclint/EmptySerialDataTest.java ! test/langtools/tools/doclint/EmptySerialFieldTest.java ! test/langtools/tools/doclint/EmptySinceTest.java ! test/langtools/tools/doclint/EmptyTagsTest.java ! test/langtools/tools/doclint/EmptyVersionTest.java ! test/langtools/tools/doclint/EndTagsTest.java ! test/langtools/tools/doclint/EndWithIdentifierTest.java ! test/langtools/tools/doclint/HtmlAttrsTest.java ! test/langtools/tools/doclint/HtmlTagsTest.java ! test/langtools/tools/doclint/LambdaTest.java ! test/langtools/tools/doclint/LiteralTest.java ! test/langtools/tools/doclint/MissingThrowsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.java + test/langtools/tools/doclint/NoArgsConstructorTest.java + test/langtools/tools/doclint/NoArgsConstructorTest.out ! test/langtools/tools/doclint/OverridesTest.java ! test/langtools/tools/doclint/ParaTagTest.java ! test/langtools/tools/doclint/ProvidesTest.java ! test/langtools/tools/doclint/ReferenceTest.java ! test/langtools/tools/doclint/SummaryTest.java ! test/langtools/tools/doclint/SyntaxTest.java ! test/langtools/tools/doclint/SyntheticTest.java + test/langtools/tools/doclint/SyntheticTest.out ! test/langtools/tools/doclint/UnfinishedInlineTagTest.java ! test/langtools/tools/doclint/UsesTest.java ! test/langtools/tools/doclint/ValueTest.java ! test/langtools/tools/doclint/anchorTests/p/Test.java ! test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java ! test/langtools/tools/doclint/html/InlineTagsTest.java ! test/langtools/tools/doclint/html/ListTagsTest.java ! test/langtools/tools/doclint/html/OtherTagsTest.java ! test/langtools/tools/doclint/html/TableTagsTest.java ! test/langtools/tools/doclint/html/TagNotAllowed.java ! test/langtools/tools/doclint/html/TextNotAllowed.java ! test/langtools/tools/doclint/html/UnknownTagTest.java ! test/langtools/tools/doclint/packageTests/bad/Test.java ! test/langtools/tools/doclint/tidy/AnchorAlreadyDefined.java ! test/langtools/tools/doclint/tidy/BadEnd.java ! test/langtools/tools/doclint/tidy/InsertImplicit.java ! test/langtools/tools/doclint/tidy/InvalidEntity.java ! test/langtools/tools/doclint/tidy/InvalidName.java ! test/langtools/tools/doclint/tidy/InvalidTag.java ! test/langtools/tools/doclint/tidy/InvalidURI.java ! test/langtools/tools/doclint/tidy/MissingGT.java ! test/langtools/tools/doclint/tidy/MissingTag.java ! test/langtools/tools/doclint/tidy/NestedTag.java ! test/langtools/tools/doclint/tidy/ParaInPre.java ! test/langtools/tools/doclint/tidy/RepeatedAttr.java ! test/langtools/tools/doclint/tidy/TextNotAllowed.java ! test/langtools/tools/doclint/tidy/TrimmingEmptyTag.java ! test/langtools/tools/doclint/tidy/UnescapedOrUnknownEntity.java ! test/langtools/tools/doclint/tool/MaxDiagsTest.java ! test/langtools/tools/doclint/tool/StatsTest.java ! test/langtools/tools/javac/doclint/DocLintFormatTest.java ! test/langtools/tools/javac/doclint/DocLintTest.java ! test/langtools/tools/javac/doclint/IncludePackagesTest.java ! test/langtools/tools/javac/doclint/NPEDuplicateClassNamesTest.java Changeset: 9ba8a12c Author: Jonathan Gibbons Date: 2021-08-11 18:04:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9ba8a12cfbb3d7d17be454e29ee6ff476c8690c2 8269774: doclint reports missing javadoc comments for JavaFX properties if the docs are on the property method Reviewed-by: kcr, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java + test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXMissingPropComments.java Changeset: 75a06421 Author: Igor Ignatyev Date: 2021-08-11 19:38:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/75a06421e596b0e0006120a13836ec65a3ab9d46 8272335: runtime/cds/appcds/MoveJDKTest.java doesn't check exit codes Reviewed-by: iklam ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java Changeset: 9faab400 Author: Igor Veresov Date: 2021-08-11 20:19:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9faab400b8cf0611f14d377ea55a58d99795fa57 8272330: C2: Cleanup profile counter scaling Reviewed-by: kvn ! src/hotspot/share/ci/ciMethod.cpp Changeset: cd2dbe5f Author: Alexey Semenyuk Date: 2021-08-11 20:54:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd2dbe5f007baf81ae9262c1152917e620970621 8272328: java.library.path is not set properly by Windows jpackage app launcher Reviewed-by: herrick, almatvee ! src/jdk.jpackage/share/native/applauncher/AppLauncher.cpp ! src/jdk.jpackage/share/native/applauncher/AppLauncher.h ! src/jdk.jpackage/windows/native/applauncher/WinLauncher.cpp ! src/jdk.jpackage/windows/native/common/WinSysInfo.cpp Changeset: 44f137ff Author: Alexey Semenyuk Date: 2021-08-11 23:39:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/44f137ff9c0229ab2d5eccd9ebaadf8db11f386d 8271170: Add unit test for what jpackage app launcher puts in the environment Reviewed-by: almatvee, herrick = test/jdk/tools/jpackage/apps/Hello.java + test/jdk/tools/jpackage/apps/PrintEnv.java - test/jdk/tools/jpackage/apps/installer/Hello.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java ! test/jdk/tools/jpackage/share/AddLauncherTest.java + test/jdk/tools/jpackage/share/AppLauncherEnvTest.java Changeset: bd27bb9c Author: Igor Ignatyev Date: 2021-08-12 03:45:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bd27bb9cbedebd09f589679947ff32261f9ef352 8272345: macos doesn't check `os::set_boot_path()` result Reviewed-by: dholmes ! src/hotspot/os/bsd/os_bsd.cpp ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java Changeset: ec2fc384 Author: Sergey Bylokhov Date: 2021-08-12 05:46:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec2fc384e50668b667335f973ffeb5a19bbcfb9b 8272120: Avoid looking for standard encodings in "java." modules Reviewed-by: alanb, dfuchs, naoto ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.management/share/classes/com/sun/jmx/remote/security/HashedPasswordManager.java ! src/java.management/share/classes/javax/management/loading/MLetParser.java ! src/java.management/share/classes/sun/management/counter/perf/PerfDataEntry.java ! src/java.management/share/classes/sun/management/counter/perf/PerfDataType.java ! src/java.naming/share/classes/com/sun/jndi/ldap/Ber.java ! src/java.naming/share/classes/com/sun/jndi/ldap/BerDecoder.java ! src/java.naming/share/classes/com/sun/jndi/ldap/BerEncoder.java ! src/java.naming/share/classes/com/sun/jndi/ldap/Filter.java ! src/java.naming/share/classes/com/sun/jndi/ldap/LdapClient.java ! src/java.naming/share/classes/com/sun/jndi/ldap/LdapName.java ! src/java.naming/share/classes/com/sun/jndi/ldap/sasl/DefaultCallbackHandler.java ! src/java.naming/share/classes/javax/naming/ldap/Rdn.java ! src/java.net.http/share/classes/jdk/internal/net/http/ResponseContent.java ! src/java.xml/share/classes/javax/xml/catalog/Normalizer.java Changeset: a15b6592 Author: Claes Redestad Date: 2021-08-12 07:01:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a15b659278741337aefc15ce8002df66ce6323c0 8271732: Regression in StringBuilder.charAt bounds checking Reviewed-by: alanb, naoto ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java + test/jdk/java/lang/StringBuilder/CharAt.java ! test/micro/org/openjdk/bench/java/lang/StringBuilders.java Changeset: d38b3143 Author: Severin Gehwolf Date: 2021-08-12 08:52:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d38b31438dd4730ee2149c02277d60c35b9d7d81 8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790 Reviewed-by: prr ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: b29fbad9 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-12 10:03:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b29fbad940808c59f30e60222a9ca7a23c8e54b9 8267844: Replace Integer/Long.valueOf() with Integer/Long.parse*() where applicable Reviewed-by: redestad ! src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java ! src/java.base/share/classes/java/lang/Integer.java ! src/java.base/share/classes/java/lang/Long.java ! src/java.base/share/classes/jdk/internal/misc/VM.java ! test/micro/org/openjdk/bench/java/lang/Integers.java ! test/micro/org/openjdk/bench/java/lang/Longs.java Changeset: 7e14c3cc Author: Xiaohong Gong Committer: Jie Fu Date: 2021-08-12 11:07:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7e14c3cc112e109f0fc79c661eafd2fb14f22431 8272310: AArch64: Add missing changes for shared vector helper methods in m4 files Reviewed-by: jiefu ! src/hotspot/cpu/aarch64/aarch64_neon_ad.m4 ! src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 Changeset: 464e874a Author: Coleen Phillimore Date: 2021-08-12 13:45:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/464e874a5c6b46fcc729227764d07feb1801314d 8048190: NoClassDefFoundError omits original ExceptionInInitializerError Reviewed-by: dholmes, iklam ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp + test/hotspot/jtreg/runtime/ClassInitErrors/InitExceptionUnloadTest.java Changeset: 9980b413 Author: Harold Seigel Date: 2021-08-12 13:56:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9980b413da47ac7dff74e66aaf12833e48fcce1d 8272107: Removal of Unsafe::defineAnonymousClass left a dangling C++ class Reviewed-by: coleenp, iklam, dholmes ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/metaspaceClosure.hpp ! src/hotspot/share/oops/constantPool.cpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/constantPool.inline.hpp ! src/hotspot/share/oops/symbol.hpp ! src/hotspot/share/services/heapDumper.cpp Changeset: 93cab7d0 Author: Kim Barrett Date: 2021-08-12 14:29:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/93cab7d07d56fef6973ce8ac2e8232e8f3b185dd 8272315: Improve assert_different_registers Reviewed-by: adinn, vlivanov, thartmann ! src/hotspot/share/asm/register.hpp Changeset: 428d5169 Author: Brian Burkhalter Date: 2021-08-12 15:27:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/428d51694f56788f89e8df100a74cbadd369ffa6 8140241: (fc) Data transfer from FileChannel to itself causes hang in case of overlap Reviewed-by: alanb ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/FileDispatcher.java ! src/java.base/unix/classes/sun/nio/ch/FileDispatcherImpl.java ! src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c ! src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java + test/jdk/java/nio/channels/FileChannel/TransferOverlappedFileChannel.java Changeset: e4766ee0 Author: Xue-Lei Andrew Fan Date: 2021-08-12 19:28:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e4766ee0aa96ab80aeaca36afac5fcaa516620ef 8272391: Undeleted debug information Reviewed-by: wetmore ! src/java.base/share/classes/sun/security/provider/DSAParameterGenerator.java Changeset: 09ab86b4 Author: Lin Zang Committer: Serguei Spitsyn Date: 2021-08-12 23:16:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/09ab86b40cb11d526c70e0a1847451e06c54a58c 8269909: getStack method in hprof.parser.Reader should use try-with-resource Reviewed-by: dholmes, cjplummer, sspitsyn ! test/lib/jdk/test/lib/hprof/parser/Reader.java Changeset: 4d4ba5c5 Author: Hui Shi Date: 2021-08-13 01:00:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4d4ba5c5b4a12a28587a67d8fd56041d3f94b959 8272116: Update PerfDisableSharedMem with FLAG_SET_ERGO in PerfMemory::create_memory_region Reviewed-by: dholmes ! src/hotspot/os/posix/perfMemory_posix.cpp ! src/hotspot/os/windows/perfMemory_windows.cpp Changeset: 020aec53 Author: Jatin Bhateja Date: 2021-08-13 04:33:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/020aec531801a556582c80c4b5d31eaf538781e8 8271366: [REDO] JDK-8266054 VectorAPI rotate operation optimization Reviewed-by: sviswanathan, psandoz ! src/hotspot/cpu/aarch64/matcher_aarch64.hpp ! src/hotspot/cpu/arm/matcher_arm.hpp ! src/hotspot/cpu/ppc/matcher_ppc.hpp ! src/hotspot/cpu/s390/matcher_s390.hpp ! src/hotspot/cpu/x86/matcher_x86.hpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! src/hotspot/share/prims/vectorSupport.cpp ! src/hotspot/share/prims/vectorSupport.hpp ! src/java.base/share/classes/jdk/internal/vm/vector/VectorSupport.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorOperators.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template ! test/jdk/jdk/incubator/vector/Byte128VectorTests.java ! test/jdk/jdk/incubator/vector/Byte256VectorTests.java ! test/jdk/jdk/incubator/vector/Byte512VectorTests.java ! test/jdk/jdk/incubator/vector/Byte64VectorTests.java ! test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Double128VectorTests.java ! test/jdk/jdk/incubator/vector/Double256VectorTests.java ! test/jdk/jdk/incubator/vector/Double512VectorTests.java ! test/jdk/jdk/incubator/vector/Double64VectorTests.java ! test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Float128VectorTests.java ! test/jdk/jdk/incubator/vector/Float256VectorTests.java ! test/jdk/jdk/incubator/vector/Float512VectorTests.java ! test/jdk/jdk/incubator/vector/Float64VectorTests.java ! test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Int128VectorTests.java ! test/jdk/jdk/incubator/vector/Int256VectorTests.java ! test/jdk/jdk/incubator/vector/Int512VectorTests.java ! test/jdk/jdk/incubator/vector/Int64VectorTests.java ! test/jdk/jdk/incubator/vector/IntMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Long128VectorTests.java ! test/jdk/jdk/incubator/vector/Long256VectorTests.java ! test/jdk/jdk/incubator/vector/Long512VectorTests.java ! test/jdk/jdk/incubator/vector/Long64VectorTests.java ! test/jdk/jdk/incubator/vector/LongMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Short128VectorTests.java ! test/jdk/jdk/incubator/vector/Short256VectorTests.java ! test/jdk/jdk/incubator/vector/Short512VectorTests.java ! test/jdk/jdk/incubator/vector/Short64VectorTests.java ! test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java ! test/jdk/jdk/incubator/vector/gen-template.sh ! test/jdk/jdk/incubator/vector/templates/Unit-Shift-Masked-op.template ! test/jdk/jdk/incubator/vector/templates/Unit-Shift-op.template ! test/jdk/jdk/incubator/vector/templates/Unit-header.template + test/micro/org/openjdk/bench/jdk/incubator/vector/RotateBenchmark.java Changeset: 0c4be76f Author: Prasanta Sadhukhan Date: 2021-08-13 05:12:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0c4be76f7ff3cd5e32c8eb4e04e6986d5f33fbee 8058704: Nimbus does not honor JTextPane background color 6789980: JEditorPane background color not honored with Nimbus L&F Reviewed-by: aivanov, serb ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf + test/jdk/javax/swing/plaf/nimbus/TestNimbusBGColor.java Changeset: d06d0b9e Author: Thomas Stuefe Date: 2021-08-13 06:38:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d06d0b9e9d9d27aa549455f19b9803752431bcbb 8272112: Arena code simplifications Reviewed-by: kbarrett, coleenp ! src/hotspot/share/memory/arena.cpp ! src/hotspot/share/runtime/init.cpp ! test/hotspot/gtest/memory/test_arena.cpp Changeset: 8da26ad8 Author: duke Date: 2021-08-13 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/8da26ad881a5fa4ae033364d33d19ffd45baed1e Automatic merge of jdk:master into master Changeset: 238965b1 Author: duke Date: 2021-08-13 11:00:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/238965b190fd60160064bf068c3e47715f5373df Automatic merge of master into foreign-memaccess+abi Changeset: 1d5a8459 Author: duke Date: 2021-08-13 11:01:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1d5a8459d37a7f9c275f065ddc242a379a7fa835 Automatic merge of foreign-memaccess+abi into foreign-jextract From duke at openjdk.java.net Fri Aug 13 11:09:43 2021 From: duke at openjdk.java.net (duke) Date: Fri, 13 Aug 2021 11:09:43 GMT Subject: git: openjdk/panama-foreign: foreign-memaccess+abi: 68 new changesets Message-ID: <5dc22ede-52a3-46f6-a14c-591c3df913e9@openjdk.org> Changeset: 0aca4f72 Author: Andy Herrick Date: 2021-08-06 12:24:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0aca4f72ce48bc75f2c466d1cba4ad70d3c7b875 8271868: Warn user when using mac-sign option with unsigned app-image. Reviewed-by: almatvee, asemenyuk ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacPkgBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources.properties ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties ! src/jdk.jpackage/share/classes/jdk/jpackage/internal/AppImageFile.java ! src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java Changeset: f4cf2f7c Author: Daniel D. Daugherty Date: 2021-08-06 13:38:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f4cf2f7cef6c09c16d714f08505327edd7032604 8272095: ProblemList java/nio/channels/FileChannel/Transfer2GPlus.java on linux-aarch64 Reviewed-by: alanb ! test/jdk/ProblemList.txt Changeset: cc615208 Author: Hamlin Li Date: 2021-08-06 14:16:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cc61520803513e5aab597322303145562948c9a6 8270842: G1: Only young regions need to redirty outside references in remset. Reviewed-by: tschatzl ! src/hotspot/share/gc/g1/g1EvacFailure.cpp Changeset: fa36e334 Author: Daniel D. Daugherty Date: 2021-08-06 14:18:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fa36e33437e9c8346a75ace8ed1b8c245b919d25 8271513: support JavaThreadIteratorWithHandle replacement by new ThreadsList::Iterator Co-authored-by: Kim Barrett Reviewed-by: kbarrett, dholmes, coleenp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp Changeset: e882087f Author: Igor Ignatyev Date: 2021-08-06 16:36:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e882087f7abb21eb776af8c14bc62e7624ebb7f3 8271904: mark hotspot runtime/ClassFile tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/ClassFile/FormatCheckingTest.java ! test/hotspot/jtreg/runtime/ClassFile/JsrRewriting.java ! test/hotspot/jtreg/runtime/ClassFile/OomWhileParsingRepeatedJsr.java ! test/hotspot/jtreg/runtime/ClassFile/TestCheckedExceptions.java Changeset: c495ede2 Author: Igor Ignatyev Date: 2021-08-06 18:49:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c495ede2c2df405e6eec0e205cd67401d7826c4c 8272099: mark hotspot runtime/Monitor tests which ignore external VM flags Reviewed-by: dcubed ! test/hotspot/jtreg/runtime/Monitor/MonitorUsedDeflationThresholdTest.java ! test/hotspot/jtreg/runtime/Monitor/SyncOnValueBasedClassTest.java Changeset: 38ff85c8 Author: Jie Fu Date: 2021-08-06 23:33:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/38ff85c824750e7da66fd86f5bde1c4587e529c4 8271461: CompileCommand support for hidden class methods Co-authored-by: Tianyelan Reviewed-by: yyang, xliu, iklam ! src/hotspot/share/compiler/methodMatcher.cpp Changeset: b84a9c7b Author: Hao Sun Committer: Aleksey Shipilev Date: 2021-08-09 09:38:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b84a9c7b377282bd9b3d9ac78707f0c12f8dc53d 8271956: AArch64: C1 build failed after JDK-8270947 Reviewed-by: shade, ngasson ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Changeset: a86ac0d1 Author: Roman Kennke Date: 2021-08-09 10:31:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a86ac0d1e3a6f02e587362c767abdf62b308d321 8271939: Clean up primitive raw accessors in oopDesc Reviewed-by: stefank, tschatzl ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/oops/instanceClassLoaderKlass.inline.hpp ! src/hotspot/share/oops/instanceMirrorKlass.cpp ! src/hotspot/share/oops/instanceMirrorKlass.inline.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 2f7a4693 Author: Albert Mingkun Yang Date: 2021-08-09 15:19:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2f7a46934c7f8cc024083aefc400d5d52f2c95a7 8271931: Make AbortVMOnVMOperationTimeout more resilient to OS scheduling Reviewed-by: shade, dholmes ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/runtime/vmThread.hpp Changeset: 272fcb42 Author: Ioi Lam Date: 2021-08-09 15:50:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/272fcb423a79b5b8bb4a80679b6b48feca66ebca 8272113: Build compare script fails with differences in classlist Reviewed-by: tschatzl, hseigel ! make/scripts/compare.sh Changeset: 0ac2be9b Author: Phil Race Date: 2021-08-09 15:58:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0ac2be9b35c56b4b1574cf03fe81111d3f39bedb 8272123: Problem list 4 jtreg tests which regularly fail on macos-aarch64 Reviewed-by: jdv, psadhukhan ! test/jdk/ProblemList.txt Changeset: 9c6457f2 Author: Artem Semenov Committer: Anton Tarasov Date: 2021-08-09 16:21:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9c6457f222e702b60fef4247c3e241c669eb9491 8267385: Create NSAccessibilityElement implementation for JavaComponentAccessibility 8262031: Create implementation for NSAccessibilityNavigableStaticText protocol 8264287: Create implementation for NSAccessibilityComboBox protocol peer 8264303: Create implementation for NSAccessibilityTabGroup protocol peer 8264292: Create implementation for NSAccessibilityList protocol peer 8267387: Create implementation for NSAccessibilityOutline protocol 8267388: Create implementation for NSAccessibilityTable protocol 8264286: Create implementation for NSAccessibilityColumn protocol peer 8264298: Create implementation for NSAccessibilityRow protocol peer 8264291: Create implementation for NSAccessibilityCell protocol peer Reviewed-by: kizune, pbansal, serb ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessibility.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessible.java ! src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ButtonAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CellAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CellAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CheckboxAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ColumnAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ColumnAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ComboBoxAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ComboBoxAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonComponentAccessibility.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonComponentAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/GroupAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ImageAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListRowAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineRowAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/RadiobuttonAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ScrollAreaAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SliderAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/StaticTextAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabButtonAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabButtonAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabGroupAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabGroupAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableRowAccessibility.m + test/jdk/java/awt/a11y/AccessibleComponentTest.java + test/jdk/java/awt/a11y/AccessibleJComboboxTest.java + test/jdk/java/awt/a11y/AccessibleJListTest.java + test/jdk/java/awt/a11y/AccessibleJTabbedPaneTest.java + test/jdk/java/awt/a11y/AccessibleJTableTest.java + test/jdk/java/awt/a11y/AccessibleJTreeTest.java + test/jdk/java/awt/a11y/AccessibleTextTest.java Changeset: 41dc795d Author: Naoto Sato Date: 2021-08-09 16:22:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/41dc795d6c08af84aa6544cc5a5704dcf99386cf 8264792: The NumberFormat for locale sq_XK formats price incorrectly. Reviewed-by: joehw, iris ! make/data/currency/CurrencyData.properties ! test/jdk/java/util/Currency/CurrencyTest.java ! test/jdk/java/util/Currency/ValidateISO4217.java Changeset: b53828b7 Author: Brian Burkhalter Date: 2021-08-09 16:50:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b53828b7c219f8f8fb22177bcc80b045ef7bad76 8272047: java/nio/channels/FileChannel/Transfer2GPlus.java failed with Unexpected transfer size: 2147418112 Reviewed-by: naoto, alanb ! test/jdk/ProblemList.txt ! test/jdk/java/nio/channels/FileChannel/Transfer2GPlus.java Changeset: 4548677e Author: Phil Race Date: 2021-08-09 18:15:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4548677e89fb7807639602d29b87dcaabe7b6d8d 8268824: Remove unused jdk.accessibility APIs deprecated for removal in JDK 9 Reviewed-by: serb ! src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AWTEventMonitor.java Changeset: 7fc99cf9 Author: Joe Darcy Date: 2021-08-09 18:33:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7fc99cf9b69f99fc78709e57b92cd88e09577d0f 8225488: Examine ExecutableType.getReceiverType behavior when source receiver parameter is absent Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java ! test/langtools/tools/javac/processing/model/element/TestExecutableReceiverType.java ! test/langtools/tools/javac/processing/model/type/BasicAnnoTests.java Changeset: 843943c2 Author: David Holmes Date: 2021-08-09 20:59:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/843943c204f6e8ca046919eae4e727bef6e3326c 8263567: gtests don't terminate the VM safely Reviewed-by: stuefe, dcubed ! test/hotspot/gtest/gtestMain.cpp ! test/hotspot/gtest/unittest.hpp Changeset: 9654fd73 Author: Igor Ignatyev Date: 2021-08-10 02:12:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9654fd73cd72e12cdb6934727f251dddacc18654 8271892: mark hotspot runtime/PrintStringTableStats/PrintStringTableStatsTest.java test as ignoring external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/PrintStringTableStats/PrintStringTableStatsTest.java Changeset: eb6f3fe5 Author: Igor Ignatyev Date: 2021-08-10 02:26:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/eb6f3fe59d469a369383a750d319318909cf8613 8272169: runtime/logging/LoaderConstraintsTest.java doesn't build test.Empty Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java Changeset: abdc1074 Author: Hamlin Li Date: 2021-08-10 03:18:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/abdc1074dcefda9012bb4d84c9f34a2dca5ea560 8270454: G1: Simplify region index comparison Reviewed-by: kbarrett, ayang, tschatzl ! src/hotspot/share/gc/g1/g1CollectionSet.cpp Changeset: 3b899ef7 Author: Igor Ignatyev Date: 2021-08-10 05:11:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3b899ef7ffd87477ac1b10f4334b127597e9fe32 8272168: some hotspot runtime/logging tests don't check exit code Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/logging/ClassInitializationTest.java ! test/hotspot/jtreg/runtime/logging/ClassResolutionTest.java ! test/hotspot/jtreg/runtime/logging/CondyIndyTest.java ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java ! test/hotspot/jtreg/runtime/logging/MonitorMismatchTest.java Changeset: d53d94b1 Author: Tobias Hartmann Date: 2021-08-10 05:36:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d53d94b14d09bbcbfd9bbc0d214ead9bd52e7f58 8271925: ZGC: Arraycopy stub passes invalid oop to load barrier Reviewed-by: neliasso, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Changeset: 2384e128 Author: Tobias Hartmann Date: 2021-08-10 05:37:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2384e128886ce8d60cb76e6cdae3a76ccebb9e89 8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert Reviewed-by: neliasso, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! test/hotspot/jtreg/compiler/arraycopy/TestObjectArrayClone.java Changeset: 089e83bf Author: Matthias Baesken Date: 2021-08-10 07:40:21 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/089e83bf1bf6f28cec8dd30288720b6d066301f0 8266490: Extend the OSContainer API to support the pids controller of cgroups Reviewed-by: sgehwolf, lucy ! src/hotspot/os/linux/cgroupSubsystem_linux.cpp ! src/hotspot/os/linux/cgroupSubsystem_linux.hpp ! src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp ! src/hotspot/os/linux/cgroupV1Subsystem_linux.hpp ! src/hotspot/os/linux/cgroupV2Subsystem_linux.cpp ! src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp ! src/hotspot/os/linux/osContainer_linux.cpp ! src/hotspot/os/linux/osContainer_linux.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/java.base/linux/classes/jdk/internal/platform/CgroupMetrics.java ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystem.java ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv1/CgroupV1Subsystem.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv2/CgroupV2Subsystem.java ! src/java.base/share/classes/jdk/internal/platform/Metrics.java ! src/java.base/share/classes/sun/launcher/LauncherHelper.java ! test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java ! test/hotspot/jtreg/containers/docker/TestMisc.java + test/hotspot/jtreg/containers/docker/TestPids.java + test/jdk/jdk/internal/platform/docker/TestPidsLimit.java ! test/lib/jdk/test/lib/containers/docker/Common.java Changeset: 1f881349 Author: Alan Hayward Committer: Nick Gasson Date: 2021-08-10 08:29:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1f8813495e8184b6c38319df1c2cb70de7811a76 8271869: AArch64: build errors with GCC11 in frame::saved_oop_result Reviewed-by: ngasson, aph ! src/hotspot/cpu/aarch64/frame_aarch64.inline.hpp Changeset: f2599ad8 Author: Albert Mingkun Yang Date: 2021-08-10 10:12:06 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f2599ad867476f11fdc455084bb64ab6e91fa146 8272196: Remove unused class ParStrongRootsScope Reviewed-by: tschatzl, pliden ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp Changeset: 2b05fae1 Author: Harold Seigel Date: 2021-08-10 12:17:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2b05fae15568d5eb91d6d6d32c29f2fda453a8f5 8260262: Use common code in function unmap_shared() in perfMemory_posix.cpp Reviewed-by: stuefe, coleenp ! src/hotspot/os/posix/perfMemory_posix.cpp Changeset: 35b399ac Author: Andrey Turbanov Committer: Jayathirth D V Date: 2021-08-10 13:27:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/35b399aca810db63371ff65046f047ef0b955161 8269130: Replace usages of Collection.toArray() with Collection.toArray(T[]) to avoid redundant array copying Reviewed-by: mullan, serb ! src/java.base/share/classes/java/security/Security.java ! src/java.base/share/classes/sun/security/pkcs/PKCS9Attributes.java ! src/java.desktop/share/classes/sun/font/SunFontManager.java ! src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java ! src/java.desktop/windows/classes/sun/awt/windows/WDesktopProperties.java ! src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PStack.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/SystemDictionaryHelper.java Changeset: 67869b49 Author: Martin Balao Date: 2021-08-10 16:28:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/67869b491ae1eaf311dfb8c61a9e94329a822ffc 8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup Reviewed-by: weijun ! src/java.security.jgss/share/classes/sun/security/krb5/internal/CredentialsUtil.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/ReferralsCache.java ! test/jdk/sun/security/krb5/auto/ReferralsTest.java Changeset: 57ae9fbe Author: Joe Darcy Date: 2021-08-10 16:49:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/57ae9fbe779e63f9606077047137b00220c6b3a2 8140442: Add getOutermostTypeElement to javax.lang.model utility class Reviewed-by: jlahoda ! src/java.compiler/share/classes/javax/lang/model/element/ElementKind.java ! src/java.compiler/share/classes/javax/lang/model/util/Elements.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.java ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/langtools/tools/javac/processing/model/util/elements/TestIsAutomaticMod.java + test/langtools/tools/javac/processing/model/util/elements/TestOutermostTypeElement.java Changeset: 66d1faa7 Author: Raffaello Giulietti Committer: Brian Burkhalter Date: 2021-08-10 17:16:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/66d1faa7847b645f20ab2e966adf0a523e3ffeb2 8271601: Math.floorMod(int, int) and Math.floorMod(long, long) differ in their logic Reviewed-by: bpb ! src/java.base/share/classes/java/lang/Math.java Changeset: b62e7420 Author: Alex Menkov Date: 2021-08-10 19:13:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b62e7420450dad5a807a5afa0f65f6632b344e29 8213714: AttachingConnector/attach/attach001 failed due to "bind failed: Address already in use" Reviewed-by: sspitsyn, cjplummer ! test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend001.java ! test/hotspot/jtreg/vmTestbase/nsk/share/IORedirector.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeProcess.java Changeset: 2a9acc31 Author: Dean Long Date: 2021-08-10 21:30:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2a9acc31b824ed964dfa2126bc5a859c79532d50 8272050: typo in MachSpillCopyNode::implementation after JDK-8131362 Reviewed-by: kvn, thartmann ! src/hotspot/cpu/aarch64/aarch64.ad Changeset: 14893527 Author: Sergey Bylokhov Date: 2021-08-10 22:22:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/148935279d177e66a08a7003975bce3077104e07 8271718: Crash when during color transformation the color profile is replaced Reviewed-by: prr ! src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMS.java + test/jdk/java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java Changeset: 5350b990 Author: Hui Shi Date: 2021-08-11 02:00:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5350b9901c6cebe5d40bbba9a31d1f26285b1cd6 8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj Reviewed-by: neliasso, xliu, thartmann ! src/hotspot/share/opto/macroArrayCopy.cpp + test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java Changeset: 846cc88f Author: Xiaowei Lu Committer: Per Liden Date: 2021-08-11 08:42:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/846cc88f9452a63269130b7fe17f504deaf2a773 8272138: ZGC: Adopt relaxed ordering for self-healing Co-authored-by: Hao Tang Reviewed-by: eosterlund, pliden ! src/hotspot/share/gc/z/zBarrier.inline.hpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: adba09b9 Author: Christoph G?ttschkes Committer: Aleksey Shipilev Date: 2021-08-11 08:48:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/adba09b91de2e86fe4eb844c9066a23b176176bd 8272146: Disable Fibonacci test on memory constrained systems Reviewed-by: dholmes, mseledtsov, shade ! test/hotspot/jtreg/runtime/Thread/Fibonacci.java Changeset: 3215dbc8 Author: Jan Lahoda Date: 2021-08-11 08:54:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3215dbc8b8e5f2c1454741dc7f94b0232c5d911f 8271928: ErroneousTree with start position -1 Reviewed-by: jlaskey, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/parser/JavacParserTest.java Changeset: 0d0f2d07 Author: Albert Mingkun Yang Date: 2021-08-11 10:19:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0d0f2d07f72cc709618e5e448d43be7704b1ac68 8272216: G1: replace G1ParScanThreadState::_dest with a constant Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Changeset: abebbe23 Author: Per Liden Date: 2021-08-11 11:07:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/abebbe2335a6dc9b12e5f271bf32cdc54f80b660 8267186: Add string deduplication support to ZGC Reviewed-by: eosterlund, kbarrett, stefank ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMark.hpp + src/hotspot/share/gc/z/zMarkContext.hpp + src/hotspot/share/gc/z/zMarkContext.inline.hpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: 3f723ca4 Author: Per Liden Date: 2021-08-11 11:09:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3f723ca4577b9cffeb6153ee386edd75f1dfb1c6 8271862: C2 intrinsic for Reference.refersTo() is often not used Reviewed-by: kbarrett, mchung ! src/java.base/share/classes/java/lang/ref/PhantomReference.java ! src/java.base/share/classes/java/lang/ref/Reference.java Changeset: cd1751c3 Author: Ivan Walulya Date: 2021-08-11 11:56:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd1751c34e974683f3d2734c8ad5823a6ea27295 8271884: G1CH::_expand_heap_after_alloc_failure is no longer needed Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1Allocator.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp Changeset: 61942276 Author: Ivan Walulya Date: 2021-08-11 14:33:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/619422764d55875c1b9687ae7e9ce4dc99b71bf9 8272228: G1: G1CardSetInlinePtr Fix tautological assertion Reviewed-by: ayang, tschatzl ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp Changeset: ec8d3bad Author: Jonathan Gibbons Date: 2021-08-11 18:03:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec8d3badc869be7898b5a49fa5f9ba447bbbcf8d 8271159: [REDO] JDK-8249634 doclint should report implicit constructor as missing javadoc comments Reviewed-by: darcy ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties ! test/langtools/jdk/javadoc/doclet/testDiagsLineCaret/TestDiagsLineCaret.java ! test/langtools/jdk/javadoc/doclet/testDocTreeDiags/TestDocTreeDiags.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testMissingComment/TestMissingComment.java ! test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java ! test/langtools/tools/doclint/AccessTest.java ! test/langtools/tools/doclint/AccessibilityTest.java ! test/langtools/tools/doclint/AnchorTest.java ! test/langtools/tools/doclint/AnchorTest2.java ! test/langtools/tools/doclint/CrashInAnnotateTest.java ! test/langtools/tools/doclint/CrashInAnnotateTest.out ! test/langtools/tools/doclint/CustomTagTest.java ! test/langtools/tools/doclint/DuplicateParamTest.java ! test/langtools/tools/doclint/DuplicateReturnTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.java ! test/langtools/tools/doclint/EmptyExceptionTest.java ! test/langtools/tools/doclint/EmptyParamTest.java ! test/langtools/tools/doclint/EmptyReturnTest.java ! test/langtools/tools/doclint/EmptySerialDataTest.java ! test/langtools/tools/doclint/EmptySerialFieldTest.java ! test/langtools/tools/doclint/EmptySinceTest.java ! test/langtools/tools/doclint/EmptyTagsTest.java ! test/langtools/tools/doclint/EmptyVersionTest.java ! test/langtools/tools/doclint/EndTagsTest.java ! test/langtools/tools/doclint/EndWithIdentifierTest.java ! test/langtools/tools/doclint/HtmlAttrsTest.java ! test/langtools/tools/doclint/HtmlTagsTest.java ! test/langtools/tools/doclint/LambdaTest.java ! test/langtools/tools/doclint/LiteralTest.java ! test/langtools/tools/doclint/MissingThrowsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.java + test/langtools/tools/doclint/NoArgsConstructorTest.java + test/langtools/tools/doclint/NoArgsConstructorTest.out ! test/langtools/tools/doclint/OverridesTest.java ! test/langtools/tools/doclint/ParaTagTest.java ! test/langtools/tools/doclint/ProvidesTest.java ! test/langtools/tools/doclint/ReferenceTest.java ! test/langtools/tools/doclint/SummaryTest.java ! test/langtools/tools/doclint/SyntaxTest.java ! test/langtools/tools/doclint/SyntheticTest.java + test/langtools/tools/doclint/SyntheticTest.out ! test/langtools/tools/doclint/UnfinishedInlineTagTest.java ! test/langtools/tools/doclint/UsesTest.java ! test/langtools/tools/doclint/ValueTest.java ! test/langtools/tools/doclint/anchorTests/p/Test.java ! test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java ! test/langtools/tools/doclint/html/InlineTagsTest.java ! test/langtools/tools/doclint/html/ListTagsTest.java ! test/langtools/tools/doclint/html/OtherTagsTest.java ! test/langtools/tools/doclint/html/TableTagsTest.java ! test/langtools/tools/doclint/html/TagNotAllowed.java ! test/langtools/tools/doclint/html/TextNotAllowed.java ! test/langtools/tools/doclint/html/UnknownTagTest.java ! test/langtools/tools/doclint/packageTests/bad/Test.java ! test/langtools/tools/doclint/tidy/AnchorAlreadyDefined.java ! test/langtools/tools/doclint/tidy/BadEnd.java ! test/langtools/tools/doclint/tidy/InsertImplicit.java ! test/langtools/tools/doclint/tidy/InvalidEntity.java ! test/langtools/tools/doclint/tidy/InvalidName.java ! test/langtools/tools/doclint/tidy/InvalidTag.java ! test/langtools/tools/doclint/tidy/InvalidURI.java ! test/langtools/tools/doclint/tidy/MissingGT.java ! test/langtools/tools/doclint/tidy/MissingTag.java ! test/langtools/tools/doclint/tidy/NestedTag.java ! test/langtools/tools/doclint/tidy/ParaInPre.java ! test/langtools/tools/doclint/tidy/RepeatedAttr.java ! test/langtools/tools/doclint/tidy/TextNotAllowed.java ! test/langtools/tools/doclint/tidy/TrimmingEmptyTag.java ! test/langtools/tools/doclint/tidy/UnescapedOrUnknownEntity.java ! test/langtools/tools/doclint/tool/MaxDiagsTest.java ! test/langtools/tools/doclint/tool/StatsTest.java ! test/langtools/tools/javac/doclint/DocLintFormatTest.java ! test/langtools/tools/javac/doclint/DocLintTest.java ! test/langtools/tools/javac/doclint/IncludePackagesTest.java ! test/langtools/tools/javac/doclint/NPEDuplicateClassNamesTest.java Changeset: 9ba8a12c Author: Jonathan Gibbons Date: 2021-08-11 18:04:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9ba8a12cfbb3d7d17be454e29ee6ff476c8690c2 8269774: doclint reports missing javadoc comments for JavaFX properties if the docs are on the property method Reviewed-by: kcr, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java + test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXMissingPropComments.java Changeset: 75a06421 Author: Igor Ignatyev Date: 2021-08-11 19:38:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/75a06421e596b0e0006120a13836ec65a3ab9d46 8272335: runtime/cds/appcds/MoveJDKTest.java doesn't check exit codes Reviewed-by: iklam ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java Changeset: 9faab400 Author: Igor Veresov Date: 2021-08-11 20:19:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9faab400b8cf0611f14d377ea55a58d99795fa57 8272330: C2: Cleanup profile counter scaling Reviewed-by: kvn ! src/hotspot/share/ci/ciMethod.cpp Changeset: cd2dbe5f Author: Alexey Semenyuk Date: 2021-08-11 20:54:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd2dbe5f007baf81ae9262c1152917e620970621 8272328: java.library.path is not set properly by Windows jpackage app launcher Reviewed-by: herrick, almatvee ! src/jdk.jpackage/share/native/applauncher/AppLauncher.cpp ! src/jdk.jpackage/share/native/applauncher/AppLauncher.h ! src/jdk.jpackage/windows/native/applauncher/WinLauncher.cpp ! src/jdk.jpackage/windows/native/common/WinSysInfo.cpp Changeset: 44f137ff Author: Alexey Semenyuk Date: 2021-08-11 23:39:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/44f137ff9c0229ab2d5eccd9ebaadf8db11f386d 8271170: Add unit test for what jpackage app launcher puts in the environment Reviewed-by: almatvee, herrick = test/jdk/tools/jpackage/apps/Hello.java + test/jdk/tools/jpackage/apps/PrintEnv.java - test/jdk/tools/jpackage/apps/installer/Hello.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java ! test/jdk/tools/jpackage/share/AddLauncherTest.java + test/jdk/tools/jpackage/share/AppLauncherEnvTest.java Changeset: bd27bb9c Author: Igor Ignatyev Date: 2021-08-12 03:45:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bd27bb9cbedebd09f589679947ff32261f9ef352 8272345: macos doesn't check `os::set_boot_path()` result Reviewed-by: dholmes ! src/hotspot/os/bsd/os_bsd.cpp ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java Changeset: ec2fc384 Author: Sergey Bylokhov Date: 2021-08-12 05:46:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec2fc384e50668b667335f973ffeb5a19bbcfb9b 8272120: Avoid looking for standard encodings in "java." modules Reviewed-by: alanb, dfuchs, naoto ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.management/share/classes/com/sun/jmx/remote/security/HashedPasswordManager.java ! src/java.management/share/classes/javax/management/loading/MLetParser.java ! src/java.management/share/classes/sun/management/counter/perf/PerfDataEntry.java ! src/java.management/share/classes/sun/management/counter/perf/PerfDataType.java ! src/java.naming/share/classes/com/sun/jndi/ldap/Ber.java ! src/java.naming/share/classes/com/sun/jndi/ldap/BerDecoder.java ! src/java.naming/share/classes/com/sun/jndi/ldap/BerEncoder.java ! src/java.naming/share/classes/com/sun/jndi/ldap/Filter.java ! src/java.naming/share/classes/com/sun/jndi/ldap/LdapClient.java ! src/java.naming/share/classes/com/sun/jndi/ldap/LdapName.java ! src/java.naming/share/classes/com/sun/jndi/ldap/sasl/DefaultCallbackHandler.java ! src/java.naming/share/classes/javax/naming/ldap/Rdn.java ! src/java.net.http/share/classes/jdk/internal/net/http/ResponseContent.java ! src/java.xml/share/classes/javax/xml/catalog/Normalizer.java Changeset: a15b6592 Author: Claes Redestad Date: 2021-08-12 07:01:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a15b659278741337aefc15ce8002df66ce6323c0 8271732: Regression in StringBuilder.charAt bounds checking Reviewed-by: alanb, naoto ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java + test/jdk/java/lang/StringBuilder/CharAt.java ! test/micro/org/openjdk/bench/java/lang/StringBuilders.java Changeset: d38b3143 Author: Severin Gehwolf Date: 2021-08-12 08:52:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d38b31438dd4730ee2149c02277d60c35b9d7d81 8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790 Reviewed-by: prr ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: b29fbad9 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-12 10:03:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b29fbad940808c59f30e60222a9ca7a23c8e54b9 8267844: Replace Integer/Long.valueOf() with Integer/Long.parse*() where applicable Reviewed-by: redestad ! src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java ! src/java.base/share/classes/java/lang/Integer.java ! src/java.base/share/classes/java/lang/Long.java ! src/java.base/share/classes/jdk/internal/misc/VM.java ! test/micro/org/openjdk/bench/java/lang/Integers.java ! test/micro/org/openjdk/bench/java/lang/Longs.java Changeset: 7e14c3cc Author: Xiaohong Gong Committer: Jie Fu Date: 2021-08-12 11:07:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7e14c3cc112e109f0fc79c661eafd2fb14f22431 8272310: AArch64: Add missing changes for shared vector helper methods in m4 files Reviewed-by: jiefu ! src/hotspot/cpu/aarch64/aarch64_neon_ad.m4 ! src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 Changeset: 464e874a Author: Coleen Phillimore Date: 2021-08-12 13:45:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/464e874a5c6b46fcc729227764d07feb1801314d 8048190: NoClassDefFoundError omits original ExceptionInInitializerError Reviewed-by: dholmes, iklam ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp + test/hotspot/jtreg/runtime/ClassInitErrors/InitExceptionUnloadTest.java Changeset: 9980b413 Author: Harold Seigel Date: 2021-08-12 13:56:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9980b413da47ac7dff74e66aaf12833e48fcce1d 8272107: Removal of Unsafe::defineAnonymousClass left a dangling C++ class Reviewed-by: coleenp, iklam, dholmes ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/metaspaceClosure.hpp ! src/hotspot/share/oops/constantPool.cpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/constantPool.inline.hpp ! src/hotspot/share/oops/symbol.hpp ! src/hotspot/share/services/heapDumper.cpp Changeset: 93cab7d0 Author: Kim Barrett Date: 2021-08-12 14:29:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/93cab7d07d56fef6973ce8ac2e8232e8f3b185dd 8272315: Improve assert_different_registers Reviewed-by: adinn, vlivanov, thartmann ! src/hotspot/share/asm/register.hpp Changeset: 428d5169 Author: Brian Burkhalter Date: 2021-08-12 15:27:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/428d51694f56788f89e8df100a74cbadd369ffa6 8140241: (fc) Data transfer from FileChannel to itself causes hang in case of overlap Reviewed-by: alanb ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/FileDispatcher.java ! src/java.base/unix/classes/sun/nio/ch/FileDispatcherImpl.java ! src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c ! src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java + test/jdk/java/nio/channels/FileChannel/TransferOverlappedFileChannel.java Changeset: e4766ee0 Author: Xue-Lei Andrew Fan Date: 2021-08-12 19:28:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e4766ee0aa96ab80aeaca36afac5fcaa516620ef 8272391: Undeleted debug information Reviewed-by: wetmore ! src/java.base/share/classes/sun/security/provider/DSAParameterGenerator.java Changeset: 09ab86b4 Author: Lin Zang Committer: Serguei Spitsyn Date: 2021-08-12 23:16:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/09ab86b40cb11d526c70e0a1847451e06c54a58c 8269909: getStack method in hprof.parser.Reader should use try-with-resource Reviewed-by: dholmes, cjplummer, sspitsyn ! test/lib/jdk/test/lib/hprof/parser/Reader.java Changeset: 4d4ba5c5 Author: Hui Shi Date: 2021-08-13 01:00:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4d4ba5c5b4a12a28587a67d8fd56041d3f94b959 8272116: Update PerfDisableSharedMem with FLAG_SET_ERGO in PerfMemory::create_memory_region Reviewed-by: dholmes ! src/hotspot/os/posix/perfMemory_posix.cpp ! src/hotspot/os/windows/perfMemory_windows.cpp Changeset: 020aec53 Author: Jatin Bhateja Date: 2021-08-13 04:33:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/020aec531801a556582c80c4b5d31eaf538781e8 8271366: [REDO] JDK-8266054 VectorAPI rotate operation optimization Reviewed-by: sviswanathan, psandoz ! src/hotspot/cpu/aarch64/matcher_aarch64.hpp ! src/hotspot/cpu/arm/matcher_arm.hpp ! src/hotspot/cpu/ppc/matcher_ppc.hpp ! src/hotspot/cpu/s390/matcher_s390.hpp ! src/hotspot/cpu/x86/matcher_x86.hpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! src/hotspot/share/prims/vectorSupport.cpp ! src/hotspot/share/prims/vectorSupport.hpp ! src/java.base/share/classes/jdk/internal/vm/vector/VectorSupport.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorOperators.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template ! test/jdk/jdk/incubator/vector/Byte128VectorTests.java ! test/jdk/jdk/incubator/vector/Byte256VectorTests.java ! test/jdk/jdk/incubator/vector/Byte512VectorTests.java ! test/jdk/jdk/incubator/vector/Byte64VectorTests.java ! test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Double128VectorTests.java ! test/jdk/jdk/incubator/vector/Double256VectorTests.java ! test/jdk/jdk/incubator/vector/Double512VectorTests.java ! test/jdk/jdk/incubator/vector/Double64VectorTests.java ! test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Float128VectorTests.java ! test/jdk/jdk/incubator/vector/Float256VectorTests.java ! test/jdk/jdk/incubator/vector/Float512VectorTests.java ! test/jdk/jdk/incubator/vector/Float64VectorTests.java ! test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Int128VectorTests.java ! test/jdk/jdk/incubator/vector/Int256VectorTests.java ! test/jdk/jdk/incubator/vector/Int512VectorTests.java ! test/jdk/jdk/incubator/vector/Int64VectorTests.java ! test/jdk/jdk/incubator/vector/IntMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Long128VectorTests.java ! test/jdk/jdk/incubator/vector/Long256VectorTests.java ! test/jdk/jdk/incubator/vector/Long512VectorTests.java ! test/jdk/jdk/incubator/vector/Long64VectorTests.java ! test/jdk/jdk/incubator/vector/LongMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Short128VectorTests.java ! test/jdk/jdk/incubator/vector/Short256VectorTests.java ! test/jdk/jdk/incubator/vector/Short512VectorTests.java ! test/jdk/jdk/incubator/vector/Short64VectorTests.java ! test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java ! test/jdk/jdk/incubator/vector/gen-template.sh ! test/jdk/jdk/incubator/vector/templates/Unit-Shift-Masked-op.template ! test/jdk/jdk/incubator/vector/templates/Unit-Shift-op.template ! test/jdk/jdk/incubator/vector/templates/Unit-header.template + test/micro/org/openjdk/bench/jdk/incubator/vector/RotateBenchmark.java Changeset: 0c4be76f Author: Prasanta Sadhukhan Date: 2021-08-13 05:12:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0c4be76f7ff3cd5e32c8eb4e04e6986d5f33fbee 8058704: Nimbus does not honor JTextPane background color 6789980: JEditorPane background color not honored with Nimbus L&F Reviewed-by: aivanov, serb ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf + test/jdk/javax/swing/plaf/nimbus/TestNimbusBGColor.java Changeset: d06d0b9e Author: Thomas Stuefe Date: 2021-08-13 06:38:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d06d0b9e9d9d27aa549455f19b9803752431bcbb 8272112: Arena code simplifications Reviewed-by: kbarrett, coleenp ! src/hotspot/share/memory/arena.cpp ! src/hotspot/share/runtime/init.cpp ! test/hotspot/gtest/memory/test_arena.cpp Changeset: 8da26ad8 Author: duke Date: 2021-08-13 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/8da26ad881a5fa4ae033364d33d19ffd45baed1e Automatic merge of jdk:master into master Changeset: 238965b1 Author: duke Date: 2021-08-13 11:00:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/238965b190fd60160064bf068c3e47715f5373df Automatic merge of master into foreign-memaccess+abi From duke at openjdk.java.net Fri Aug 13 11:13:48 2021 From: duke at openjdk.java.net (duke) Date: Fri, 13 Aug 2021 11:13:48 GMT Subject: git: openjdk/panama-foreign: master: 67 new changesets Message-ID: <93aa93df-f76f-4383-84cb-4f994358464f@openjdk.org> Changeset: 0aca4f72 Author: Andy Herrick Date: 2021-08-06 12:24:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0aca4f72ce48bc75f2c466d1cba4ad70d3c7b875 8271868: Warn user when using mac-sign option with unsigned app-image. Reviewed-by: almatvee, asemenyuk ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacAppImageBuilder.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacPkgBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources.properties ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_ja.properties ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/MacResources_zh_CN.properties ! src/jdk.jpackage/share/classes/jdk/jpackage/internal/AppImageFile.java ! src/jdk.jpackage/share/classes/jdk/jpackage/internal/StandardBundlerParam.java Changeset: f4cf2f7c Author: Daniel D. Daugherty Date: 2021-08-06 13:38:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f4cf2f7cef6c09c16d714f08505327edd7032604 8272095: ProblemList java/nio/channels/FileChannel/Transfer2GPlus.java on linux-aarch64 Reviewed-by: alanb ! test/jdk/ProblemList.txt Changeset: cc615208 Author: Hamlin Li Date: 2021-08-06 14:16:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cc61520803513e5aab597322303145562948c9a6 8270842: G1: Only young regions need to redirty outside references in remset. Reviewed-by: tschatzl ! src/hotspot/share/gc/g1/g1EvacFailure.cpp Changeset: fa36e334 Author: Daniel D. Daugherty Date: 2021-08-06 14:18:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fa36e33437e9c8346a75ace8ed1b8c245b919d25 8271513: support JavaThreadIteratorWithHandle replacement by new ThreadsList::Iterator Co-authored-by: Kim Barrett Reviewed-by: kbarrett, dholmes, coleenp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/threadSMR.hpp ! src/hotspot/share/runtime/threadSMR.inline.hpp Changeset: e882087f Author: Igor Ignatyev Date: 2021-08-06 16:36:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e882087f7abb21eb776af8c14bc62e7624ebb7f3 8271904: mark hotspot runtime/ClassFile tests which ignore external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/ClassFile/FormatCheckingTest.java ! test/hotspot/jtreg/runtime/ClassFile/JsrRewriting.java ! test/hotspot/jtreg/runtime/ClassFile/OomWhileParsingRepeatedJsr.java ! test/hotspot/jtreg/runtime/ClassFile/TestCheckedExceptions.java Changeset: c495ede2 Author: Igor Ignatyev Date: 2021-08-06 18:49:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c495ede2c2df405e6eec0e205cd67401d7826c4c 8272099: mark hotspot runtime/Monitor tests which ignore external VM flags Reviewed-by: dcubed ! test/hotspot/jtreg/runtime/Monitor/MonitorUsedDeflationThresholdTest.java ! test/hotspot/jtreg/runtime/Monitor/SyncOnValueBasedClassTest.java Changeset: 38ff85c8 Author: Jie Fu Date: 2021-08-06 23:33:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/38ff85c824750e7da66fd86f5bde1c4587e529c4 8271461: CompileCommand support for hidden class methods Co-authored-by: Tianyelan Reviewed-by: yyang, xliu, iklam ! src/hotspot/share/compiler/methodMatcher.cpp Changeset: b84a9c7b Author: Hao Sun Committer: Aleksey Shipilev Date: 2021-08-09 09:38:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b84a9c7b377282bd9b3d9ac78707f0c12f8dc53d 8271956: AArch64: C1 build failed after JDK-8270947 Reviewed-by: shade, ngasson ! src/hotspot/cpu/aarch64/macroAssembler_aarch64.cpp Changeset: a86ac0d1 Author: Roman Kennke Date: 2021-08-09 10:31:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a86ac0d1e3a6f02e587362c767abdf62b308d321 8271939: Clean up primitive raw accessors in oopDesc Reviewed-by: stefank, tschatzl ! src/hotspot/share/cds/heapShared.cpp ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/oops/instanceClassLoaderKlass.inline.hpp ! src/hotspot/share/oops/instanceMirrorKlass.cpp ! src/hotspot/share/oops/instanceMirrorKlass.inline.hpp ! src/hotspot/share/oops/oop.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 2f7a4693 Author: Albert Mingkun Yang Date: 2021-08-09 15:19:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2f7a46934c7f8cc024083aefc400d5d52f2c95a7 8271931: Make AbortVMOnVMOperationTimeout more resilient to OS scheduling Reviewed-by: shade, dholmes ! src/hotspot/share/runtime/vmThread.cpp ! src/hotspot/share/runtime/vmThread.hpp Changeset: 272fcb42 Author: Ioi Lam Date: 2021-08-09 15:50:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/272fcb423a79b5b8bb4a80679b6b48feca66ebca 8272113: Build compare script fails with differences in classlist Reviewed-by: tschatzl, hseigel ! make/scripts/compare.sh Changeset: 0ac2be9b Author: Phil Race Date: 2021-08-09 15:58:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0ac2be9b35c56b4b1574cf03fe81111d3f39bedb 8272123: Problem list 4 jtreg tests which regularly fail on macos-aarch64 Reviewed-by: jdv, psadhukhan ! test/jdk/ProblemList.txt Changeset: 9c6457f2 Author: Artem Semenov Committer: Anton Tarasov Date: 2021-08-09 16:21:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9c6457f222e702b60fef4247c3e241c669eb9491 8267385: Create NSAccessibilityElement implementation for JavaComponentAccessibility 8262031: Create implementation for NSAccessibilityNavigableStaticText protocol 8264287: Create implementation for NSAccessibilityComboBox protocol peer 8264303: Create implementation for NSAccessibilityTabGroup protocol peer 8264292: Create implementation for NSAccessibilityList protocol peer 8267387: Create implementation for NSAccessibilityOutline protocol 8267388: Create implementation for NSAccessibilityTable protocol 8264286: Create implementation for NSAccessibilityColumn protocol peer 8264298: Create implementation for NSAccessibilityRow protocol peer 8264291: Create implementation for NSAccessibilityCell protocol peer Reviewed-by: kizune, pbansal, serb ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessibility.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CAccessible.java ! src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityAction.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaAccessibilityUtilities.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaComponentAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/JavaTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ButtonAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CellAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CellAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CheckboxAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ColumnAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ColumnAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ComboBoxAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ComboBoxAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonComponentAccessibility.h ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonComponentAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/CommonTextAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/GroupAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ImageAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ListRowAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/NavigableTextAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/OutlineRowAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/RadiobuttonAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/ScrollAreaAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SliderAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/SpinboxAccessibility.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/StaticTextAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabButtonAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabButtonAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabGroupAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TabGroupAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableAccessibility.m + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableRowAccessibility.h + src/java.desktop/macosx/native/libawt_lwawt/awt/a11y/TableRowAccessibility.m + test/jdk/java/awt/a11y/AccessibleComponentTest.java + test/jdk/java/awt/a11y/AccessibleJComboboxTest.java + test/jdk/java/awt/a11y/AccessibleJListTest.java + test/jdk/java/awt/a11y/AccessibleJTabbedPaneTest.java + test/jdk/java/awt/a11y/AccessibleJTableTest.java + test/jdk/java/awt/a11y/AccessibleJTreeTest.java + test/jdk/java/awt/a11y/AccessibleTextTest.java Changeset: 41dc795d Author: Naoto Sato Date: 2021-08-09 16:22:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/41dc795d6c08af84aa6544cc5a5704dcf99386cf 8264792: The NumberFormat for locale sq_XK formats price incorrectly. Reviewed-by: joehw, iris ! make/data/currency/CurrencyData.properties ! test/jdk/java/util/Currency/CurrencyTest.java ! test/jdk/java/util/Currency/ValidateISO4217.java Changeset: b53828b7 Author: Brian Burkhalter Date: 2021-08-09 16:50:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b53828b7c219f8f8fb22177bcc80b045ef7bad76 8272047: java/nio/channels/FileChannel/Transfer2GPlus.java failed with Unexpected transfer size: 2147418112 Reviewed-by: naoto, alanb ! test/jdk/ProblemList.txt ! test/jdk/java/nio/channels/FileChannel/Transfer2GPlus.java Changeset: 4548677e Author: Phil Race Date: 2021-08-09 18:15:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4548677e89fb7807639602d29b87dcaabe7b6d8d 8268824: Remove unused jdk.accessibility APIs deprecated for removal in JDK 9 Reviewed-by: serb ! src/jdk.accessibility/share/classes/com/sun/java/accessibility/util/AWTEventMonitor.java Changeset: 7fc99cf9 Author: Joe Darcy Date: 2021-08-09 18:33:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7fc99cf9b69f99fc78709e57b92cd88e09577d0f 8225488: Examine ExecutableType.getReceiverType behavior when source receiver parameter is absent Reviewed-by: jjg ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Symbol.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/code/Type.java ! test/langtools/tools/javac/processing/model/element/TestExecutableReceiverType.java ! test/langtools/tools/javac/processing/model/type/BasicAnnoTests.java Changeset: 843943c2 Author: David Holmes Date: 2021-08-09 20:59:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/843943c204f6e8ca046919eae4e727bef6e3326c 8263567: gtests don't terminate the VM safely Reviewed-by: stuefe, dcubed ! test/hotspot/gtest/gtestMain.cpp ! test/hotspot/gtest/unittest.hpp Changeset: 9654fd73 Author: Igor Ignatyev Date: 2021-08-10 02:12:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9654fd73cd72e12cdb6934727f251dddacc18654 8271892: mark hotspot runtime/PrintStringTableStats/PrintStringTableStatsTest.java test as ignoring external VM flags Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/PrintStringTableStats/PrintStringTableStatsTest.java Changeset: eb6f3fe5 Author: Igor Ignatyev Date: 2021-08-10 02:26:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/eb6f3fe59d469a369383a750d319318909cf8613 8272169: runtime/logging/LoaderConstraintsTest.java doesn't build test.Empty Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java Changeset: abdc1074 Author: Hamlin Li Date: 2021-08-10 03:18:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/abdc1074dcefda9012bb4d84c9f34a2dca5ea560 8270454: G1: Simplify region index comparison Reviewed-by: kbarrett, ayang, tschatzl ! src/hotspot/share/gc/g1/g1CollectionSet.cpp Changeset: 3b899ef7 Author: Igor Ignatyev Date: 2021-08-10 05:11:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3b899ef7ffd87477ac1b10f4334b127597e9fe32 8272168: some hotspot runtime/logging tests don't check exit code Reviewed-by: jiefu ! test/hotspot/jtreg/runtime/logging/ClassInitializationTest.java ! test/hotspot/jtreg/runtime/logging/ClassResolutionTest.java ! test/hotspot/jtreg/runtime/logging/CondyIndyTest.java ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java ! test/hotspot/jtreg/runtime/logging/MonitorMismatchTest.java Changeset: d53d94b1 Author: Tobias Hartmann Date: 2021-08-10 05:36:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d53d94b14d09bbcbfd9bbc0d214ead9bd52e7f58 8271925: ZGC: Arraycopy stub passes invalid oop to load barrier Reviewed-by: neliasso, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp Changeset: 2384e128 Author: Tobias Hartmann Date: 2021-08-10 05:37:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2384e128886ce8d60cb76e6cdae3a76ccebb9e89 8270098: ZGC: ZBarrierSetC2::clone_at_expansion fails with "Guard against surprises" assert Reviewed-by: neliasso, kvn ! src/hotspot/share/gc/z/c2/zBarrierSetC2.cpp ! test/hotspot/jtreg/compiler/arraycopy/TestObjectArrayClone.java Changeset: 089e83bf Author: Matthias Baesken Date: 2021-08-10 07:40:21 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/089e83bf1bf6f28cec8dd30288720b6d066301f0 8266490: Extend the OSContainer API to support the pids controller of cgroups Reviewed-by: sgehwolf, lucy ! src/hotspot/os/linux/cgroupSubsystem_linux.cpp ! src/hotspot/os/linux/cgroupSubsystem_linux.hpp ! src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp ! src/hotspot/os/linux/cgroupV1Subsystem_linux.hpp ! src/hotspot/os/linux/cgroupV2Subsystem_linux.cpp ! src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp ! src/hotspot/os/linux/osContainer_linux.cpp ! src/hotspot/os/linux/osContainer_linux.hpp ! src/hotspot/os/linux/os_linux.cpp ! src/hotspot/share/prims/whitebox.cpp ! src/java.base/linux/classes/jdk/internal/platform/CgroupMetrics.java ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystem.java ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv1/CgroupV1Subsystem.java ! src/java.base/linux/classes/jdk/internal/platform/cgroupv2/CgroupV2Subsystem.java ! src/java.base/share/classes/jdk/internal/platform/Metrics.java ! src/java.base/share/classes/sun/launcher/LauncherHelper.java ! test/hotspot/jtreg/containers/cgroup/CgroupSubsystemFactory.java ! test/hotspot/jtreg/containers/docker/TestMisc.java + test/hotspot/jtreg/containers/docker/TestPids.java + test/jdk/jdk/internal/platform/docker/TestPidsLimit.java ! test/lib/jdk/test/lib/containers/docker/Common.java Changeset: 1f881349 Author: Alan Hayward Committer: Nick Gasson Date: 2021-08-10 08:29:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1f8813495e8184b6c38319df1c2cb70de7811a76 8271869: AArch64: build errors with GCC11 in frame::saved_oop_result Reviewed-by: ngasson, aph ! src/hotspot/cpu/aarch64/frame_aarch64.inline.hpp Changeset: f2599ad8 Author: Albert Mingkun Yang Date: 2021-08-10 10:12:06 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f2599ad867476f11fdc455084bb64ab6e91fa146 8272196: Remove unused class ParStrongRootsScope Reviewed-by: tschatzl, pliden ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp Changeset: 2b05fae1 Author: Harold Seigel Date: 2021-08-10 12:17:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2b05fae15568d5eb91d6d6d32c29f2fda453a8f5 8260262: Use common code in function unmap_shared() in perfMemory_posix.cpp Reviewed-by: stuefe, coleenp ! src/hotspot/os/posix/perfMemory_posix.cpp Changeset: 35b399ac Author: Andrey Turbanov Committer: Jayathirth D V Date: 2021-08-10 13:27:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/35b399aca810db63371ff65046f047ef0b955161 8269130: Replace usages of Collection.toArray() with Collection.toArray(T[]) to avoid redundant array copying Reviewed-by: mullan, serb ! src/java.base/share/classes/java/security/Security.java ! src/java.base/share/classes/sun/security/pkcs/PKCS9Attributes.java ! src/java.desktop/share/classes/sun/font/SunFontManager.java ! src/java.desktop/share/classes/sun/java2d/SunGraphicsEnvironment.java ! src/java.desktop/windows/classes/sun/awt/windows/WDesktopProperties.java ! src/java.sql.rowset/share/classes/com/sun/rowset/JoinRowSetImpl.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/tools/PStack.java ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/SystemDictionaryHelper.java Changeset: 67869b49 Author: Martin Balao Date: 2021-08-10 16:28:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/67869b491ae1eaf311dfb8c61a9e94329a822ffc 8270137: Kerberos Credential Retrieval from Cache not Working in Cross-Realm Setup Reviewed-by: weijun ! src/java.security.jgss/share/classes/sun/security/krb5/internal/CredentialsUtil.java ! src/java.security.jgss/share/classes/sun/security/krb5/internal/ReferralsCache.java ! test/jdk/sun/security/krb5/auto/ReferralsTest.java Changeset: 57ae9fbe Author: Joe Darcy Date: 2021-08-10 16:49:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/57ae9fbe779e63f9606077047137b00220c6b3a2 8140442: Add getOutermostTypeElement to javax.lang.model utility class Reviewed-by: jlahoda ! src/java.compiler/share/classes/javax/lang/model/element/ElementKind.java ! src/java.compiler/share/classes/javax/lang/model/util/Elements.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/model/JavacElements.java ! test/langtools/tools/javac/lib/JavacTestingAbstractProcessor.java ! test/langtools/tools/javac/processing/model/util/elements/TestIsAutomaticMod.java + test/langtools/tools/javac/processing/model/util/elements/TestOutermostTypeElement.java Changeset: 66d1faa7 Author: Raffaello Giulietti Committer: Brian Burkhalter Date: 2021-08-10 17:16:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/66d1faa7847b645f20ab2e966adf0a523e3ffeb2 8271601: Math.floorMod(int, int) and Math.floorMod(long, long) differ in their logic Reviewed-by: bpb ! src/java.base/share/classes/java/lang/Math.java Changeset: b62e7420 Author: Alex Menkov Date: 2021-08-10 19:13:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b62e7420450dad5a807a5afa0f65f6632b344e29 8213714: AttachingConnector/attach/attach001 failed due to "bind failed: Address already in use" Reviewed-by: sspitsyn, cjplummer ! test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attach/attach001.java ! test/hotspot/jtreg/vmTestbase/nsk/jdi/AttachingConnector/attachnosuspend/attachnosuspend001.java ! test/hotspot/jtreg/vmTestbase/nsk/share/IORedirector.java ! test/hotspot/jtreg/vmTestbase/nsk/share/jpda/DebugeeProcess.java Changeset: 2a9acc31 Author: Dean Long Date: 2021-08-10 21:30:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2a9acc31b824ed964dfa2126bc5a859c79532d50 8272050: typo in MachSpillCopyNode::implementation after JDK-8131362 Reviewed-by: kvn, thartmann ! src/hotspot/cpu/aarch64/aarch64.ad Changeset: 14893527 Author: Sergey Bylokhov Date: 2021-08-10 22:22:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/148935279d177e66a08a7003975bce3077104e07 8271718: Crash when during color transformation the color profile is replaced Reviewed-by: prr ! src/java.desktop/share/classes/sun/java2d/cmm/lcms/LCMS.java + test/jdk/java/awt/color/ICC_ColorSpace/MTTransformReplacedProfile.java Changeset: 5350b990 Author: Hui Shi Date: 2021-08-11 02:00:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5350b9901c6cebe5d40bbba9a31d1f26285b1cd6 8272131: PhaseMacroExpand::generate_slow_arraycopy crash when clone null CallProjections.fallthrough_ioproj Reviewed-by: neliasso, xliu, thartmann ! src/hotspot/share/opto/macroArrayCopy.cpp + test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java Changeset: 846cc88f Author: Xiaowei Lu Committer: Per Liden Date: 2021-08-11 08:42:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/846cc88f9452a63269130b7fe17f504deaf2a773 8272138: ZGC: Adopt relaxed ordering for self-healing Co-authored-by: Hao Tang Reviewed-by: eosterlund, pliden ! src/hotspot/share/gc/z/zBarrier.inline.hpp ! src/hotspot/share/gc/z/zForwarding.inline.hpp Changeset: adba09b9 Author: Christoph G?ttschkes Committer: Aleksey Shipilev Date: 2021-08-11 08:48:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/adba09b91de2e86fe4eb844c9066a23b176176bd 8272146: Disable Fibonacci test on memory constrained systems Reviewed-by: dholmes, mseledtsov, shade ! test/hotspot/jtreg/runtime/Thread/Fibonacci.java Changeset: 3215dbc8 Author: Jan Lahoda Date: 2021-08-11 08:54:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3215dbc8b8e5f2c1454741dc7f94b0232c5d911f 8271928: ErroneousTree with start position -1 Reviewed-by: jlaskey, vromero ! src/jdk.compiler/share/classes/com/sun/tools/javac/tree/TreeInfo.java ! test/langtools/tools/javac/parser/JavacParserTest.java Changeset: 0d0f2d07 Author: Albert Mingkun Yang Date: 2021-08-11 10:19:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0d0f2d07f72cc709618e5e448d43be7704b1ac68 8272216: G1: replace G1ParScanThreadState::_dest with a constant Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp ! src/hotspot/share/gc/g1/g1ParScanThreadState.hpp Changeset: abebbe23 Author: Per Liden Date: 2021-08-11 11:07:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/abebbe2335a6dc9b12e5f271bf32cdc54f80b660 8267186: Add string deduplication support to ZGC Reviewed-by: eosterlund, kbarrett, stefank ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/gc/z/zMark.hpp + src/hotspot/share/gc/z/zMarkContext.hpp + src/hotspot/share/gc/z/zMarkContext.inline.hpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: 3f723ca4 Author: Per Liden Date: 2021-08-11 11:09:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3f723ca4577b9cffeb6153ee386edd75f1dfb1c6 8271862: C2 intrinsic for Reference.refersTo() is often not used Reviewed-by: kbarrett, mchung ! src/java.base/share/classes/java/lang/ref/PhantomReference.java ! src/java.base/share/classes/java/lang/ref/Reference.java Changeset: cd1751c3 Author: Ivan Walulya Date: 2021-08-11 11:56:30 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd1751c34e974683f3d2734c8ad5823a6ea27295 8271884: G1CH::_expand_heap_after_alloc_failure is no longer needed Reviewed-by: kbarrett, tschatzl ! src/hotspot/share/gc/g1/g1Allocator.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1CollectedHeap.hpp Changeset: 61942276 Author: Ivan Walulya Date: 2021-08-11 14:33:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/619422764d55875c1b9687ae7e9ce4dc99b71bf9 8272228: G1: G1CardSetInlinePtr Fix tautological assertion Reviewed-by: ayang, tschatzl ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp Changeset: ec8d3bad Author: Jonathan Gibbons Date: 2021-08-11 18:03:40 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec8d3badc869be7898b5a49fa5f9ba447bbbcf8d 8271159: [REDO] JDK-8249634 doclint should report implicit constructor as missing javadoc comments Reviewed-by: darcy ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties ! test/langtools/jdk/javadoc/doclet/testDiagsLineCaret/TestDiagsLineCaret.java ! test/langtools/jdk/javadoc/doclet/testDocTreeDiags/TestDocTreeDiags.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java ! test/langtools/jdk/javadoc/doclet/testMissingComment/TestMissingComment.java ! test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java ! test/langtools/tools/doclint/AccessTest.java ! test/langtools/tools/doclint/AccessibilityTest.java ! test/langtools/tools/doclint/AnchorTest.java ! test/langtools/tools/doclint/AnchorTest2.java ! test/langtools/tools/doclint/CrashInAnnotateTest.java ! test/langtools/tools/doclint/CrashInAnnotateTest.out ! test/langtools/tools/doclint/CustomTagTest.java ! test/langtools/tools/doclint/DuplicateParamTest.java ! test/langtools/tools/doclint/DuplicateReturnTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.java ! test/langtools/tools/doclint/EmptyExceptionTest.java ! test/langtools/tools/doclint/EmptyParamTest.java ! test/langtools/tools/doclint/EmptyReturnTest.java ! test/langtools/tools/doclint/EmptySerialDataTest.java ! test/langtools/tools/doclint/EmptySerialFieldTest.java ! test/langtools/tools/doclint/EmptySinceTest.java ! test/langtools/tools/doclint/EmptyTagsTest.java ! test/langtools/tools/doclint/EmptyVersionTest.java ! test/langtools/tools/doclint/EndTagsTest.java ! test/langtools/tools/doclint/EndWithIdentifierTest.java ! test/langtools/tools/doclint/HtmlAttrsTest.java ! test/langtools/tools/doclint/HtmlTagsTest.java ! test/langtools/tools/doclint/LambdaTest.java ! test/langtools/tools/doclint/LiteralTest.java ! test/langtools/tools/doclint/MissingThrowsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.java + test/langtools/tools/doclint/NoArgsConstructorTest.java + test/langtools/tools/doclint/NoArgsConstructorTest.out ! test/langtools/tools/doclint/OverridesTest.java ! test/langtools/tools/doclint/ParaTagTest.java ! test/langtools/tools/doclint/ProvidesTest.java ! test/langtools/tools/doclint/ReferenceTest.java ! test/langtools/tools/doclint/SummaryTest.java ! test/langtools/tools/doclint/SyntaxTest.java ! test/langtools/tools/doclint/SyntheticTest.java + test/langtools/tools/doclint/SyntheticTest.out ! test/langtools/tools/doclint/UnfinishedInlineTagTest.java ! test/langtools/tools/doclint/UsesTest.java ! test/langtools/tools/doclint/ValueTest.java ! test/langtools/tools/doclint/anchorTests/p/Test.java ! test/langtools/tools/doclint/html/HtmlVersionTagsAttrsTest.java ! test/langtools/tools/doclint/html/InlineTagsTest.java ! test/langtools/tools/doclint/html/ListTagsTest.java ! test/langtools/tools/doclint/html/OtherTagsTest.java ! test/langtools/tools/doclint/html/TableTagsTest.java ! test/langtools/tools/doclint/html/TagNotAllowed.java ! test/langtools/tools/doclint/html/TextNotAllowed.java ! test/langtools/tools/doclint/html/UnknownTagTest.java ! test/langtools/tools/doclint/packageTests/bad/Test.java ! test/langtools/tools/doclint/tidy/AnchorAlreadyDefined.java ! test/langtools/tools/doclint/tidy/BadEnd.java ! test/langtools/tools/doclint/tidy/InsertImplicit.java ! test/langtools/tools/doclint/tidy/InvalidEntity.java ! test/langtools/tools/doclint/tidy/InvalidName.java ! test/langtools/tools/doclint/tidy/InvalidTag.java ! test/langtools/tools/doclint/tidy/InvalidURI.java ! test/langtools/tools/doclint/tidy/MissingGT.java ! test/langtools/tools/doclint/tidy/MissingTag.java ! test/langtools/tools/doclint/tidy/NestedTag.java ! test/langtools/tools/doclint/tidy/ParaInPre.java ! test/langtools/tools/doclint/tidy/RepeatedAttr.java ! test/langtools/tools/doclint/tidy/TextNotAllowed.java ! test/langtools/tools/doclint/tidy/TrimmingEmptyTag.java ! test/langtools/tools/doclint/tidy/UnescapedOrUnknownEntity.java ! test/langtools/tools/doclint/tool/MaxDiagsTest.java ! test/langtools/tools/doclint/tool/StatsTest.java ! test/langtools/tools/javac/doclint/DocLintFormatTest.java ! test/langtools/tools/javac/doclint/DocLintTest.java ! test/langtools/tools/javac/doclint/IncludePackagesTest.java ! test/langtools/tools/javac/doclint/NPEDuplicateClassNamesTest.java Changeset: 9ba8a12c Author: Jonathan Gibbons Date: 2021-08-11 18:04:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9ba8a12cfbb3d7d17be454e29ee6ff476c8690c2 8269774: doclint reports missing javadoc comments for JavaFX properties if the docs are on the property method Reviewed-by: kcr, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java + test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXMissingPropComments.java Changeset: 75a06421 Author: Igor Ignatyev Date: 2021-08-11 19:38:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/75a06421e596b0e0006120a13836ec65a3ab9d46 8272335: runtime/cds/appcds/MoveJDKTest.java doesn't check exit codes Reviewed-by: iklam ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java Changeset: 9faab400 Author: Igor Veresov Date: 2021-08-11 20:19:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9faab400b8cf0611f14d377ea55a58d99795fa57 8272330: C2: Cleanup profile counter scaling Reviewed-by: kvn ! src/hotspot/share/ci/ciMethod.cpp Changeset: cd2dbe5f Author: Alexey Semenyuk Date: 2021-08-11 20:54:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cd2dbe5f007baf81ae9262c1152917e620970621 8272328: java.library.path is not set properly by Windows jpackage app launcher Reviewed-by: herrick, almatvee ! src/jdk.jpackage/share/native/applauncher/AppLauncher.cpp ! src/jdk.jpackage/share/native/applauncher/AppLauncher.h ! src/jdk.jpackage/windows/native/applauncher/WinLauncher.cpp ! src/jdk.jpackage/windows/native/common/WinSysInfo.cpp Changeset: 44f137ff Author: Alexey Semenyuk Date: 2021-08-11 23:39:50 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/44f137ff9c0229ab2d5eccd9ebaadf8db11f386d 8271170: Add unit test for what jpackage app launcher puts in the environment Reviewed-by: almatvee, herrick = test/jdk/tools/jpackage/apps/Hello.java + test/jdk/tools/jpackage/apps/PrintEnv.java - test/jdk/tools/jpackage/apps/installer/Hello.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/HelloApp.java ! test/jdk/tools/jpackage/helpers/jdk/jpackage/test/JavaAppDesc.java ! test/jdk/tools/jpackage/share/AddLauncherTest.java + test/jdk/tools/jpackage/share/AppLauncherEnvTest.java Changeset: bd27bb9c Author: Igor Ignatyev Date: 2021-08-12 03:45:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bd27bb9cbedebd09f589679947ff32261f9ef352 8272345: macos doesn't check `os::set_boot_path()` result Reviewed-by: dholmes ! src/hotspot/os/bsd/os_bsd.cpp ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java Changeset: ec2fc384 Author: Sergey Bylokhov Date: 2021-08-12 05:46:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec2fc384e50668b667335f973ffeb5a19bbcfb9b 8272120: Avoid looking for standard encodings in "java." modules Reviewed-by: alanb, dfuchs, naoto ! src/java.base/share/classes/sun/security/provider/certpath/OCSP.java ! src/java.management/share/classes/com/sun/jmx/remote/security/HashedPasswordManager.java ! src/java.management/share/classes/javax/management/loading/MLetParser.java ! src/java.management/share/classes/sun/management/counter/perf/PerfDataEntry.java ! src/java.management/share/classes/sun/management/counter/perf/PerfDataType.java ! src/java.naming/share/classes/com/sun/jndi/ldap/Ber.java ! src/java.naming/share/classes/com/sun/jndi/ldap/BerDecoder.java ! src/java.naming/share/classes/com/sun/jndi/ldap/BerEncoder.java ! src/java.naming/share/classes/com/sun/jndi/ldap/Filter.java ! src/java.naming/share/classes/com/sun/jndi/ldap/LdapClient.java ! src/java.naming/share/classes/com/sun/jndi/ldap/LdapName.java ! src/java.naming/share/classes/com/sun/jndi/ldap/sasl/DefaultCallbackHandler.java ! src/java.naming/share/classes/javax/naming/ldap/Rdn.java ! src/java.net.http/share/classes/jdk/internal/net/http/ResponseContent.java ! src/java.xml/share/classes/javax/xml/catalog/Normalizer.java Changeset: a15b6592 Author: Claes Redestad Date: 2021-08-12 07:01:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a15b659278741337aefc15ce8002df66ce6323c0 8271732: Regression in StringBuilder.charAt bounds checking Reviewed-by: alanb, naoto ! src/java.base/share/classes/java/lang/AbstractStringBuilder.java + test/jdk/java/lang/StringBuilder/CharAt.java ! test/micro/org/openjdk/bench/java/lang/StringBuilders.java Changeset: d38b3143 Author: Severin Gehwolf Date: 2021-08-12 08:52:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d38b31438dd4730ee2149c02277d60c35b9d7d81 8272332: --with-harfbuzz=system doesn't add -lharfbuzz after JDK-8255790 Reviewed-by: prr ! make/modules/java.desktop/lib/Awt2dLibraries.gmk Changeset: b29fbad9 Author: Sergey Tsypanov Committer: Claes Redestad Date: 2021-08-12 10:03:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b29fbad940808c59f30e60222a9ca7a23c8e54b9 8267844: Replace Integer/Long.valueOf() with Integer/Long.parse*() where applicable Reviewed-by: redestad ! src/java.base/share/classes/com/sun/crypto/provider/CipherCore.java ! src/java.base/share/classes/java/lang/Integer.java ! src/java.base/share/classes/java/lang/Long.java ! src/java.base/share/classes/jdk/internal/misc/VM.java ! test/micro/org/openjdk/bench/java/lang/Integers.java ! test/micro/org/openjdk/bench/java/lang/Longs.java Changeset: 7e14c3cc Author: Xiaohong Gong Committer: Jie Fu Date: 2021-08-12 11:07:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7e14c3cc112e109f0fc79c661eafd2fb14f22431 8272310: AArch64: Add missing changes for shared vector helper methods in m4 files Reviewed-by: jiefu ! src/hotspot/cpu/aarch64/aarch64_neon_ad.m4 ! src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 Changeset: 464e874a Author: Coleen Phillimore Date: 2021-08-12 13:45:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/464e874a5c6b46fcc729227764d07feb1801314d 8048190: NoClassDefFoundError omits original ExceptionInInitializerError Reviewed-by: dholmes, iklam ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/systemDictionary.cpp ! src/hotspot/share/classfile/vmSymbols.hpp ! src/hotspot/share/oops/instanceKlass.cpp ! src/hotspot/share/oops/instanceKlass.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp + test/hotspot/jtreg/runtime/ClassInitErrors/InitExceptionUnloadTest.java Changeset: 9980b413 Author: Harold Seigel Date: 2021-08-12 13:56:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9980b413da47ac7dff74e66aaf12833e48fcce1d 8272107: Removal of Unsafe::defineAnonymousClass left a dangling C++ class Reviewed-by: coleenp, iklam, dholmes ! src/hotspot/share/memory/iterator.hpp ! src/hotspot/share/memory/metaspaceClosure.hpp ! src/hotspot/share/oops/constantPool.cpp ! src/hotspot/share/oops/constantPool.hpp ! src/hotspot/share/oops/constantPool.inline.hpp ! src/hotspot/share/oops/symbol.hpp ! src/hotspot/share/services/heapDumper.cpp Changeset: 93cab7d0 Author: Kim Barrett Date: 2021-08-12 14:29:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/93cab7d07d56fef6973ce8ac2e8232e8f3b185dd 8272315: Improve assert_different_registers Reviewed-by: adinn, vlivanov, thartmann ! src/hotspot/share/asm/register.hpp Changeset: 428d5169 Author: Brian Burkhalter Date: 2021-08-12 15:27:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/428d51694f56788f89e8df100a74cbadd369ffa6 8140241: (fc) Data transfer from FileChannel to itself causes hang in case of overlap Reviewed-by: alanb ! src/java.base/share/classes/sun/nio/ch/FileChannelImpl.java ! src/java.base/share/classes/sun/nio/ch/FileDispatcher.java ! src/java.base/unix/classes/sun/nio/ch/FileDispatcherImpl.java ! src/java.base/unix/native/libnio/ch/FileDispatcherImpl.c ! src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java + test/jdk/java/nio/channels/FileChannel/TransferOverlappedFileChannel.java Changeset: e4766ee0 Author: Xue-Lei Andrew Fan Date: 2021-08-12 19:28:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e4766ee0aa96ab80aeaca36afac5fcaa516620ef 8272391: Undeleted debug information Reviewed-by: wetmore ! src/java.base/share/classes/sun/security/provider/DSAParameterGenerator.java Changeset: 09ab86b4 Author: Lin Zang Committer: Serguei Spitsyn Date: 2021-08-12 23:16:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/09ab86b40cb11d526c70e0a1847451e06c54a58c 8269909: getStack method in hprof.parser.Reader should use try-with-resource Reviewed-by: dholmes, cjplummer, sspitsyn ! test/lib/jdk/test/lib/hprof/parser/Reader.java Changeset: 4d4ba5c5 Author: Hui Shi Date: 2021-08-13 01:00:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4d4ba5c5b4a12a28587a67d8fd56041d3f94b959 8272116: Update PerfDisableSharedMem with FLAG_SET_ERGO in PerfMemory::create_memory_region Reviewed-by: dholmes ! src/hotspot/os/posix/perfMemory_posix.cpp ! src/hotspot/os/windows/perfMemory_windows.cpp Changeset: 020aec53 Author: Jatin Bhateja Date: 2021-08-13 04:33:53 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/020aec531801a556582c80c4b5d31eaf538781e8 8271366: [REDO] JDK-8266054 VectorAPI rotate operation optimization Reviewed-by: sviswanathan, psandoz ! src/hotspot/cpu/aarch64/matcher_aarch64.hpp ! src/hotspot/cpu/arm/matcher_arm.hpp ! src/hotspot/cpu/ppc/matcher_ppc.hpp ! src/hotspot/cpu/s390/matcher_s390.hpp ! src/hotspot/cpu/x86/matcher_x86.hpp ! src/hotspot/cpu/x86/x86.ad ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/superword.cpp ! src/hotspot/share/opto/vectorIntrinsics.cpp ! src/hotspot/share/opto/vectornode.cpp ! src/hotspot/share/opto/vectornode.hpp ! src/hotspot/share/prims/vectorSupport.cpp ! src/hotspot/share/prims/vectorSupport.hpp ! src/java.base/share/classes/jdk/internal/vm/vector/VectorSupport.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ByteVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/DoubleVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/FloatVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/IntVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/LongVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/ShortVector.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/VectorOperators.java ! src/jdk.incubator.vector/share/classes/jdk/incubator/vector/X-Vector.java.template ! test/jdk/jdk/incubator/vector/Byte128VectorTests.java ! test/jdk/jdk/incubator/vector/Byte256VectorTests.java ! test/jdk/jdk/incubator/vector/Byte512VectorTests.java ! test/jdk/jdk/incubator/vector/Byte64VectorTests.java ! test/jdk/jdk/incubator/vector/ByteMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Double128VectorTests.java ! test/jdk/jdk/incubator/vector/Double256VectorTests.java ! test/jdk/jdk/incubator/vector/Double512VectorTests.java ! test/jdk/jdk/incubator/vector/Double64VectorTests.java ! test/jdk/jdk/incubator/vector/DoubleMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Float128VectorTests.java ! test/jdk/jdk/incubator/vector/Float256VectorTests.java ! test/jdk/jdk/incubator/vector/Float512VectorTests.java ! test/jdk/jdk/incubator/vector/Float64VectorTests.java ! test/jdk/jdk/incubator/vector/FloatMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Int128VectorTests.java ! test/jdk/jdk/incubator/vector/Int256VectorTests.java ! test/jdk/jdk/incubator/vector/Int512VectorTests.java ! test/jdk/jdk/incubator/vector/Int64VectorTests.java ! test/jdk/jdk/incubator/vector/IntMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Long128VectorTests.java ! test/jdk/jdk/incubator/vector/Long256VectorTests.java ! test/jdk/jdk/incubator/vector/Long512VectorTests.java ! test/jdk/jdk/incubator/vector/Long64VectorTests.java ! test/jdk/jdk/incubator/vector/LongMaxVectorTests.java ! test/jdk/jdk/incubator/vector/Short128VectorTests.java ! test/jdk/jdk/incubator/vector/Short256VectorTests.java ! test/jdk/jdk/incubator/vector/Short512VectorTests.java ! test/jdk/jdk/incubator/vector/Short64VectorTests.java ! test/jdk/jdk/incubator/vector/ShortMaxVectorTests.java ! test/jdk/jdk/incubator/vector/gen-template.sh ! test/jdk/jdk/incubator/vector/templates/Unit-Shift-Masked-op.template ! test/jdk/jdk/incubator/vector/templates/Unit-Shift-op.template ! test/jdk/jdk/incubator/vector/templates/Unit-header.template + test/micro/org/openjdk/bench/jdk/incubator/vector/RotateBenchmark.java Changeset: 0c4be76f Author: Prasanta Sadhukhan Date: 2021-08-13 05:12:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0c4be76f7ff3cd5e32c8eb4e04e6986d5f33fbee 8058704: Nimbus does not honor JTextPane background color 6789980: JEditorPane background color not honored with Nimbus L&F Reviewed-by: aivanov, serb ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf + test/jdk/javax/swing/plaf/nimbus/TestNimbusBGColor.java Changeset: d06d0b9e Author: Thomas Stuefe Date: 2021-08-13 06:38:08 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d06d0b9e9d9d27aa549455f19b9803752431bcbb 8272112: Arena code simplifications Reviewed-by: kbarrett, coleenp ! src/hotspot/share/memory/arena.cpp ! src/hotspot/share/runtime/init.cpp ! test/hotspot/gtest/memory/test_arena.cpp Changeset: 8da26ad8 Author: duke Date: 2021-08-13 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/8da26ad881a5fa4ae033364d33d19ffd45baed1e Automatic merge of jdk:master into master From jbhateja at openjdk.java.net Fri Aug 13 18:24:01 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Fri, 13 Aug 2021 18:24:01 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v4] In-Reply-To: References: Message-ID: > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8270349: Review comments resolution. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/99/files - new: https://git.openjdk.java.net/panama-vector/pull/99/files/26f810f1..8c0a35d9 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=03 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=02-03 Stats: 64 lines in 4 files changed: 31 ins; 25 del; 8 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Fri Aug 13 18:24:06 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Fri, 13 Aug 2021 18:24:06 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Thu, 12 Aug 2021 12:17:50 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: > > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. Hi @sviswa7 , your comments have been addressed. Thanks ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Fri Aug 13 18:24:16 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Fri, 13 Aug 2021 18:24:16 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Thu, 12 Aug 2021 20:25:00 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains five commits: >> >> - 8270349: Review comments resolution. >> - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. > > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8449: > >> 8447: kshiftrbl(kscratch, kscratch, 8-masklen); >> 8448: kandbl(kscratch, kscratch, src); >> 8449: ktestbl(kscratch, kscratch); > > This could be replaced by: ktestbl(kscratch, src); DONE > src/hotspot/cpu/x86/macroAssembler_x86.cpp line 8464: > >> 8462: kshiftlbl(kscratch, kscratch, masklen); >> 8463: korbl(kscratch, kscratch, src); >> 8464: kortestbl(kscratch, kscratch); > > This could be replaced by a single instruction: > kortestbl(kscratch, src); DONE > src/hotspot/cpu/x86/x86.ad line 3464: > >> 3462: %} >> 3463: ins_pipe( pipe_slow ); >> 3464: %} > > This is overriding the instructs reinterpret_expand* and reitnerpret_shrink. So doesnt look correct. Both have different predication condition. > src/hotspot/share/opto/compile.cpp line 2367: > >> 2365: case Op_AndV: >> 2366: case Op_OrV: >> 2367: return n->req() == 2; > > Why the check on #of inputs here? And and Or are always binary isnt it? This is an interim solution for preventing macro logic optimization over masked logical operations. I have a separate patch for masked macro logic inferencing. > src/hotspot/share/opto/vector.cpp line 344: > >> 342: // spilled to a vector though a VectorStoreMaskOperation before actual StoreVector >> 343: // operation to vector payload field. >> 344: if (is_mask && (value->bottom_type()->isa_vectmask() || bt != T_BOOLEAN)) { > > What happens on platforms that dont support predicate registers. Do we generate extra VectorStoreMask instruction now? This is as of now agnostic to existence of predication support. We dump the mask object into byte vector which is then used during object re-construction, this simplifies the re-construction logic but yes its an overhead for non-predicated targets. One area of improvement here even for predicated targets is to tie VectorStoreMask to same controlling edge as that of uncommon_trap call so that it does not get scheduled into higher ancestor block. I have taken a note of these points and will try to address in separate subsequent patch. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Sat Aug 14 01:18:50 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Sat, 14 Aug 2021 01:18:50 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v4] In-Reply-To: References: Message-ID: On Fri, 13 Aug 2021 18:24:01 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8270349: Review comments resolution. src/hotspot/cpu/x86/assembler_x86.cpp line 8866: > 8864: } > 8865: > 8866: void Assembler::evpfma213ps(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { You need fma231 here which is dst=dst + nds * src. src/hotspot/cpu/x86/assembler_x86.cpp line 8881: > 8879: } > 8880: > 8881: void Assembler::evpfma213pd(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { You need fma231 here which is dst=dst + nds * src. src/hotspot/cpu/x86/assembler_x86.cpp line 8893: > 8891: } > 8892: > 8893: void Assembler::evpfma213pd(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { You need fma231 here which is dst=dst + nds * src. src/hotspot/cpu/x86/x86.ad line 3764: > 3762: match(Set dst (LoadVectorGather mem idx)); > 3763: effect(TEMP dst, TEMP tmp, TEMP ktmp); > 3764: format %{ "load_vector_gather $dst, $mem, $idx\t! using $tmp and k2 as TEMP" %} There is no k2 here, should be ktmp. src/hotspot/cpu/x86/x86.ad line 3784: > 3782: match(Set dst (LoadVectorGatherMasked mem (Binary idx mask))); > 3783: effect(TEMP_DEF dst, TEMP tmp, TEMP ktmp); > 3784: format %{ "load_vector_gather_masked $dst, $mem, $idx, $mask\t! using $tmp and k2 as TEMP" %} There is no k2 here, should be ktmp. src/hotspot/cpu/x86/x86.ad line 7085: > 7083: %} > 7084: > 7085: instruct evcmpFD(kReg dst, vec src1, vec src2, immI8 cond, rRegP scratch) %{ scratch register is not used. src/hotspot/cpu/x86/x86.ad line 7196: > 7194: > 7195: > 7196: instruct evcmp(kReg dst, vec src1, vec src2, immI8 cond, rRegP scratch) %{ scratch register is not used. src/hotspot/cpu/x86/x86.ad line 7743: > 7741: __ kshiftrbl($ktmp$$KRegister, $ktmp$$KRegister, 8-masklen); > 7742: __ kandbl($ktmp$$KRegister, $ktmp$$KRegister, $src1$$KRegister); > 7743: __ ktestbl($ktmp$$KRegister, $ktmp$$KRegister); Could be replaced by single instruction on similar lines as in anyTrue: __ ktestbl($ktmp$$KRegister, $src1$$KRegister); src/hotspot/cpu/x86/x86.ad line 7752: > 7750: static_cast(n->in(1))->get_predicate() == BoolTest::ne && > 7751: vector_length(n->in(1)->in(1)) >= 8); > 7752: match(Set cr (CmpI (VectorTest src1 src2) zero)); Similar pattern can be added for BoolTest::overflow (alltrue) case: knot tmp, src kortest tmp, tmp src/hotspot/cpu/x86/x86.ad line 7790: > 7788: int vlen_enc = vector_length_encoding(vlen_in_bytes); > 7789: __ evpcmp(T_BYTE, $dst$$KRegister, k0, $src$$XMMRegister, ExternalAddress(vector_masked_cmp_bits()), > 7790: Assembler::eq, vlen_enc, $scratch$$Register); We could use evpmovb2m here. src/hotspot/cpu/x86/x86.ad line 7902: > 7900: > 7901: instruct vstoreMask2B_evex(vec dst, vec src, immI_2 size) %{ > 7902: predicate(VM_Version::supports_avx512bw()); Do we need the check (n->in(1)->bottom_type()->isa_vectmask() == NULL) here and in vstoreMask4B_evex? If not, why this check is there in vstoreMask8B_evex. src/hotspot/cpu/x86/x86.ad line 7931: > 7929: > 7930: instruct vstoreMask8B_evex(vec dst, vec src, immI_8 size) %{ > 7931: predicate(UseAVX > 2 && NULL == n->in(1)->bottom_type()->isa_vectmask()); A nit-pick traditional usage is (n->in(1)->bottom_type()->isa_vectmask() == NULL). src/hotspot/cpu/x86/x86.ad line 7955: > 7953: __ vpxor($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, dst_vlen_enc); > 7954: __ evmovdqub($dst$$XMMRegister, $mask$$KRegister, ExternalAddress(vector_masked_cmp_bits()), > 7955: true, dst_vlen_enc, $scratch$$Register); If you do merge-masking as false, then dst need not be cleared using vxor and the rule can be simplified. You could alternatively also use the vmovm2b followed by vpabsb. Thereby eliminating the need for vector_masked_cmp_bits. src/hotspot/cpu/x86/x86.ad line 8996: > 8994: int opc = this->ideal_Opcode(); > 8995: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, > 8996: $dst$$XMMRegister, $src2$$XMMRegister, false, vlen_enc); Since merge masking is false here, dst and src1 could be separate registers. There is another flavor of rearrange with second vector, e.g.: IntVector rearrange(VectorShuffle s, Vector v); Which can use rearrange with merge masking true. I don't see a rule for that. Do you plan to add that later? src/hotspot/cpu/x86/x86.ad line 9001: > 8999: %} > 9000: > 9001: instruct vrearrangev_mem_masked(vec dst, memory src2, kReg mask) %{ How is VectorRearrange getting the shuffle through memory directly? There is always VectorLoadShuffle isn't it? src/hotspot/cpu/x86/x86.ad line 9010: > 9008: int opc = this->ideal_Opcode(); > 9009: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, > 9010: $dst$$XMMRegister, $src2$$Address, false, vlen_enc); Since merge masking is false here, dst and src1 could be separate registers. src/hotspot/cpu/x86/x86.ad line 9021: > 9019: match(Set dst (AbsVL dst mask)); > 9020: format %{ "vabs_masked $dst, $mask \t! vabs masked operation" %} > 9021: ins_cost(100); It is not clear why ins_cost is required for matching? src/hotspot/cpu/x86/x86.ad line 9057: > 9055: int opc = this->ideal_Opcode(); > 9056: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, > 9057: $src2$$XMMRegister, $src3$$Address, true, vlen_enc); This and the previous instruct should translate to fma231. src/hotspot/cpu/x86/x86.ad line 9063: > 9061: > 9062: instruct evcmp_masked(kReg dst, vec src1, vec src2, immI8 cond, kReg mask, rRegP scratch) %{ > 9063: predicate(UseAVX > 2); Is this check enough? How about vl? src/hotspot/cpu/x86/x86.ad line 9108: > 9106: break; > 9107: } > 9108: default: assert(false, "%s", type2name(src1_elem_bt)); Missing break; here. src/hotspot/cpu/x86/x86.ad line 9121: > 9119: int vlen_enc = vector_length_encoding(vector_length(this)); > 9120: __ evpbroadcastb($xtmp$$XMMRegister, $src$$Register, vlen_enc); > 9121: __ evpmovb2m($dst$$KRegister, $xtmp$$XMMRegister, vlen_enc); Since either all bits are set or clear in $src, we could just do a kmov from $src into $dst with appropriate width. src/hotspot/cpu/x86/x86.ad line 9134: > 9132: int vlen_enc = vector_length_encoding(vector_length(this)); > 9133: __ evpbroadcastb($xtmp$$XMMRegister, $src$$Register, vlen_enc); > 9134: __ evpmovb2m($dst$$KRegister, $xtmp$$XMMRegister, vlen_enc); Since either all bits are set or clear in $src, we could just do a kmov from $src into $dst with appropriate width. src/hotspot/cpu/x86/x86.ad line 9145: > 9143: match(Set dst (OrVMask src1 src2)); > 9144: match(Set dst (XorVMask src1 src2)); > 9145: effect(TEMP kscratch); kscratch is not being used in ins_encode. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Sat Aug 14 01:18:54 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Sat, 14 Aug 2021 01:18:54 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v2] In-Reply-To: References: <4oNEOXnkVXWK-03Av6_qquwynB8oK7Wrm5CmScPjSL0=.210ea42c-bdbe-45bd-b9b3-5650a47bd9b1@github.com> Message-ID: <1qZQA_FBarrXkPC9tIkCDneyGJyMQK7SNdvobBTjJUk=.6ebbfdaf-ca1c-46e9-9256-54d916e02752@github.com> On Wed, 11 Aug 2021 22:45:07 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains three commits: >> >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. > > src/hotspot/cpu/x86/assembler_x86.cpp line 8933: > >> 8931: } >> 8932: >> 8933: void Assembler::evppermb(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > > This should be evpermb. This comment and ev prefix comments below are still pending from last reviews. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Sat Aug 14 01:18:56 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Sat, 14 Aug 2021 01:18:56 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v3] In-Reply-To: References: Message-ID: On Fri, 13 Aug 2021 18:19:32 GMT, Jatin Bhateja wrote: >> src/hotspot/cpu/x86/x86.ad line 3464: >> >>> 3462: %} >>> 3463: ins_pipe( pipe_slow ); >>> 3464: %} >> >> This is overriding the instructs reinterpret_expand* and reitnerpret_shrink. So doesnt look correct. > > Both have different predication condition. ok ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From leerho at gmail.com Sat Aug 14 04:38:57 2021 From: leerho at gmail.com (leerho) Date: Fri, 13 Aug 2021 21:38:57 -0700 Subject: Java primitive arrays with non-native ByteOrder? Message-ID: All, Can anyone think of cases where it would be desirable to load a Java primitive array with non-native byte order values? Assume that all reading and writing to such an array by the user would always use the non-native byte order. The integral types should always be valid, but doubles and floats could become illegal IEEE 754 bit layouts if something in the JVM were to examine them. Assume that the user would not use any of the built-in static methods like isNaN(double), etc. Would this cause any problems in the JVM? Has anyone done this? Cheers, Lee. From uschindler at apache.org Sat Aug 14 09:03:26 2021 From: uschindler at apache.org (Uwe Schindler) Date: Sat, 14 Aug 2021 09:03:26 +0000 Subject: Java primitive arrays with non-native ByteOrder? In-Reply-To: References: Message-ID: Hi, You can try it out and see what happens. From Lucene's point of view i already copied data from a mapped file using MemoryAccess (previously MemoryCopy) with wrong byte order into a float array. Nothing crashed, just bullshit came out. You may possibly create exceptions on StrictMath methods or strictfp, but we don't use that. Uwe Am 14. August 2021 04:38:57 UTC schrieb leerho : >All, > >Can anyone think of cases where it would be desirable to load a Java >primitive array with non-native byte order values? Assume that all reading >and writing to such an array by the user would always use the non-native >byte order. > >The integral types should always be valid, but doubles and floats could >become illegal IEEE 754 bit layouts if something in the JVM were to examine >them. Assume that the user would not use any of the built-in static >methods like isNaN(double), etc. > >Would this cause any problems in the JVM? > >Has anyone done this? > >Cheers, > >Lee. From uschindler at apache.org Sat Aug 14 09:08:20 2021 From: uschindler at apache.org (Uwe Schindler) Date: Sat, 14 Aug 2021 09:08:20 +0000 Subject: Java primitive arrays with non-native ByteOrder? In-Reply-To: References: Message-ID: <7EB9F936-E052-417C-B4BE-91BB596613AD@apache.org> Hi, Other question: is it possible to load wrong IEEE-754 bytes with Float#intBitsToFloat() ? If this works, i see no problems with MemoryAccess, too. Uwe Am 14. August 2021 09:03:26 UTC schrieb Uwe Schindler : >Hi, > >You can try it out and see what happens. From Lucene's point of view i already copied data from a mapped file using MemoryAccess (previously MemoryCopy) with wrong byte order into a float array. Nothing crashed, just bullshit came out. > >You may possibly create exceptions on StrictMath methods or strictfp, but we don't use that. > >Uwe > >Am 14. August 2021 04:38:57 UTC schrieb leerho : >>All, >> >>Can anyone think of cases where it would be desirable to load a Java >>primitive array with non-native byte order values? Assume that all reading >>and writing to such an array by the user would always use the non-native >>byte order. >> >>The integral types should always be valid, but doubles and floats could >>become illegal IEEE 754 bit layouts if something in the JVM were to examine >>them. Assume that the user would not use any of the built-in static >>methods like isNaN(double), etc. >> >>Would this cause any problems in the JVM? >> >>Has anyone done this? >> >>Cheers, >> >>Lee. From mail at smogura.eu Sat Aug 14 09:28:56 2021 From: mail at smogura.eu (Rado Smogura) Date: Sat, 14 Aug 2021 11:28:56 +0200 Subject: Java primitive arrays with non-native ByteOrder? In-Reply-To: <7EB9F936-E052-417C-B4BE-91BB596613AD@apache.org> References: <7EB9F936-E052-417C-B4BE-91BB596613AD@apache.org> Message-ID: Hi, I hope you have a good day. Strcitfp math is going to be only one supported https://openjdk.java.net/jeps/306. BR, Rado On 14.08.2021 11:08, Uwe Schindler wrote: > Hi, > > Other question: is it possible to load wrong IEEE-754 bytes with Float#intBitsToFloat() ? If this works, i see no problems with MemoryAccess, too. > > Uwe > > Am 14. August 2021 09:03:26 UTC schrieb Uwe Schindler : >> Hi, >> >> You can try it out and see what happens. From Lucene's point of view i already copied data from a mapped file using MemoryAccess (previously MemoryCopy) with wrong byte order into a float array. Nothing crashed, just bullshit came out. >> >> You may possibly create exceptions on StrictMath methods or strictfp, but we don't use that. >> >> Uwe >> >> Am 14. August 2021 04:38:57 UTC schrieb leerho : >>> All, >>> >>> Can anyone think of cases where it would be desirable to load a Java >>> primitive array with non-native byte order values? Assume that all reading >>> and writing to such an array by the user would always use the non-native >>> byte order. >>> >>> The integral types should always be valid, but doubles and floats could >>> become illegal IEEE 754 bit layouts if something in the JVM were to examine >>> them. Assume that the user would not use any of the built-in static >>> methods like isNaN(double), etc. >>> >>> Would this cause any problems in the JVM? >>> >>> Has anyone done this? >>> >>> Cheers, >>> >>> Lee. From jbhateja at openjdk.java.net Sat Aug 14 21:27:06 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Sat, 14 Aug 2021 21:27:06 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v5] In-Reply-To: References: Message-ID: <0W9yMoPhyJq_7NoWX4RRBlUh6ZHXNiO3kvgeNPIRba0=.854af0e0-01a1-472e-99b1-86ef044bf138@github.com> > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8270349: Review comments resolution. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/99/files - new: https://git.openjdk.java.net/panama-vector/pull/99/files/8c0a35d9..91524133 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=04 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=03-04 Stats: 106 lines in 6 files changed: 9 ins; 47 del; 50 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Sat Aug 14 21:27:23 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Sat, 14 Aug 2021 21:27:23 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v4] In-Reply-To: References: Message-ID: On Fri, 13 Aug 2021 22:39:44 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8270349: Review comments resolution. > > src/hotspot/cpu/x86/assembler_x86.cpp line 8866: > >> 8864: } >> 8865: >> 8866: void Assembler::evpfma213ps(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { > > You need fma231 here which is dst=dst + nds * src. This is conforming with generated IR shape, dst is first source i.e. src1 followed by src2 and src3 FMA213 = src1*src2 + src3. > src/hotspot/cpu/x86/assembler_x86.cpp line 8881: > >> 8879: } >> 8880: >> 8881: void Assembler::evpfma213pd(XMMRegister dst, KRegister mask, XMMRegister nds, XMMRegister src, bool merge, int vector_len) { > > You need fma231 here which is dst=dst + nds * src. same as above > src/hotspot/cpu/x86/assembler_x86.cpp line 8893: > >> 8891: } >> 8892: >> 8893: void Assembler::evpfma213pd(XMMRegister dst, KRegister mask, XMMRegister nds, Address src, bool merge, int vector_len) { > > You need fma231 here which is dst=dst + nds * src. same as above > src/hotspot/cpu/x86/x86.ad line 7752: > >> 7750: static_cast(n->in(1))->get_predicate() == BoolTest::ne && >> 7751: vector_length(n->in(1)->in(1)) >= 8); >> 7752: match(Set cr (CmpI (VectorTest src1 src2) zero)); > > Similar pattern can be added for BoolTest::overflow (alltrue) case: > knot tmp, src > kortest tmp, tmp Yes, this is missing in mainline code too. Taken a note of this, will be added in subsequent patch. > src/hotspot/cpu/x86/x86.ad line 7931: > >> 7929: >> 7930: instruct vstoreMask8B_evex(vec dst, vec src, immI_8 size) %{ >> 7931: predicate(UseAVX > 2 && NULL == n->in(1)->bottom_type()->isa_vectmask()); > > A nit-pick traditional usage is (n->in(1)->bottom_type()->isa_vectmask() == NULL). DONE, in general I follow CONST == VAR (lvalue) convention to avoid accidental assignment in comparison condition (VAR = CONST) > src/hotspot/cpu/x86/x86.ad line 7955: > >> 7953: __ vpxor($dst$$XMMRegister, $dst$$XMMRegister, $dst$$XMMRegister, dst_vlen_enc); >> 7954: __ evmovdqub($dst$$XMMRegister, $mask$$KRegister, ExternalAddress(vector_masked_cmp_bits()), >> 7955: true, dst_vlen_enc, $scratch$$Register); > > If you do merge-masking as false, then dst need not be cleared using vxor and the rule can be simplified. > You could alternatively also use the vmovm2b followed by vpabsb. Thereby eliminating the need for vector_masked_cmp_bits. Yes, proposed sequence though have more number of instructions but will also prevent any penalty due to cache miss. existing: VCMP K1 MASK_VEC, MEM_BIT_PATTERN Proposed: VXOR V1 V1 VSUB V1 , MASK_VEC VMOVM2B K1 , V1 I did quick perf runs and did see increased instruction could > src/hotspot/cpu/x86/x86.ad line 8996: > >> 8994: int opc = this->ideal_Opcode(); >> 8995: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, >> 8996: $dst$$XMMRegister, $src2$$XMMRegister, false, vlen_enc); > > Since merge masking is false here, dst and src1 could be separate registers. > There is another flavor of rearrange with second vector, e.g.: > IntVector rearrange(VectorShuffle s, Vector v); > Which can use rearrange with merge masking true. > I don't see a rule for that. Do you plan to add that later? All these instructions are in two address format, thus src1 is copied to dst first. Second flavor of rearrange does not accept mask argument. This pattern specifically handled the case with mask. > src/hotspot/cpu/x86/x86.ad line 9010: > >> 9008: int opc = this->ideal_Opcode(); >> 9009: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, >> 9010: $dst$$XMMRegister, $src2$$Address, false, vlen_enc); > > Since merge masking is false here, dst and src1 could be separate registers. same as above > src/hotspot/cpu/x86/x86.ad line 9021: > >> 9019: match(Set dst (AbsVL dst mask)); >> 9020: format %{ "vabs_masked $dst, $mask \t! vabs masked operation" %} >> 9021: ins_cost(100); > > It is not clear why ins_cost is required for matching? To give this preference over Set dst (AbsVI src) pattern > src/hotspot/cpu/x86/x86.ad line 9057: > >> 9055: int opc = this->ideal_Opcode(); >> 9056: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, >> 9057: $src2$$XMMRegister, $src3$$Address, true, vlen_enc); > > This and the previous instruct should translate to fma231. same as above > src/hotspot/cpu/x86/x86.ad line 9063: > >> 9061: >> 9062: instruct evcmp_masked(kReg dst, vec src1, vec src2, immI8 cond, kReg mask, rRegP scratch) %{ >> 9063: predicate(UseAVX > 2); > > Is this check enough? How about vl? That is already checked in match_rule_supported_vector_masked. Infact UseAVX > 2 is also redundant in all newly added patterns. > src/hotspot/cpu/x86/x86.ad line 9121: > >> 9119: int vlen_enc = vector_length_encoding(vector_length(this)); >> 9120: __ evpbroadcastb($xtmp$$XMMRegister, $src$$Register, vlen_enc); >> 9121: __ evpmovb2m($dst$$KRegister, $xtmp$$XMMRegister, vlen_enc); > > Since either all bits are set or clear in $src, we could just do a kmov from $src into $dst with appropriate width. same as above > src/hotspot/cpu/x86/x86.ad line 9134: > >> 9132: int vlen_enc = vector_length_encoding(vector_length(this)); >> 9133: __ evpbroadcastb($xtmp$$XMMRegister, $src$$Register, vlen_enc); >> 9134: __ evpmovb2m($dst$$KRegister, $xtmp$$XMMRegister, vlen_enc); > > Since either all bits are set or clear in $src, we could just do a kmov from $src into $dst with appropriate width. This is a mask all operation, mask (src) is initially only 0/-1, this needs to be broadcasted into vector and then movb2m picks the MSB bits from each byte lane and moves it to opmask register (dst). ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Sat Aug 14 21:39:57 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Sat, 14 Aug 2021 21:39:57 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v6] In-Reply-To: References: Message-ID: > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8270349: Minor fix missed in last checkin. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/99/files - new: https://git.openjdk.java.net/panama-vector/pull/99/files/91524133..5a76620c Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=05 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=04-05 Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Sat Aug 14 22:04:46 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Sat, 14 Aug 2021 22:04:46 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation Message-ID: - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. ------------- Commit messages: - 8272479: Java API and IR changes for masked rearrange operation Changes: https://git.openjdk.java.net/panama-vector/pull/110/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=110&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8272479 Stats: 305 lines in 41 files changed: 129 ins; 43 del; 133 mod Patch: https://git.openjdk.java.net/panama-vector/pull/110.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/110/head:pull/110 PR: https://git.openjdk.java.net/panama-vector/pull/110 From kartikohri13 at gmail.com Sun Aug 15 12:06:12 2021 From: kartikohri13 at gmail.com (Kartik Ohri) Date: Sun, 15 Aug 2021 17:36:12 +0530 Subject: The Vector API and GPUs Message-ID: Hi all! I understand that Java on GPU was being explored in the Project Sumatra but the sumatra-dev mailing list looks inactive and also my question is related to the Vector API so I am asking here. If I understand correctly, the Vector API currently only deals with CPU SIMD. Based on this, I have the following few questions: 1) Is the implementation of the Vector API strictly tied to CPU SIMD and hence making it not possible to support GPUs? 2) If not, have there been any explorations in the past related to GPU support in the Vector API ? 3) If not, are there any future plans to do so? Regards, Kartik From xgong at openjdk.java.net Mon Aug 16 01:36:45 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 16 Aug 2021 01:36:45 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v6] In-Reply-To: References: Message-ID: On Thu, 12 Aug 2021 12:20:23 GMT, Jatin Bhateja wrote: >> Ok, can the opcodes like `AndVMask` be blocked for non-predicated targets in `Matcher::match_rule_supported` ? > > Matcher::match_rule_supported only check the existence of pattern based on the opcode and default return value is true. > AddVI v1 v2 > AddVI v1 v2 mask > > Where as match_rule_supported_vector_masked initially calls match_rule_supported, it then return false in default case and true only for operations for which masked patterns exist. But I think `AndVMask/OrVMask/XorVMask` are different from the masked vector opcodes like `AddVI`. I was intending to make nodes like `AndVMask/OrVMask/XorVMask` also work for the non-mask supported platforms. Other platforms can also support them by adding the backend implementations if they want. We can just treat them as a normal vector operations for vector mask. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From ningsheng.jian at arm.com Mon Aug 16 03:03:51 2021 From: ningsheng.jian at arm.com (Ningsheng Jian) Date: Mon, 16 Aug 2021 11:03:51 +0800 Subject: Result: New Panama Committer: Eric Liu Message-ID: <38ea9ac9-bea2-26d0-721f-582541cf5b9b@arm.com> Voting for Eric Liu [1] is now closed. Yes: 5 Veto: 0 Abstain: 0 According to the Bylaws definition of Lazy Consensus, this is sufficient to approve the nomination. /Ningsheng [1] https://mail.openjdk.java.net/pipermail/panama-dev/2021-July/014553.html https://mail.openjdk.java.net/pipermail/panama-dev/2021-August/014563.html From xgong at openjdk.java.net Mon Aug 16 03:19:46 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 16 Aug 2021 03:19:46 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation In-Reply-To: References: Message-ID: <8ev--HrIxxG5OlhWiTegyPx5_oNfmlImXtdvJeRTG-8=.da9d913f-a3a3-44ed-826d-29e6479ef246@github.com> On Sat, 14 Aug 2021 21:58:52 GMT, Jatin Bhateja wrote: > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. src/hotspot/share/opto/vectorIntrinsics.cpp line 1758: > 1756: const TypeInt* vlen = gvn().type(argument(4))->isa_int(); > 1757: > 1758: if (vector_klass == NULL || shuffle_klass == NULL || elem_klass == NULL || mask_klass == NULL || vlen == NULL) { It allows the `mask_klass` to be `NULL` for non-masked rearrange, right? If so I think it's better to only check the `mask_klass` for `is_masked_op`. src/hotspot/share/opto/vectorIntrinsics.cpp line 1778: > 1776: if (!is_klass_initialized(vector_klass) || > 1777: !is_klass_initialized(shuffle_klass) || > 1778: !is_klass_initialized(mask_klass)) { ditto src/hotspot/share/opto/vectorIntrinsics.cpp line 1842: > 1840: } > 1841: > 1842: if (v1 == NULL || shuffle == NULL || mask == NULL) { `mask` is `NULL` for non-masked rearrange, right? I guess this might make the non-masked rearrange intrinsify failed? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/110 From jbhateja at openjdk.java.net Mon Aug 16 05:12:34 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 05:12:34 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:36:26 GMT, Jatin Bhateja wrote: > - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. > - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 @reviwers, kindly let me know if its good to check this in. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From xgong at openjdk.java.net Mon Aug 16 06:17:53 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 16 Aug 2021 06:17:53 GMT Subject: [vectorIntrinsics+mask] RFR: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:36:26 GMT, Jatin Bhateja wrote: > - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. > - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 LGTM, thanks! ------------- Marked as reviewed by xgong (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/108 From jbhateja at openjdk.java.net Mon Aug 16 08:13:32 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 08:13:32 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation In-Reply-To: References: Message-ID: On Sat, 14 Aug 2021 21:58:52 GMT, Jatin Bhateja wrote: > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. Hi @XiaohongGong , your comments addressed. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/110 From jbhateja at openjdk.java.net Mon Aug 16 08:13:32 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 08:13:32 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation [v2] In-Reply-To: References: Message-ID: > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8272479: Review comments resolution. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/110/files - new: https://git.openjdk.java.net/panama-vector/pull/110/files/997de9f2..eb5c5761 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=110&range=01 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=110&range=00-01 Stats: 57 lines in 1 file changed: 24 ins; 18 del; 15 mod Patch: https://git.openjdk.java.net/panama-vector/pull/110.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/110/head:pull/110 PR: https://git.openjdk.java.net/panama-vector/pull/110 From xgong at openjdk.java.net Mon Aug 16 08:29:48 2021 From: xgong at openjdk.java.net (Xiaohong Gong) Date: Mon, 16 Aug 2021 08:29:48 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation [v2] In-Reply-To: References: Message-ID: On Mon, 16 Aug 2021 08:13:32 GMT, Jatin Bhateja wrote: >> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. >> - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8272479: Review comments resolution. The compiler part looks better for me! Just several trivial comments. src/hotspot/share/opto/vectorIntrinsics.cpp line 1761: > 1759: shuffle_klass == NULL || > 1760: elem_klass == NULL || > 1761: vlen == NULL) { Revert all these changes? src/hotspot/share/opto/vectorIntrinsics.cpp line 1813: > 1811: } > 1812: } > 1813: if (!arch_supports_vector(Op_VectorRearrange, num_elem, elem_bt, is_masked_op ? VecMaskUsePred : VecMaskNotUsed)) { For masked op, it's better to use the mask type `VecMaskUsePred | VecMaskUseLoad` here? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/110 From jbhateja at openjdk.java.net Mon Aug 16 13:33:32 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 13:33:32 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v7] In-Reply-To: References: Message-ID: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/99/files - new: https://git.openjdk.java.net/panama-vector/pull/99/files/5a76620c..62ce4aaf Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=06 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=05-06 Stats: 145 lines in 5 files changed: 54 ins; 53 del; 38 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Mon Aug 16 13:34:44 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 13:34:44 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation [v2] In-Reply-To: References: Message-ID: On Mon, 16 Aug 2021 08:13:32 GMT, Jatin Bhateja wrote: >> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. >> - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8272479: Review comments resolution. @PaulSandoz can you kindly review java side changes. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/110 From vladimir.x.ivanov at oracle.com Mon Aug 16 13:41:22 2021 From: vladimir.x.ivanov at oracle.com (Vladimir Ivanov) Date: Mon, 16 Aug 2021 16:41:22 +0300 Subject: [External] : Re: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> Message-ID: > I wonder what do you think about something like this [1] - it's > virtually small single class change Very interesting experiment, Rado! It's encouraging to hear that loop opts immediately benefit from it. From a architectural perspective, a separate pass to optimize memory graph brings excessive complexity: (1) yet another pass over the graph and susceptible to pass ordering issues; (2) separate from GVN: you either have to duplicate GVN-based memory optimizations or run new pass with IGVN in a loop until it stabilizes. IMO the problem you noticed illustrates a general weakness in GVN implementation and that's the place where it should be fixed (ideally). Best regards, Vladimir Ivanov > > This change tries to find unique memory for load node. I implemented it > as separate phase, as optimization may not run in Ideal method. I think > it's ligher than phi split out. > > Loops has been transformed. RCE started. > > Kind regards, > Rado > > [1] - > https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 > > [2] - > https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation > > (full test case) > > ------------------------------------------------------------------------ > *From:* Rados?aw Smogura on behalf of Rados?aw Smogura > *Sent:* Friday, August 6, 2021 22:43 > *To:* Rados?aw Smogura ; Paul Sandoz > ; Vladimir Ivanov > *Cc:* panama-dev at openjdk.java.net > *Subject:* Re: Issues with loop unrolling: better pinned node > Hi all, > > Now when I checked it again. it works as expected, and it's the same code. > > In draft code I check if the buffer is direct by using type checking to > unswitch loop, as unswitching over ByteBuffer.hb did not work (the graph > was quite similar). However, I thought that this unswitch actually > helped to build correct loops, and any kind of improvement around it > would be rather for the purpose of better-looking code. > > But it looks like that sometimes (but only sometimes) loop still can not > be correctly built, or maybe the full optimization kicks in very, very late. > > Kind regards, > Rado > ------------------------------------------------------------------------ > *From:* panama-dev on behalf of > Rados?aw Smogura > *Sent:* Friday, August 6, 2021 20:22 > *To:* Paul Sandoz > *Cc:* panama-dev at openjdk.java.net > *Subject:* Re: Issues with loop unrolling: better pinned node > Yes, > > The normal case looks, good. It's all about polluted cases [1] > > BR, > Rado > > [1] https://github.com/openjdk/panama-vector/pull/109 > > [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109] > > (Draft) Perofrmance improvements for polluted cases by rsmogura ? Pull > Request #109 ? > openjdk/panama-vector > > Hi all, I would like to submit this piece of work, for byte buffers and > polluted cases. It resolves some performance issues related to mem > barriers when in scope are both on- and off-heap buffer. T... > github.com > > [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector] > > Comparing openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? > openjdk/panama-vector > > Panama vector. Contribute to openjdk/panama-vector development by > creating an account on GitHub. > github.com > > ________________________________ > From: Paul Sandoz > Sent: Friday, August 6, 2021 20:04 > To: Rados?aw Smogura > Cc: panama-dev at openjdk.java.net > Subject: Re: Issues with loop unrolling: better pinned node > > I am confused as to the case under test. In your initial email of this > thread were you also referring implicitly to polluted cases? > > Paul. > >> On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: >> >> Hi Paul, >> >> There's a performance improvement, but. I still can't unroll polluted cases (I cherry-picked loop unrolling). The graph still has few nodes taking buffer limit from phi, and on IR I don't see vectors nodes cascading. >> >> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" JOBS=12 >> Benchmark???????????????????????????????????? (size)? Mode? Cnt?? Score?? Error? Units >> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt?? 30? 40.472 ? 1.055? ns/op >> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024? avgt????????? NaN??????????? --- >> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt?? 30? 79.251 ? 0.786? ns/op >> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024? avgt????????? NaN??????????? --- >> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt?? 30? 83.627 ? 2.140? ns/op >> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024? avgt????????? NaN??????????? --- >> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt?? 30? 85.561 ? 1.156? ns/op >> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024? avgt????????? NaN >> >> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 -prof perfasm" >> Benchmark???????????????????????????????????? (size)? Mode? Cnt??? Score?? Error? Units >> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt?? 10?? 49.326 ? 0.843? ns/op >> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024? avgt?????????? NaN??????????? --- >> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt?? 10? 100.291 ? 1.271? ns/op >> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024? avgt?????????? NaN??????????? --- >> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt?? 10? 101.494 ? 1.027? ns/op >> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024? avgt?????????? NaN??????????? --- >> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt?? 10?? 94.606 ? 1.522? ns/op >> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024? avgt?????????? NaN >> >> >> BR, >> Rado >> From: Paul Sandoz >> Sent: Friday, August 6, 2021 18:04 >> To: Rados?aw Smogura >> Cc: panama-dev at openjdk.java.net >> Subject: Re: Issues with loop unrolling: better pinned node >> >> Hi Rado, >> >> It?s good you are looking at the IR >> >> Out of curiosity, what happens if you turn off bounds checking [*]? >> >> Paul. >> >> [*] >> -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 >> >> > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: >> > >> > Hi all, >> > >> > I've found that even if we get rid of barriers, the loop can't get unrolled, and not needed code is inside it. >> > >> > I've found this graph, I wonder if it's most optimal, in a partiucalry Load of ByteBuffer index / hb is from phi, could it be attached to initial memory? >> > >> > Here's a picture https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing > >> > [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p] > >> > bb_issues.png > >> > drive.google.com >> > >> > >> > And sample code >> > >> > protected void copyMemory(ByteBuffer in, ByteBuffer out) { >> >? var limit = SPECIES.loopBound(in.limit()); >> >? for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { >> >??? final var v = ByteVector.fromByteBuffer(SPECIES, in, i, ByteOrder.nativeOrder()); >> >??? v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); >> >? } >> > } >> > >> > Kind regards, >> > Rado > From paul.sandoz at oracle.com Mon Aug 16 16:23:45 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Mon, 16 Aug 2021 16:23:45 +0000 Subject: The Vector API and GPUs In-Reply-To: References: Message-ID: <6C9CB1AE-68AF-4A12-A9E9-D8459805B9AD@oracle.com> Hi Kartik, Currently our focus is design of the API and implementation for CPUs. There are no future plans in motion to explore its use on GPUs. We have had some thoughts on the matter. In principle the API could be implemented to support a GPU but I think that is insufficient. In my experience we need to think more broadly about loops, device/memory management, async execution etc. These need to be visible in some form to the developer so there is a clear demarcation of what runs where, and what resides where. Thinking more broadly, I like where Tornado VM is going. If we could somehow introspect on the Java code symbolically Tornado VM could apply its approach in a more standard and supported way. Including support of the Vector API, translating to GPU vector hardware instructions within a kernel. More generally, I view this problem as a graph extraction problem, splitting a program into the host program and the GPU program, with async communication between the two. The challenge is to devise a clear programming model so the developer can understand the runtime effects of the code they have written. Paul. > On Aug 15, 2021, at 5:06 AM, Kartik Ohri wrote: > > Hi all! > > I understand that Java on GPU was being explored in the Project Sumatra but > the sumatra-dev mailing list looks inactive and also my question is related > to the Vector API so I am asking here. If I understand correctly, the > Vector API currently only deals with CPU SIMD. Based on this, I have the > following few questions: > > 1) Is the implementation of the Vector API strictly tied to CPU SIMD and > hence making it not possible to support GPUs? > > 2) If not, have there been any explorations in the past related to GPU > support in the Vector API ? > > 3) If not, are there any future plans to do so? > > Regards, > Kartik From kartikohri13 at gmail.com Mon Aug 16 16:28:24 2021 From: kartikohri13 at gmail.com (Kartik Ohri) Date: Mon, 16 Aug 2021 21:58:24 +0530 Subject: The Vector API and GPUs In-Reply-To: <6C9CB1AE-68AF-4A12-A9E9-D8459805B9AD@oracle.com> References: <6C9CB1AE-68AF-4A12-A9E9-D8459805B9AD@oracle.com> Message-ID: Hi Paul, That makes sense. Thank you for the helpful and detailed response. Regards. On Mon, Aug 16, 2021 at 9:53 PM Paul Sandoz wrote: > Hi Kartik, > > Currently our focus is design of the API and implementation for CPUs. > There are no future plans in motion to explore its use on GPUs. > > We have had some thoughts on the matter. In principle the API could be > implemented to support a GPU but I think that is insufficient. In my > experience we need to think more broadly about loops, device/memory > management, async execution etc. These need to be visible in some form to > the developer so there is a clear demarcation of what runs where, and what > resides where. > > Thinking more broadly, I like where Tornado VM is going. If we could > somehow introspect on the Java code symbolically Tornado VM could apply its > approach in a more standard and supported way. Including support of the > Vector API, translating to GPU vector hardware instructions within a kernel. > > More generally, I view this problem as a graph extraction problem, > splitting a program into the host program and the GPU program, with async > communication between the two. The challenge is to devise a clear > programming model so the developer can understand the runtime effects of > the code they have written. > > Paul. > > > > On Aug 15, 2021, at 5:06 AM, Kartik Ohri wrote: > > > > Hi all! > > > > I understand that Java on GPU was being explored in the Project Sumatra > but > > the sumatra-dev mailing list looks inactive and also my question is > related > > to the Vector API so I am asking here. If I understand correctly, the > > Vector API currently only deals with CPU SIMD. Based on this, I have the > > following few questions: > > > > 1) Is the implementation of the Vector API strictly tied to CPU SIMD and > > hence making it not possible to support GPUs? > > > > 2) If not, have there been any explorations in the past related to GPU > > support in the Vector API ? > > > > 3) If not, are there any future plans to do so? > > > > Regards, > > Kartik > > From jbhateja at openjdk.java.net Mon Aug 16 16:58:40 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 16:58:40 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master Message-ID: Following two files have merge conflicts - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 - src/hotspot/cpu/aarch64/aarch64_sve.ad ------------- Commit messages: - Merge branch 'master' of http://github.com/openjdk/jdk into mainline-merge - 8272297: FileInputStream should override transferTo() for better performance - 8271471: [IR Framework] Rare occurrence of "" in PrintIdeal/PrintOptoAssembly can let tests fail - 8272231: G1: Refactor G1CardSet::get_card_set to return G1CardSetHashTableValue* - 8267833: Improve G1CardSetInlinePtr::add() - 8272235: G1: update outdated code root fixup - 8272158: SoftReference related bugs under memory pressure - 8272439: G1: add documentation to G1CardSetInlinePtr - 8272461: G1: remove empty declaration of cleanup_after_scan_heap_roots - 8272348: Update CDS tests in anticipation of JDK-8270489 - ... and 325 more: https://git.openjdk.java.net/panama-vector/compare/18eda964...c82cfe92 The webrevs contain the adjustments done while merging with regards to each parent branch: - vectorIntrinsics: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=111&range=00.0 - panama-vector:master: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=111&range=00.1 Changes: https://git.openjdk.java.net/panama-vector/pull/111/files Stats: 62061 lines in 1087 files changed: 52119 ins; 4790 del; 5152 mod Patch: https://git.openjdk.java.net/panama-vector/pull/111.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/111/head:pull/111 PR: https://git.openjdk.java.net/panama-vector/pull/111 From jbhateja at openjdk.java.net Mon Aug 16 17:02:49 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 16 Aug 2021 17:02:49 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master In-Reply-To: References: Message-ID: On Mon, 16 Aug 2021 16:41:11 GMT, Jatin Bhateja wrote: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad Hi @nsjian / @theRealELiu / @XiaohongGong Can you kindly help in resolving the conflicts in following two AARCH64 files:- - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 - src/hotspot/cpu/aarch64/aarch64_sve.ad Rest of the changes are clean. Thanks. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/111 From sviswanathan at openjdk.java.net Mon Aug 16 17:36:10 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Mon, 16 Aug 2021 17:36:10 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v7] In-Reply-To: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> References: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> Message-ID: On Mon, 16 Aug 2021 13:33:32 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. src/hotspot/cpu/x86/x86.ad line 9061: > 9059: __ movslq($tmp$$Register, $src$$Register); > 9060: __ kmovql($dst$$KRegister, $tmp$$Register); > 9061: __ kshiftrql($dst$$KRegister, $dst$$KRegister, 64 - vec_len); Could we not do kmovdl followed by kshiftrdl here? Thereby removing the need for movslq. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From psandoz at openjdk.java.net Mon Aug 16 17:55:36 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Mon, 16 Aug 2021 17:55:36 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation [v2] In-Reply-To: References: Message-ID: <0vUg9EScUvoG79ztQz33c2Deux6RB3cXoD_vV04D9f4=.02384ef3-b475-4237-b569-997d66c3c7c1@github.com> On Mon, 16 Aug 2021 08:13:32 GMT, Jatin Bhateja wrote: >> - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. >> - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8272479: Review comments resolution. Java code looks good. ------------- Marked as reviewed by psandoz (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/110 From sviswanathan at openjdk.java.net Mon Aug 16 18:01:50 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Mon, 16 Aug 2021 18:01:50 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v7] In-Reply-To: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> References: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> Message-ID: On Mon, 16 Aug 2021 13:33:32 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. src/hotspot/cpu/x86/stubGenerator_x86_32.cpp line 4004: > 4002: StubRoutines::x86::_vector_long_sign_mask = generate_vector_mask_long_double("vector_long_sign_mask", 0x80000000, 0x00000000); > 4003: StubRoutines::x86::_vector_all_bits_set = generate_vector_mask("vector_all_bits_set", 0xFFFFFFFF); > 4004: StubRoutines::x86::_vector_masked_cmp_bits = generate_vector_mask("vector_masked_cmp_bits", 0x01010101); _vector_masked_cmp_bits can be removed now. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Mon Aug 16 18:01:51 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Mon, 16 Aug 2021 18:01:51 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v4] In-Reply-To: References: Message-ID: On Fri, 13 Aug 2021 23:43:41 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8270349: Review comments resolution. > > src/hotspot/cpu/x86/x86.ad line 7790: > >> 7788: int vlen_enc = vector_length_encoding(vlen_in_bytes); >> 7789: __ evpcmp(T_BYTE, $dst$$KRegister, k0, $src$$XMMRegister, ExternalAddress(vector_masked_cmp_bits()), >> 7790: Assembler::eq, vlen_enc, $scratch$$Register); > > We could use evpmovb2m here. This is still pending. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Mon Aug 16 18:01:52 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Mon, 16 Aug 2021 18:01:52 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v4] In-Reply-To: References: Message-ID: On Sat, 14 Aug 2021 21:22:57 GMT, Jatin Bhateja wrote: >> src/hotspot/cpu/x86/x86.ad line 8996: >> >>> 8994: int opc = this->ideal_Opcode(); >>> 8995: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, >>> 8996: $dst$$XMMRegister, $src2$$XMMRegister, false, vlen_enc); >> >> Since merge masking is false here, dst and src1 could be separate registers. >> There is another flavor of rearrange with second vector, e.g.: >> IntVector rearrange(VectorShuffle s, Vector v); >> Which can use rearrange with merge masking true. >> I don't see a rule for that. Do you plan to add that later? > > All these instructions are in two address format, thus src1 is copied to dst first. Second flavor of rearrange does not accept mask argument. This pattern specifically handled the case with mask. Could you clarify further please. e.g. vpermd is a 3 address instruction: VPERMD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst :Permute doublewords in zmm3/m512/m32bcst using indices in zmm2 and store the result in zmm1 using writemask k1. >> src/hotspot/cpu/x86/x86.ad line 9021: >> >>> 9019: match(Set dst (AbsVL dst mask)); >>> 9020: format %{ "vabs_masked $dst, $mask \t! vabs masked operation" %} >>> 9021: ins_cost(100); >> >> It is not clear why ins_cost is required for matching? > > To give this preference over Set dst (AbsVI src) pattern The pattern is different, one has mask and one doesn't. match(Set dst (AbsVI dst mask)); match(Set dst (AbsVI src)); >> src/hotspot/cpu/x86/x86.ad line 9057: >> >>> 9055: int opc = this->ideal_Opcode(); >>> 9056: __ evmasked_op(opc, bt, $mask$$KRegister, $dst$$XMMRegister, >>> 9057: $src2$$XMMRegister, $src3$$Address, true, vlen_enc); >> >> This and the previous instruct should translate to fma231. > > same as above In non masked version, fma231 is being used. Please double check: FMA operation is dst = dst + src2 * src3, where dst is the accumulator. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Mon Aug 16 20:13:44 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Mon, 16 Aug 2021 20:13:44 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v7] In-Reply-To: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> References: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> Message-ID: On Mon, 16 Aug 2021 13:33:32 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. src/hotspot/cpu/x86/x86.ad line 1962: > 1960: assert(bt != T_INT || VM_Version::supports_avx512bw(), ""); > 1961: assert(bt != T_LONG || VM_Version::supports_avx512bw(), ""); > 1962: if (bt == T_BYTE && VM_Version::supports_avx512dq()) { Should this be if (bt == T_BYTE && !VM_Version::supports_avx512dq()) src/hotspot/cpu/x86/x86.ad line 3798: > 3796: BasicType elem_bt = vector_element_basic_type(this); > 3797: assert(!is_subword_type(elem_bt), "sanity"); // T_INT, T_LONG, T_FLOAT, T_DOUBLE > 3798: __ kmovwl($ktmp$$KRegister, $mask$$KRegister); Why do we need kmovwl here? src/hotspot/cpu/x86/x86.ad line 3838: > 3836: assert(vector_length_in_bytes(this, $src) >= 16, "sanity"); > 3837: assert(!is_subword_type(elem_bt), "sanity"); // T_INT, T_LONG, T_FLOAT, T_DOUBLE > 3838: __ kmovwl($ktmp$$KRegister, $mask$$KRegister); Why do we need kmovwl here? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Tue Aug 17 04:55:02 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Tue, 17 Aug 2021 04:55:02 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation [v3] In-Reply-To: References: Message-ID: > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8272479: Reverting to prior indentation. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/110/files - new: https://git.openjdk.java.net/panama-vector/pull/110/files/eb5c5761..cea134fa Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=110&range=02 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=110&range=01-02 Stats: 4 lines in 1 file changed: 0 ins; 3 del; 1 mod Patch: https://git.openjdk.java.net/panama-vector/pull/110.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/110/head:pull/110 PR: https://git.openjdk.java.net/panama-vector/pull/110 From jbhateja at openjdk.java.net Tue Aug 17 04:55:06 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Tue, 17 Aug 2021 04:55:06 GMT Subject: [vectorIntrinsics+mask] RFR: 8272479: Java API and IR changes for masked rearrange operation [v2] In-Reply-To: References: Message-ID: On Mon, 16 Aug 2021 08:26:15 GMT, Xiaohong Gong wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8272479: Review comments resolution. > > src/hotspot/share/opto/vectorIntrinsics.cpp line 1813: > >> 1811: } >> 1812: } >> 1813: if (!arch_supports_vector(Op_VectorRearrange, num_elem, elem_bt, is_masked_op ? VecMaskUsePred : VecMaskNotUsed)) { > > For masked op, it's better to use the mask type `VecMaskUsePred | VecMaskUseLoad` here? If target does not support predicated rearrange instruction then a blend is the consume of mask, this looks correct. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/110 From jbhateja at openjdk.java.net Tue Aug 17 04:55:08 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Tue, 17 Aug 2021 04:55:08 GMT Subject: [vectorIntrinsics+mask] Integrated: 8272479: Java API and IR changes for masked rearrange operation In-Reply-To: References: Message-ID: On Sat, 14 Aug 2021 21:58:52 GMT, Jatin Bhateja wrote: > - Re-organized the Java API implementation to use one common entry point of masked/non-masked vector compare operation. > - Intrinsic side changes to absorb newly passed mask if target support predicated instructions else handled appropriately by blending full vector rearrange vector with broadcasted ZERO vector. This pull request has now been integrated. Changeset: 50ae3b8c Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/50ae3b8c7e849532a459a9ab6d2ee794925784bf Stats: 312 lines in 41 files changed: 133 ins; 44 del; 135 mod 8272479: Java API and IR changes for masked rearrange operation Reviewed-by: psandoz ------------- PR: https://git.openjdk.java.net/panama-vector/pull/110 From jbhateja at openjdk.java.net Tue Aug 17 04:56:47 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Tue, 17 Aug 2021 04:56:47 GMT Subject: [vectorIntrinsics+mask] Integrated: 8272100: VectorAPI: modify existing implementation of masked neg and not operation. In-Reply-To: References: Message-ID: On Fri, 6 Aug 2021 17:36:26 GMT, Jatin Bhateja wrote: > - Masked NEG/NOT operations can be implemented using existing masked operations instead of emitting an explicit vector blend after the operation. > - Changes shows around 1.3-1.5X gain when merged with X86 backend changes for masking operations. https://github.com/openjdk/panama-vector/pull/99 This pull request has now been integrated. Changeset: bf5918da Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/bf5918da2a40a6966ba4a6473a6a487ee9035ad0 Stats: 20 lines in 5 files changed: 10 ins; 0 del; 10 mod 8272100: VectorAPI: modify existing implementation of masked neg and not operation. Reviewed-by: xgong ------------- PR: https://git.openjdk.java.net/panama-vector/pull/108 From jbhateja at openjdk.java.net Tue Aug 17 06:53:45 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Tue, 17 Aug 2021 06:53:45 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master In-Reply-To: References: Message-ID: On Mon, 16 Aug 2021 16:41:11 GMT, Jatin Bhateja wrote: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad Hi @nsjian / @theRealELiu / @XiaohongGong Following diff fixes this merge and hotspot builds successfully. Kindly validate the changes. Certain mainline commits are needed for vectorIntrinsics+mask work for X86. diff --git a/src/hotspot/cpu/aarch64/aarch64.ad b/src/hotspot/cpu/aarch64/aarch64.ad index 430d7d8460c..d5ce5e10914 100644 --- a/src/hotspot/cpu/aarch64/aarch64.ad +++ b/src/hotspot/cpu/aarch64/aarch64.ad @@ -1295,6 +1295,30 @@ public: }; }; + static inline BasicType vector_element_basic_type(const MachNode* n) { + const TypeVect* vt = n->bottom_type()->is_vect(); + return vt->element_basic_type(); + } + + static inline BasicType vector_element_basic_type(const MachNode* use, const MachOper* opnd) { + int def_idx = use->operand_index(opnd); + Node* def = use->in(def_idx); + const TypeVect* vt = def->bottom_type()->is_vect(); + return vt->element_basic_type(); + } + + static inline uint vector_length(const MachNode* n) { + const TypeVect* vt = n->bottom_type()->is_vect(); + return vt->length(); + } + + static inline uint vector_length(const MachNode* use, const MachOper* opnd) { + int def_idx = use->operand_index(opnd); + Node* def = use->in(def_idx); + const TypeVect* vt = def->bottom_type()->is_vect(); + return vt->length(); + } + bool is_CAS(int opcode, bool maybe_volatile); // predicates controlling emit of ldr/ldar and associated dmb diff --git a/src/hotspot/cpu/aarch64/aarch64_sve.ad b/src/hotspot/cpu/aarch64/aarch64_sve.ad index a85d89467db..3d7a1f72afd 100644 --- a/src/hotspot/cpu/aarch64/aarch64_sve.ad +++ b/src/hotspot/cpu/aarch64/aarch64_sve.ad @@ -190,16 +190,10 @@ instruct loadV(vReg dst, vmemA mem) %{ format %{ "sve_ldr $dst, $mem\t# vector (sve)" %} ins_encode %{ FloatRegister dst_reg = as_FloatRegister($dst$$reg); -<<<<<<< HEAD BasicType bt = vector_element_basic_type(this); loadStoreA_predicated(C2_MacroAssembler(&cbuf), false, dst_reg, ptrue, bt, bt, $mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); -======= - loadStoreA_predicate(C2_MacroAssembler(&cbuf), false, dst_reg, ptrue, - Matcher::vector_element_basic_type(this), $mem->opcode(), - as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b %} ins_pipe(pipe_slow); %} @@ -343,7 +337,6 @@ instruct storeV_partial(vReg src, vmemA mem, pRegGov pTmp, rFlagsReg cr) %{ BasicType bt = vector_element_basic_type(this, $src); __ sve_whilelo_zr_imm(as_PRegister($pTmp$$reg), __ elemType_to_regVariant(bt), vector_length(this, $src)); FloatRegister src_reg = as_FloatRegister($src$$reg); -<<<<<<< HEAD loadStoreA_predicated(C2_MacroAssembler(&cbuf), true, src_reg, as_PRegister($pTmp$$reg), bt, bt, $mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); @@ -383,11 +376,6 @@ instruct reinterpretResize(vReg dst, vReg src, pRegGov pTmp, rFlagsReg cr) %{ __ sve_dup(as_FloatRegister($dst$$reg), __ B, 0); __ sve_sel(as_FloatRegister($dst$$reg), __ B, as_PRegister($pTmp$$reg), as_FloatRegister($src$$reg), as_FloatRegister($dst$$reg)); -======= - loadStoreA_predicate(C2_MacroAssembler(&cbuf), true, src_reg, ptrue, - Matcher::vector_element_basic_type(this, $src), $mem->opcode(), - as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b %} ins_pipe(pipe_slow); %} @@ -691,13 +679,8 @@ instruct vmin(vReg dst_src1, vReg src2) %{ ins_cost(SVE_COST); format %{ "sve_min $dst_src1, $dst_src1, $src2\t # vector (sve)" %} ins_encode %{ -<<<<<<< HEAD BasicType bt = vector_element_basic_type(this); Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt); -======= - BasicType bt = Matcher::vector_element_basic_type(this); - Assembler::SIMD_RegVariant size = elemType_to_regVariant(bt); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b if (is_floating_point_type(bt)) { __ sve_fmin(as_FloatRegister($dst_src1$$reg), size, ptrue, as_FloatRegister($src2$$reg)); @@ -716,13 +699,8 @@ instruct vmax(vReg dst_src1, vReg src2) %{ ins_cost(SVE_COST); format %{ "sve_max $dst_src1, $dst_src1, $src2\t # vector (sve)" %} ins_encode %{ -<<<<<<< HEAD BasicType bt = vector_element_basic_type(this); Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt); -======= - BasicType bt = Matcher::vector_element_basic_type(this); - Assembler::SIMD_RegVariant size = elemType_to_regVariant(bt); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b if (is_floating_point_type(bt)) { __ sve_fmax(as_FloatRegister($dst_src1$$reg), size, ptrue, as_FloatRegister($src2$$reg)); diff --git a/src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 b/src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 index 22a0487f2ac..3d9087a8035 100644 --- a/src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 +++ b/src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 @@ -193,16 +193,10 @@ instruct loadV(vReg dst, vmemA mem) %{ format %{ "sve_ldr $dst, $mem\t# vector (sve)" %} ins_encode %{ FloatRegister dst_reg = as_FloatRegister($dst$$reg); -<<<<<<< HEAD BasicType bt = vector_element_basic_type(this); loadStoreA_predicated(C2_MacroAssembler(&cbuf), false, dst_reg, ptrue, bt, bt, $mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); -======= - loadStoreA_predicate(C2_MacroAssembler(&cbuf), false, dst_reg, ptrue, - Matcher::vector_element_basic_type(this), $mem->opcode(), - as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b %} ins_pipe(pipe_slow); %} @@ -280,15 +274,9 @@ instruct storeV_partial(vReg src, vmemA mem, pRegGov pTmp, rFlagsReg cr) %{ BasicType bt = vector_element_basic_type(this, $src); __ sve_whilelo_zr_imm(as_PRegister($pTmp$$reg), __ elemType_to_regVariant(bt), vector_length(this, $src)); FloatRegister src_reg = as_FloatRegister($src$$reg); -<<<<<<< HEAD loadStoreA_predicated(C2_MacroAssembler(&cbuf), true, src_reg, as_PRegister($pTmp$$reg), bt, bt, $mem->opcode(), as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); -======= - loadStoreA_predicate(C2_MacroAssembler(&cbuf), true, src_reg, ptrue, - Matcher::vector_element_basic_type(this, $src), $mem->opcode(), - as_Register($mem$$base), $mem$$index, $mem$$scale, $mem$$disp); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b %} ins_pipe(pipe_slow); %}dnl @@ -482,13 +470,8 @@ instruct vmin(vReg dst_src1, vReg src2) %{ ins_cost(SVE_COST); format %{ "sve_min $dst_src1, $dst_src1, $src2\t # vector (sve)" %} ins_encode %{ -<<<<<<< HEAD BasicType bt = vector_element_basic_type(this); Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt); -======= - BasicType bt = Matcher::vector_element_basic_type(this); - Assembler::SIMD_RegVariant size = elemType_to_regVariant(bt); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b if (is_floating_point_type(bt)) { __ sve_fmin(as_FloatRegister($dst_src1$$reg), size, ptrue, as_FloatRegister($src2$$reg)); @@ -507,13 +490,8 @@ instruct vmax(vReg dst_src1, vReg src2) %{ ins_cost(SVE_COST); format %{ "sve_max $dst_src1, $dst_src1, $src2\t # vector (sve)" %} ins_encode %{ -<<<<<<< HEAD BasicType bt = vector_element_basic_type(this); Assembler::SIMD_RegVariant size = __ elemType_to_regVariant(bt); -======= - BasicType bt = Matcher::vector_element_basic_type(this); - Assembler::SIMD_RegVariant size = elemType_to_regVariant(bt); ->>>>>>> 82688258f676e6be8a603f6ab744d52728e3478b if (is_floating_point_type(bt)) { __ sve_fmax(as_FloatRegister($dst_src1$$reg), size, ptrue, as_FloatRegister($src2$$reg)); ------------- PR: https://git.openjdk.java.net/panama-vector/pull/111 From njian at openjdk.java.net Tue Aug 17 06:57:45 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Tue, 17 Aug 2021 06:57:45 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master In-Reply-To: References: Message-ID: On Tue, 17 Aug 2021 06:50:17 GMT, Jatin Bhateja wrote: > Hi @nsjian / @theRealELiu / @XiaohongGong > Following diff fixes this merge and hotspot builds successfully. > > Kindly validate the changes. Certain mainline commits are needed for vectorIntrinsics+mask work for X86. @jatin-bhateja Thanks! I have a working patch. Will send out soon. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/111 From njian at openjdk.java.net Tue Aug 17 07:10:35 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Tue, 17 Aug 2021 07:10:35 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master In-Reply-To: References: Message-ID: On Tue, 17 Aug 2021 06:54:26 GMT, Ningsheng Jian wrote: > > Hi @nsjian / @theRealELiu / @XiaohongGong > > Following diff fixes this merge and hotspot builds successfully. > > Kindly validate the changes. Certain mainline commits are needed for vectorIntrinsics+mask work for X86. > > @jatin-bhateja Thanks! I have a working patch. Will send out soon. This is the commit to resolve the conflicts. https://github.com/nsjian/panama-vector/commit/6bb3458f7be534973491c8b7d916cd92c80989c1 ------------- PR: https://git.openjdk.java.net/panama-vector/pull/111 From andrewluotechnologies at outlook.com Tue Aug 17 10:38:00 2021 From: andrewluotechnologies at outlook.com (Andrew Luo) Date: Tue, 17 Aug 2021 10:38:00 +0000 Subject: Fix example in javadoc for LibraryLookup Message-ID: I have a small patch to fix the javadoc for LibraryLookup in JDK 16 (this PR is only for JDK16 since in JDK17 this interface is replaced). https://github.com/openjdk/jdk16u/pull/130 (Note: I'm already an OpenJDK contributor and have signed an OCA but don't have an author account to be able to create bugs) Thanks, -Andrew From paul.sandoz at oracle.com Tue Aug 17 17:25:45 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Tue, 17 Aug 2021 17:25:45 +0000 Subject: Fix example in javadoc for LibraryLookup In-Reply-To: References: Message-ID: <7FB81162-97F8-40E7-8BFA-9E4D00F19A0A@oracle.com> Hi Andrew, Appreciate you reaching out and finding a documentation issue. IMHO in this case I don?t think it worth expending effort updating for a JDK 16u release [*]: - as you noted that area of this (incubating) API has changed, quite significantly. - JDK 17 will be released soon (2021/09/14) and we can refocus developers to JDK 17 for feedback (rather than a JDK 16u update). My recommendation would be to withdraw the PR. I would encourage you to give feedback on JDK 17 (or even directly on the Panama foreign code base) from which, if actionable, can be applied to a future major JDK release. Paul. [*] there are of course exceptions e.g. based on severity and unintentional bad interactions with non-incubating areas. > On Aug 17, 2021, at 3:38 AM, Andrew Luo wrote: > > I have a small patch to fix the javadoc for LibraryLookup in JDK 16 (this PR is only for JDK16 since in JDK17 this interface is replaced). > > https://github.com/openjdk/jdk16u/pull/130 > > (Note: I'm already an OpenJDK contributor and have signed an OCA but don't have an author account to be able to create bugs) > > Thanks, > > -Andrew From mike.ennen at gmail.com Tue Aug 17 20:26:31 2021 From: mike.ennen at gmail.com (Michael Ennen) Date: Tue, 17 Aug 2021 13:26:31 -0700 Subject: Illegal native access from module even with --enable-native-access=[module] Message-ID: I am once again messing around with Project Panama. This time exploring Vulkan. You can find the project here: https://github.com/brcolow/java-vulkan You can use jextract on Vulkan API headers by running `jextract.ps1` in Powershell (Windows). Then use `maven-exec-plugin` by running: "mvn exec:exec" which is running java with the following arguments: [C:\Program Files\Java\jdk-17-panama\bin\java.exe, --add-modules, jdk.incubator.foreign, --module-path, C:\Users\mikee\dev\java-vulkan\target\classes, --module, com.brcolow.vulkan/com.brcolow.vulkan.Vulkan, --enable-native-access=com.brcolow.vulkan] (I have tried with and without --add-modules jdk.incubator.foreign which shouldn't be necessary given my module-info.java). The JDK version is the latest EA "17-panama+3-167", I get the error: Exception in thread "main" java.lang.ExceptionInInitializerError at com.brcolow.vulkan at 0.0.1-SNAPSHOT /com.brcolow.vulkan.constants$48.(constants$48.java:15) at com.brcolow.vulkan at 0.0.1-SNAPSHOT /com.brcolow.vulkan.vulkan_h_14.vkCreateInstance(vulkan_h_14.java:694) at com.brcolow.vulkan at 0.0.1-SNAPSHOT /com.brcolow.vulkan.Vulkan.main(Vulkan.java:34) Caused by: java.lang.IllegalCallerException: Illegal native access from module: com.brcolow.vulkan at java.base/jdk.internal.reflect.Reflection.ensureNativeAccess(Reflection.java:113) at jdk.incubator.foreign/jdk.incubator.foreign.CLinker.getInstance(CLinker.java:129) at com.brcolow.vulkan at 0.0.1-SNAPSHOT /com.brcolow.vulkan.RuntimeHelper.(RuntimeHelper.java:27) ... 3 more Thank you. -- Michael Ennen From paul.sandoz at oracle.com Tue Aug 17 20:58:03 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Tue, 17 Aug 2021 20:58:03 +0000 Subject: Illegal native access from module even with --enable-native-access=[module] In-Reply-To: References: Message-ID: <31C94475-64D3-40F6-8CD8-F16ECCC58EA3@oracle.com> Hi, Try placing "--enable-native-access=com.brcolow.vulkan? before ??module ?? otherwise it becomes part of the string args passed to the application: @@ -29,11 +29,11 @@ --add-modules jdk.incubator.foreign + --enable-native-access=com.brcolow.vulkan --module-path --module com.brcolow.vulkan/com.brcolow.vulkan.Vulkan - --enable-native-access=com.brcolow.vulkan Paul. > On Aug 17, 2021, at 1:26 PM, Michael Ennen wrote: > > I am once again messing around with Project Panama. This time exploring > Vulkan. > > You can find the project here: > > https://github.com/brcolow/java-vulkan > > You can use jextract on Vulkan API headers by running `jextract.ps1` in > Powershell (Windows). > > Then use `maven-exec-plugin` by running: > > "mvn exec:exec" > > which is running java with the following arguments: > > [C:\Program Files\Java\jdk-17-panama\bin\java.exe, --add-modules, > jdk.incubator.foreign, --module-path, > C:\Users\mikee\dev\java-vulkan\target\classes, --module, > com.brcolow.vulkan/com.brcolow.vulkan.Vulkan, > --enable-native-access=com.brcolow.vulkan] > > (I have tried with and without --add-modules jdk.incubator.foreign which > shouldn't be necessary given my module-info.java). > > The JDK version is the latest EA "17-panama+3-167", I get the error: > > > Exception in thread "main" java.lang.ExceptionInInitializerError > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > /com.brcolow.vulkan.constants$48.(constants$48.java:15) > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > /com.brcolow.vulkan.vulkan_h_14.vkCreateInstance(vulkan_h_14.java:694) > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > /com.brcolow.vulkan.Vulkan.main(Vulkan.java:34) > > Caused by: java.lang.IllegalCallerException: Illegal native access from > module: com.brcolow.vulkan > > at > java.base/jdk.internal.reflect.Reflection.ensureNativeAccess(Reflection.java:113) > > at > jdk.incubator.foreign/jdk.incubator.foreign.CLinker.getInstance(CLinker.java:129) > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > /com.brcolow.vulkan.RuntimeHelper.(RuntimeHelper.java:27) > ... 3 more > > Thank you. > -- > Michael Ennen From mike.ennen at gmail.com Tue Aug 17 22:36:47 2021 From: mike.ennen at gmail.com (Michael Ennen) Date: Tue, 17 Aug 2021 15:36:47 -0700 Subject: Illegal native access from module even with --enable-native-access=[module] In-Reply-To: <31C94475-64D3-40F6-8CD8-F16ECCC58EA3@oracle.com> References: <31C94475-64D3-40F6-8CD8-F16ECCC58EA3@oracle.com> Message-ID: Ah, of course. That makes sense. Thank you very much - it works. On Tue, Aug 17, 2021 at 1:58 PM Paul Sandoz wrote: > Hi, > > Try placing "--enable-native-access=com.brcolow.vulkan? before ??module ?? > otherwise it becomes part of the string args passed to the application: > > @@ -29,11 +29,11 @@ > > --add-modules > jdk.incubator.foreign > + > --enable-native-access=com.brcolow.vulkan > --module-path > > --module > > com.brcolow.vulkan/com.brcolow.vulkan.Vulkan > - > --enable-native-access=com.brcolow.vulkan > > > > > > Paul. > > > On Aug 17, 2021, at 1:26 PM, Michael Ennen wrote: > > > > I am once again messing around with Project Panama. This time exploring > > Vulkan. > > > > You can find the project here: > > > > https://github.com/brcolow/java-vulkan > > > > You can use jextract on Vulkan API headers by running `jextract.ps1` in > > Powershell (Windows). > > > > Then use `maven-exec-plugin` by running: > > > > "mvn exec:exec" > > > > which is running java with the following arguments: > > > > [C:\Program Files\Java\jdk-17-panama\bin\java.exe, --add-modules, > > jdk.incubator.foreign, --module-path, > > C:\Users\mikee\dev\java-vulkan\target\classes, --module, > > com.brcolow.vulkan/com.brcolow.vulkan.Vulkan, > > --enable-native-access=com.brcolow.vulkan] > > > > (I have tried with and without --add-modules jdk.incubator.foreign which > > shouldn't be necessary given my module-info.java). > > > > The JDK version is the latest EA "17-panama+3-167", I get the error: > > > > > > Exception in thread "main" java.lang.ExceptionInInitializerError > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > > /com.brcolow.vulkan.constants$48.(constants$48.java:15) > > > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > > /com.brcolow.vulkan.vulkan_h_14.vkCreateInstance(vulkan_h_14.java:694) > > > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > > /com.brcolow.vulkan.Vulkan.main(Vulkan.java:34) > > > > Caused by: java.lang.IllegalCallerException: Illegal native access from > > module: com.brcolow.vulkan > > > > at > > > java.base/jdk.internal.reflect.Reflection.ensureNativeAccess(Reflection.java:113) > > > > at > > > jdk.incubator.foreign/jdk.incubator.foreign.CLinker.getInstance(CLinker.java:129) > > > > at com.brcolow.vulkan at 0.0.1-SNAPSHOT > > /com.brcolow.vulkan.RuntimeHelper.(RuntimeHelper.java:27) > > ... 3 more > > > > Thank you. > > -- > > Michael Ennen > > -- Michael Ennen From jbhateja at openjdk.java.net Wed Aug 18 05:26:42 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Wed, 18 Aug 2021 05:26:42 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master [v2] In-Reply-To: References: Message-ID: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: AARCH64 merge diffs from @nsjian ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/111/files - new: https://git.openjdk.java.net/panama-vector/pull/111/files/c82cfe92..72ba1f8f Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=111&range=01 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=111&range=00-01 Stats: 272 lines in 2 files changed: 69 ins; 68 del; 135 mod Patch: https://git.openjdk.java.net/panama-vector/pull/111.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/111/head:pull/111 PR: https://git.openjdk.java.net/panama-vector/pull/111 From jbhateja at openjdk.java.net Wed Aug 18 05:32:45 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Wed, 18 Aug 2021 05:32:45 GMT Subject: [vectorIntrinsics] RFR: Merge panama-vector:master In-Reply-To: References: Message-ID: On Tue, 17 Aug 2021 07:07:12 GMT, Ningsheng Jian wrote: >>> Hi @nsjian / @theRealELiu / @XiaohongGong >>> Following diff fixes this merge and hotspot builds successfully. >>> >>> Kindly validate the changes. Certain mainline commits are needed for vectorIntrinsics+mask work for X86. >> >> @jatin-bhateja Thanks! I have a working patch. Will send out soon. > >> > Hi @nsjian / @theRealELiu / @XiaohongGong >> > Following diff fixes this merge and hotspot builds successfully. >> > Kindly validate the changes. Certain mainline commits are needed for vectorIntrinsics+mask work for X86. >> >> @jatin-bhateja Thanks! I have a working patch. Will send out soon. > > This is the commit to resolve the conflicts. > > https://github.com/nsjian/panama-vector/commit/6bb3458f7be534973491c8b7d916cd92c80989c1 > > > Hi @nsjian / @theRealELiu / @XiaohongGong > > > Following diff fixes this merge and hotspot builds successfully. > > > Kindly validate the changes. Certain mainline commits are needed for vectorIntrinsics+mask work for X86. > > > > > > @jatin-bhateja Thanks! I have a working patch. Will send out soon. > > This is the commit to resolve the conflicts. > > [nsjian at 6bb3458](https://github.com/nsjian/panama-vector/commit/6bb3458f7be534973491c8b7d916cd92c80989c1) Thanks for the patch. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/111 From jbhateja at openjdk.java.net Wed Aug 18 05:32:48 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Wed, 18 Aug 2021 05:32:48 GMT Subject: [vectorIntrinsics] Integrated: Merge panama-vector:master In-Reply-To: References: Message-ID: On Mon, 16 Aug 2021 16:41:11 GMT, Jatin Bhateja wrote: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad This pull request has now been integrated. Changeset: 3b215931 Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/3b21593199cbb11cb4019ef53c831fd087a0ba50 Stats: 62245 lines in 1087 files changed: 52144 ins; 4814 del; 5287 mod Merge panama-vector:master Co-authored-by: Ningsheng Jian ------------- PR: https://git.openjdk.java.net/panama-vector/pull/111 From mail at smogura.eu Wed Aug 18 07:17:54 2021 From: mail at smogura.eu (Rado Smogura) Date: Wed, 18 Aug 2021 09:17:54 +0200 Subject: [External] : Re: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> Message-ID: Hi Vladimir, Thank you for answer. In fact, it is was an attempt to confirm that memory flow can be a cause why loop opts do not work. That's very fair point. I'll think about it and maybe I'll be able to come out idea how this can be generalized. Kind regards, Rado On 16.08.2021 15:41, Vladimir Ivanov wrote: >> I wonder what do you think about something like this [1] - it's >> virtually small single class change > > Very interesting experiment, Rado! It's encouraging to hear that loop > opts immediately benefit from it. > > From a architectural perspective, a separate pass to optimize memory > graph brings excessive complexity: > > ? (1) yet another pass over the graph and susceptible to pass ordering > issues; > > ? (2) separate from GVN: you either have to duplicate GVN-based memory > optimizations or run new pass with IGVN in a loop until it stabilizes. > > IMO the problem you noticed illustrates a general weakness in GVN > implementation and that's the place where it should be fixed (ideally). > > Best regards, > Vladimir Ivanov > >> >> This change tries to find unique memory for load node. I implemented >> it as separate phase, as optimization may not run in Ideal method. I >> think it's ligher than phi split out. >> >> Loops has been transformed. RCE started. >> >> Kind regards, >> Rado >> >> [1] - >> https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 >> >> >> [2] - >> https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation >> >> (full test case) >> >> ------------------------------------------------------------------------ >> *From:* Rados?aw Smogura on behalf of Rados?aw Smogura >> *Sent:* Friday, August 6, 2021 22:43 >> *To:* Rados?aw Smogura ; Paul Sandoz >> ; Vladimir Ivanov >> *Cc:* panama-dev at openjdk.java.net >> *Subject:* Re: Issues with loop unrolling: better pinned node >> Hi all, >> >> Now when I checked it again. it works as expected, and it's the same >> code. >> >> In draft code I check if the buffer is direct by using type checking >> to unswitch loop, as unswitching over ByteBuffer.hb did not work (the >> graph was quite similar). However, I thought that this unswitch >> actually helped to build correct loops, and any kind of improvement >> around it would be rather for the purpose of better-looking code. >> >> But it looks like that sometimes (but only sometimes) loop still can >> not be correctly built, or maybe the full optimization kicks in very, >> very late. >> >> Kind regards, >> Rado >> ------------------------------------------------------------------------ >> *From:* panama-dev on behalf of >> Rados?aw Smogura >> *Sent:* Friday, August 6, 2021 20:22 >> *To:* Paul Sandoz >> *Cc:* panama-dev at openjdk.java.net >> *Subject:* Re: Issues with loop unrolling: better pinned node >> Yes, >> >> The normal case looks, good. It's all about polluted cases [1] >> >> BR, >> Rado >> >> [1] https://github.com/openjdk/panama-vector/pull/109 >> >> [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109]> > >> >> (Draft) Perofrmance improvements for polluted cases by rsmogura ? >> Pull Request #109 ? >> openjdk/panama-vector >> >> >> Hi all, I would like to submit this piece of work, for byte buffers >> and polluted cases. It resolves some performance issues related to >> mem barriers when in scope are both on- and off-heap buffer. T... >> github.com >> >> [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector]> > >> >> Comparing openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases >> ? >> openjdk/panama-vector >> >> >> Panama vector. Contribute to openjdk/panama-vector development by >> creating an account on GitHub. >> github.com >> >> ________________________________ >> From: Paul Sandoz >> Sent: Friday, August 6, 2021 20:04 >> To: Rados?aw Smogura >> Cc: panama-dev at openjdk.java.net >> Subject: Re: Issues with loop unrolling: better pinned node >> >> I am confused as to the case under test. In your initial email of >> this thread were you also referring implicitly to polluted cases? >> >> Paul. >> >>> On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: >>> >>> Hi Paul, >>> >>> There's a performance improvement, but. I still can't unroll >>> polluted cases (I cherry-picked loop unrolling). The graph still has >>> few nodes taking buffer limit from phi, and on IR I don't see >>> vectors nodes cascading. >>> >>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 >>> -prof perfasm >>> -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" >>> JOBS=12 >>> Benchmark???????????????????????????????????? (size)? Mode Cnt?? >>> Score?? Error? Units >>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt 30? >>> 40.472 ? 1.055? ns/op >>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 avgt????????? >>> NaN??????????? --- >>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt 30? >>> 79.251 ? 0.786? ns/op >>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 avgt????????? >>> NaN??????????? --- >>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt 30? >>> 83.627 ? 2.140? ns/op >>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 avgt????????? >>> NaN??????????? --- >>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt 30? >>> 85.561 ? 1.156? ns/op >>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 avgt????????? NaN >>> >>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 >>> -prof perfasm" >>> Benchmark???????????????????????????????????? (size)? Mode Cnt??? >>> Score?? Error? Units >>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt 10?? >>> 49.326 ? 0.843? ns/op >>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 avgt?????????? >>> NaN??????????? --- >>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt 10? >>> 100.291 ? 1.271? ns/op >>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 avgt?????????? >>> NaN??????????? --- >>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt 10? >>> 101.494 ? 1.027? ns/op >>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 avgt?????????? >>> NaN??????????? --- >>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt 10?? >>> 94.606 ? 1.522? ns/op >>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 avgt?????????? NaN >>> >>> >>> BR, >>> Rado >>> From: Paul Sandoz >>> Sent: Friday, August 6, 2021 18:04 >>> To: Rados?aw Smogura >>> Cc: panama-dev at openjdk.java.net >>> Subject: Re: Issues with loop unrolling: better pinned node >>> >>> Hi Rado, >>> >>> It?s good you are looking at the IR >>> >>> Out of curiosity, what happens if you turn off bounds checking [*]? >>> >>> Paul. >>> >>> [*] >>> -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 >>> >>> > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura wrote: >>> > >>> > Hi all, >>> > >>> > I've found that even if we get rid of barriers, the loop can't get >>> unrolled, and not needed code is inside it. >>> > >>> > I've found this graph, I wonder if it's most optimal, in a >>> partiucalry Load of ByteBuffer index / hb is from phi, could it be >>> attached to initial memory? >>> > >>> > Here's a picture >>> https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing >> >> >> >>> > >>> [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p]> >> > >> >>> > >>> bb_issues.png> >> > >> >>> > drive.google.com >>> > >>> > >>> > And sample code >>> > >>> > protected void copyMemory(ByteBuffer in, ByteBuffer out) { >>> >? var limit = SPECIES.loopBound(in.limit()); >>> >? for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { >>> >??? final var v = ByteVector.fromByteBuffer(SPECIES, in, i, >>> ByteOrder.nativeOrder()); >>> >??? v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); >>> >? } >>> > } >>> > >>> > Kind regards, >>> > Rado >> From jbhateja at openjdk.java.net Thu Aug 19 03:42:18 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 03:42:18 GMT Subject: [vectorIntrinsics+mask] RFR: Merge panama-vector:vectorIntrinsics Message-ID: Following two files have merge conflicts - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 - src/hotspot/cpu/aarch64/aarch64_sve.ad @nsjian, @theRealELiu , @XiaohongGong Can you kindly resolve the conflicts. Thanks ------------- Commit messages: - Merge branch 'vectorIntrinsics' of http://github.com/openjdk/panama-vector into merge-vectorIntrinsics - Merge panama-vector:master - 8272297: FileInputStream should override transferTo() for better performance - 8271471: [IR Framework] Rare occurrence of "" in PrintIdeal/PrintOptoAssembly can let tests fail - 8272231: G1: Refactor G1CardSet::get_card_set to return G1CardSetHashTableValue* - 8267833: Improve G1CardSetInlinePtr::add() - 8272235: G1: update outdated code root fixup - 8272158: SoftReference related bugs under memory pressure - 8272439: G1: add documentation to G1CardSetInlinePtr - 8272461: G1: remove empty declaration of cleanup_after_scan_heap_roots - ... and 327 more: https://git.openjdk.java.net/panama-vector/compare/bf5918da...167bf305 The webrevs contain the adjustments done while merging with regards to each parent branch: - vectorIntrinsics+mask: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=112&range=00.0 - panama-vector:vectorIntrinsics: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=112&range=00.1 Changes: https://git.openjdk.java.net/panama-vector/pull/112/files Stats: 63262 lines in 1090 files changed: 53193 ins; 4850 del; 5219 mod Patch: https://git.openjdk.java.net/panama-vector/pull/112.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/112/head:pull/112 PR: https://git.openjdk.java.net/panama-vector/pull/112 From njian at openjdk.java.net Thu Aug 19 10:48:45 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Thu, 19 Aug 2021 10:48:45 GMT Subject: [vectorIntrinsics+mask] RFR: Merge panama-vector:vectorIntrinsics In-Reply-To: References: Message-ID: On Thu, 19 Aug 2021 03:35:19 GMT, Jatin Bhateja wrote: > Following two files have merge conflicts > > * src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > * src/hotspot/cpu/aarch64/aarch64_sve.ad > > @nsjian, @theRealELiu , @XiaohongGong > Can you kindly resolve the conflicts. This is the commit on top of your code, with conflicts resolved. https://github.com/nsjian/panama-vector/commit/c01c135c66bc2cc5d867d3ee233029365b08c59d ------------- PR: https://git.openjdk.java.net/panama-vector/pull/112 From jbhateja at openjdk.java.net Thu Aug 19 11:08:06 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 11:08:06 GMT Subject: [vectorIntrinsics+mask] RFR: Merge panama-vector:vectorIntrinsics [v2] In-Reply-To: References: Message-ID: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad > > @nsjian, @theRealELiu , @XiaohongGong > Can you kindly resolve the conflicts. > > Thanks Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 20 commits: - AARCH64 merge conflicts resolution - Merge branch 'vectorIntrinsics' of http://github.com/openjdk/panama-vector into merge-vectorIntrinsics - 8272100: VectorAPI: modify existing implementation of masked neg and not operation. Reviewed-by: xgong - 8272479: Java API and IR changes for masked rearrange operation Reviewed-by: psandoz - 8271539: Add masking support for load/store from/into byte array/buffer Reviewed-by: psandoz - 8271313: AArch64: SVE backend support for masking operations with predicate feature Co-authored-by: Eric Liu Co-authored-by: Ningsheng Jian Reviewed-by: njian - 8271273: Java API and IR changes for masked compare operation Reviewed-by: xgong - Merge panama-vector:vectorIntrinsics Reviewed-by: sviswanathan - 8270264: Add the masking support for vector lanewiseShift Reviewed-by: jbhateja, psandoz - 8266287: Basic mask IR implementation for the Vector API masking feature support Reviewed-by: sviswanathan - ... and 10 more: https://git.openjdk.java.net/panama-vector/compare/3b215931...bdae146f ------------- Changes: https://git.openjdk.java.net/panama-vector/pull/112/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=112&range=01 Stats: 14614 lines in 85 files changed: 10814 ins; 1367 del; 2433 mod Patch: https://git.openjdk.java.net/panama-vector/pull/112.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/112/head:pull/112 PR: https://git.openjdk.java.net/panama-vector/pull/112 From jbhateja at openjdk.java.net Thu Aug 19 11:08:08 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 11:08:08 GMT Subject: [vectorIntrinsics+mask] RFR: Merge panama-vector:vectorIntrinsics In-Reply-To: References: Message-ID: <0jabANO0mAMQOEc_BNFha2JDA4YcHMBsBZnun4hPLvU=.afb611de-0257-4fc1-a23a-4bd191d3e759@github.com> On Thu, 19 Aug 2021 03:35:19 GMT, Jatin Bhateja wrote: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad > > @nsjian, @theRealELiu , @XiaohongGong > Can you kindly resolve the conflicts. > > Thanks > > Following two files have merge conflicts > > > > * src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > > * src/hotspot/cpu/aarch64/aarch64_sve.ad > > > > @nsjian, @theRealELiu , @XiaohongGong > > Can you kindly resolve the conflicts. > > This is the commit on top of your code, with conflicts resolved. > > [nsjian at c01c135](https://github.com/nsjian/panama-vector/commit/c01c135c66bc2cc5d867d3ee233029365b08c59d) Thanks @nsjina, conflicts merged. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/112 From jbhateja at openjdk.java.net Thu Aug 19 11:08:11 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 11:08:11 GMT Subject: [vectorIntrinsics+mask] Integrated: Merge panama-vector:vectorIntrinsics In-Reply-To: References: Message-ID: On Thu, 19 Aug 2021 03:35:19 GMT, Jatin Bhateja wrote: > Following two files have merge conflicts > - src/hotspot/cpu/aarch64/aarch64_sve_ad.m4 > - src/hotspot/cpu/aarch64/aarch64_sve.ad > > @nsjian, @theRealELiu , @XiaohongGong > Can you kindly resolve the conflicts. > > Thanks This pull request has now been integrated. Changeset: c1950c63 Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/c1950c63ae2081427b2438b9658435a1a853697f Stats: 62699 lines in 1090 files changed: 52465 ins; 4850 del; 5384 mod Merge panama-vector:vectorIntrinsics Co-authored-by: Ningsheng Jian ------------- PR: https://git.openjdk.java.net/panama-vector/pull/112 From mail at smogura.eu Thu Aug 19 16:39:24 2021 From: mail at smogura.eu (Rado Smogura) Date: Thu, 19 Aug 2021 18:39:24 +0200 Subject: [External] : Re: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> Message-ID: Hi all, I hope you have a good day. As still optimizing loops would be good approach, I thought about optimizing a mixed access with this approach: 1. When mixed access is detected set flag "raw / byte array" mixed access. 2. Bail out and restart compilation (will happen during first phases, and only for few methods). 3. Pass a flag to compiler. 4. Modify find_alias_type / flatten_alias_type, so that if byte array will be queried for alias, raw ptr and raw alias will be used. Kind regards, Rado On 18.08.2021 09:17, Rado Smogura wrote: > Hi Vladimir, > > > Thank you for answer. > > > In fact, it is was an attempt to confirm that memory flow can be a > cause why loop opts do not work. That's very fair point. I'll think > about it and maybe I'll be able to come out idea how this can be > generalized. > > > Kind regards, > > Rado > > On 16.08.2021 15:41, Vladimir Ivanov wrote: >>> I wonder what do you think about something like this [1] - it's >>> virtually small single class change >> >> Very interesting experiment, Rado! It's encouraging to hear that loop >> opts immediately benefit from it. >> >> From a architectural perspective, a separate pass to optimize memory >> graph brings excessive complexity: >> >> ? (1) yet another pass over the graph and susceptible to pass >> ordering issues; >> >> ? (2) separate from GVN: you either have to duplicate GVN-based >> memory optimizations or run new pass with IGVN in a loop until it >> stabilizes. >> >> IMO the problem you noticed illustrates a general weakness in GVN >> implementation and that's the place where it should be fixed (ideally). >> >> Best regards, >> Vladimir Ivanov >> >>> >>> This change tries to find unique memory for load node. I implemented >>> it as separate phase, as optimization may not run in Ideal method. I >>> think it's ligher than phi split out. >>> >>> Loops has been transformed. RCE started. >>> >>> Kind regards, >>> Rado >>> >>> [1] - >>> https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 >>> >>> >>> [2] - >>> https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation >>> >>> (full test case) >>> >>> ------------------------------------------------------------------------ >>> >>> *From:* Rados?aw Smogura on behalf of Rados?aw Smogura >>> >>> *Sent:* Friday, August 6, 2021 22:43 >>> *To:* Rados?aw Smogura ; Paul Sandoz >>> ; Vladimir Ivanov >>> >>> *Cc:* panama-dev at openjdk.java.net >>> *Subject:* Re: Issues with loop unrolling: better pinned node >>> Hi all, >>> >>> Now when I checked it again. it works as expected, and it's the same >>> code. >>> >>> In draft code I check if the buffer is direct by using type checking >>> to unswitch loop, as unswitching over ByteBuffer.hb did not work >>> (the graph was quite similar). However, I thought that this unswitch >>> actually helped to build correct loops, and any kind of improvement >>> around it would be rather for the purpose of better-looking code. >>> >>> But it looks like that sometimes (but only sometimes) loop still can >>> not be correctly built, or maybe the full optimization kicks in >>> very, very late. >>> >>> Kind regards, >>> Rado >>> ------------------------------------------------------------------------ >>> >>> *From:* panama-dev on behalf of >>> Rados?aw Smogura >>> *Sent:* Friday, August 6, 2021 20:22 >>> *To:* Paul Sandoz >>> *Cc:* panama-dev at openjdk.java.net >>> *Subject:* Re: Issues with loop unrolling: better pinned node >>> Yes, >>> >>> The normal case looks, good. It's all about polluted cases [1] >>> >>> BR, >>> Rado >>> >>> [1] https://github.com/openjdk/panama-vector/pull/109 >>> >>> [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109]>> > >>> >>> (Draft) Perofrmance improvements for polluted cases by rsmogura ? >>> Pull Request #109 ? >>> openjdk/panama-vector >>> >>> >>> Hi all, I would like to submit this piece of work, for byte buffers >>> and polluted cases. It resolves some performance issues related to >>> mem barriers when in scope are both on- and off-heap buffer. T... >>> github.com >>> >>> [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector]>> > >>> >>> Comparing openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases >>> ? >>> openjdk/panama-vector >>> >>> >>> Panama vector. Contribute to openjdk/panama-vector development by >>> creating an account on GitHub. >>> github.com >>> >>> ________________________________ >>> From: Paul Sandoz >>> Sent: Friday, August 6, 2021 20:04 >>> To: Rados?aw Smogura >>> Cc: panama-dev at openjdk.java.net >>> Subject: Re: Issues with loop unrolling: better pinned node >>> >>> I am confused as to the case under test. In your initial email of >>> this thread were you also referring implicitly to polluted cases? >>> >>> Paul. >>> >>>> On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura wrote: >>>> >>>> Hi Paul, >>>> >>>> There's a performance improvement, but. I still can't unroll >>>> polluted cases (I cherry-picked loop unrolling). The graph still >>>> has few nodes taking buffer limit from phi, and on IR I don't see >>>> vectors nodes cascading. >>>> >>>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 >>>> -prof perfasm >>>> -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" >>>> JOBS=12 >>>> Benchmark???????????????????????????????????? (size)? Mode Cnt?? >>>> Score?? Error? Units >>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt 30? >>>> 40.472 ? 1.055? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 avgt????????? >>>> NaN??????????? --- >>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt 30? >>>> 79.251 ? 0.786? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 avgt????????? >>>> NaN??????????? --- >>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt 30? >>>> 83.627 ? 2.140? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 avgt????????? >>>> NaN??????????? --- >>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt 30? >>>> 85.561 ? 1.156? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 avgt????????? NaN >>>> >>>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f 1 >>>> -prof perfasm" >>>> Benchmark???????????????????????????????????? (size)? Mode Cnt??? >>>> Score?? Error? Units >>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt 10?? >>>> 49.326 ? 0.843? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 avgt?????????? >>>> NaN??????????? --- >>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt 10? >>>> 100.291 ? 1.271? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 avgt?????????? >>>> NaN??????????? --- >>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt 10? >>>> 101.494 ? 1.027? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 avgt?????????? >>>> NaN??????????? --- >>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt 10?? >>>> 94.606 ? 1.522? ns/op >>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 avgt?????????? >>>> NaN >>>> >>>> >>>> BR, >>>> Rado >>>> From: Paul Sandoz >>>> Sent: Friday, August 6, 2021 18:04 >>>> To: Rados?aw Smogura >>>> Cc: panama-dev at openjdk.java.net >>>> Subject: Re: Issues with loop unrolling: better pinned node >>>> >>>> Hi Rado, >>>> >>>> It?s good you are looking at the IR >>>> >>>> Out of curiosity, what happens if you turn off bounds checking [*]? >>>> >>>> Paul. >>>> >>>> [*] >>>> -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 >>>> >>>> > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura >>>> wrote: >>>> > >>>> > Hi all, >>>> > >>>> > I've found that even if we get rid of barriers, the loop can't >>>> get unrolled, and not needed code is inside it. >>>> > >>>> > I've found this graph, I wonder if it's most optimal, in a >>>> partiucalry Load of ByteBuffer index / hb is from phi, could it be >>>> attached to initial memory? >>>> > >>>> > Here's a picture >>>> https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing >>> >>> >>> >>> >>>> > >>>> [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p]>> >>> >>> > >>> >>>> > >>>> bb_issues.png>> >>> >>> > >>> >>>> > drive.google.com >>>> > >>>> > >>>> > And sample code >>>> > >>>> > protected void copyMemory(ByteBuffer in, ByteBuffer out) { >>>> >? var limit = SPECIES.loopBound(in.limit()); >>>> >? for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { >>>> >??? final var v = ByteVector.fromByteBuffer(SPECIES, in, i, >>>> ByteOrder.nativeOrder()); >>>> >??? v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); >>>> >? } >>>> > } >>>> > >>>> > Kind regards, >>>> > Rado >>> From jbhateja at openjdk.java.net Thu Aug 19 20:03:21 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 20:03:21 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v8] In-Reply-To: References: Message-ID: > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits: - 8270349: Jcheck error resolution (extra white space) - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 - 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. - 8270349: Minor fix missed in last checkin. - 8270349: Review comments resolution. - 8270349: Review comments resolution. - 8270349: Review comments resolution. - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. - 8270349: Fix for 32-bit build failure. - ... and 1 more: https://git.openjdk.java.net/panama-vector/compare/c1950c63...b001f939 ------------- Changes: https://git.openjdk.java.net/panama-vector/pull/99/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=07 Stats: 3405 lines in 18 files changed: 3232 ins; 70 del; 103 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 19 20:03:29 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 20:03:29 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v7] In-Reply-To: References: <9OaAom0D-PkIGmM3Q55Lg4PckTMNnEnxaqWjhg-__wk=.ec15d2d6-f490-4208-9416-febae906929b@github.com> Message-ID: On Mon, 16 Aug 2021 18:41:25 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. > > src/hotspot/cpu/x86/x86.ad line 1962: > >> 1960: assert(bt != T_INT || VM_Version::supports_avx512bw(), ""); >> 1961: assert(bt != T_LONG || VM_Version::supports_avx512bw(), ""); >> 1962: if (bt == T_BYTE && VM_Version::supports_avx512dq()) { > > Should this be > if (bt == T_BYTE && !VM_Version::supports_avx512dq()) DONE > src/hotspot/cpu/x86/x86.ad line 3798: > >> 3796: BasicType elem_bt = vector_element_basic_type(this); >> 3797: assert(!is_subword_type(elem_bt), "sanity"); // T_INT, T_LONG, T_FLOAT, T_DOUBLE >> 3798: __ kmovwl($ktmp$$KRegister, $mask$$KRegister); > > Why do we need kmovwl here? Gather/Scatter instruction partially updates predicate register, hence moving mask to temporary. > src/hotspot/cpu/x86/x86.ad line 3838: > >> 3836: assert(vector_length_in_bytes(this, $src) >= 16, "sanity"); >> 3837: assert(!is_subword_type(elem_bt), "sanity"); // T_INT, T_LONG, T_FLOAT, T_DOUBLE >> 3838: __ kmovwl($ktmp$$KRegister, $mask$$KRegister); > > Why do we need kmovwl here? Gather/Scatter instruction partially updates predicate register, hence moving mask to temporary. > src/hotspot/cpu/x86/x86.ad line 9061: > >> 9059: __ movslq($tmp$$Register, $src$$Register); >> 9060: __ kmovql($dst$$KRegister, $tmp$$Register); >> 9061: __ kshiftrql($dst$$KRegister, $dst$$KRegister, 64 - vec_len); > > Could we not do kmovdl followed by kshiftrdl here? Thereby removing the need for movslq. maskAll accept a boolean argument (false (0) , true(-1)). value operand has a rRegI register class which represent 32 bit register. This value need to be sign extended to 64 bit value before computing the final mask value using shift right operation. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Thu Aug 19 20:08:03 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 19 Aug 2021 20:08:03 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v8] In-Reply-To: References: Message-ID: On Thu, 19 Aug 2021 20:03:21 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits: > > - 8270349: Jcheck error resolution (extra white space) > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. > - 8270349: Minor fix missed in last checkin. > - 8270349: Review comments resolution. > - 8270349: Review comments resolution. > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - ... and 1 more: https://git.openjdk.java.net/panama-vector/compare/c1950c63...b001f939 Hi @sviswa7 , your comments have been addressed Along with the latest merge, backend support for masked memory operations over byteArray and byteBuffers has also been added. New patterns for VectorReinterpret operation for mask types and minor IR change related to it. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From mail at smogura.eu Thu Aug 19 20:26:21 2021 From: mail at smogura.eu (Rado Smogura) Date: Thu, 19 Aug 2021 22:26:21 +0200 Subject: [External] : Re: Issues with loop unrolling: better pinned node In-Reply-To: <14e30959-d990-2180-f23d-a05c88ec7899@smogura.eu> References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> <14e30959-d990-2180-f23d-a05c88ec7899@smogura.eu> Message-ID: I think I answered this question quite simply... it will not work. On 19.08.2021 18:39, Rado Smogura wrote: > Hi all, > > > I hope you have a good day. > > > As still optimizing loops would be good approach, I thought about > optimizing a mixed access with this approach: > > > 1. When mixed access is detected set flag "raw / byte array" mixed > access. > > 2. Bail out and restart compilation (will happen during first phases, > and only for few methods). > > 3. Pass a flag to compiler. > > 4. Modify find_alias_type / flatten_alias_type, so that if byte array > will be queried for alias, raw ptr and raw alias will be used. > > > Kind regards, > > Rado > > On 18.08.2021 09:17, Rado Smogura wrote: >> Hi Vladimir, >> >> >> Thank you for answer. >> >> >> In fact, it is was an attempt to confirm that memory flow can be a >> cause why loop opts do not work. That's very fair point. I'll think >> about it and maybe I'll be able to come out idea how this can be >> generalized. >> >> >> Kind regards, >> >> Rado >> >> On 16.08.2021 15:41, Vladimir Ivanov wrote: >>>> I wonder what do you think about something like this [1] - it's >>>> virtually small single class change >>> >>> Very interesting experiment, Rado! It's encouraging to hear that >>> loop opts immediately benefit from it. >>> >>> From a architectural perspective, a separate pass to optimize memory >>> graph brings excessive complexity: >>> >>> ? (1) yet another pass over the graph and susceptible to pass >>> ordering issues; >>> >>> ? (2) separate from GVN: you either have to duplicate GVN-based >>> memory optimizations or run new pass with IGVN in a loop until it >>> stabilizes. >>> >>> IMO the problem you noticed illustrates a general weakness in GVN >>> implementation and that's the place where it should be fixed (ideally). >>> >>> Best regards, >>> Vladimir Ivanov >>> >>>> >>>> This change tries to find unique memory for load node. I >>>> implemented it as separate phase, as optimization may not run in >>>> Ideal method. I think it's ligher than phi split out. >>>> >>>> Loops has been transformed. RCE started. >>>> >>>> Kind regards, >>>> Rado >>>> >>>> [1] - >>>> https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 >>>> >>>> >>>> [2] - >>>> https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation >>>> >>>> (full test case) >>>> >>>> ------------------------------------------------------------------------ >>>> >>>> *From:* Rados?aw Smogura on behalf of Rados?aw Smogura >>>> >>>> *Sent:* Friday, August 6, 2021 22:43 >>>> *To:* Rados?aw Smogura ; Paul Sandoz >>>> ; Vladimir Ivanov >>>> >>>> *Cc:* panama-dev at openjdk.java.net >>>> *Subject:* Re: Issues with loop unrolling: better pinned node >>>> Hi all, >>>> >>>> Now when I checked it again. it works as expected, and it's the >>>> same code. >>>> >>>> In draft code I check if the buffer is direct by using type >>>> checking to unswitch loop, as unswitching over ByteBuffer.hb did >>>> not work (the graph was quite similar). However, I thought that >>>> this unswitch actually helped to build correct loops, and any kind >>>> of improvement around it would be rather for the purpose of >>>> better-looking code. >>>> >>>> But it looks like that sometimes (but only sometimes) loop still >>>> can not be correctly built, or maybe the full optimization kicks in >>>> very, very late. >>>> >>>> Kind regards, >>>> Rado >>>> ------------------------------------------------------------------------ >>>> >>>> *From:* panama-dev on behalf of >>>> Rados?aw Smogura >>>> *Sent:* Friday, August 6, 2021 20:22 >>>> *To:* Paul Sandoz >>>> *Cc:* panama-dev at openjdk.java.net >>>> *Subject:* Re: Issues with loop unrolling: better pinned node >>>> Yes, >>>> >>>> The normal case looks, good. It's all about polluted cases [1] >>>> >>>> BR, >>>> Rado >>>> >>>> [1] https://github.com/openjdk/panama-vector/pull/109 >>>> >>>> [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109]>>> > >>>> >>>> (Draft) Perofrmance improvements for polluted cases by rsmogura ? >>>> Pull Request #109 ? >>>> openjdk/panama-vector >>>> >>>> >>>> Hi all, I would like to submit this piece of work, for byte buffers >>>> and polluted cases. It resolves some performance issues related to >>>> mem barriers when in scope are both on- and off-heap buffer. T... >>>> github.com >>>> >>>> [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector]>>> > >>>> >>>> Comparing >>>> openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? >>>> openjdk/panama-vector >>>> >>>> >>>> Panama vector. Contribute to openjdk/panama-vector development by >>>> creating an account on GitHub. >>>> github.com >>>> >>>> ________________________________ >>>> From: Paul Sandoz >>>> Sent: Friday, August 6, 2021 20:04 >>>> To: Rados?aw Smogura >>>> Cc: panama-dev at openjdk.java.net >>>> Subject: Re: Issues with loop unrolling: better pinned node >>>> >>>> I am confused as to the case under test. In your initial email of >>>> this thread were you also referring implicitly to polluted cases? >>>> >>>> Paul. >>>> >>>>> On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura >>>>> wrote: >>>>> >>>>> Hi Paul, >>>>> >>>>> There's a performance improvement, but. I still can't unroll >>>>> polluted cases (I cherry-picked loop unrolling). The graph still >>>>> has few nodes taking buffer limit from phi, and on IR I don't see >>>>> vectors nodes cascading. >>>>> >>>>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f >>>>> 1 -prof perfasm >>>>> -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" >>>>> JOBS=12 >>>>> Benchmark???????????????????????????????????? (size)? Mode Cnt?? >>>>> Score?? Error? Units >>>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt 30? >>>>> 40.472 ? 1.055? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 avgt????????? >>>>> NaN??????????? --- >>>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt 30? >>>>> 79.251 ? 0.786? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 avgt????????? >>>>> NaN??????????? --- >>>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt 30? >>>>> 83.627 ? 2.140? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 avgt????????? >>>>> NaN??????????? --- >>>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt 30? >>>>> 85.561 ? 1.156? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 avgt????????? >>>>> NaN >>>>> >>>>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f >>>>> 1 -prof perfasm" >>>>> Benchmark???????????????????????????????????? (size)? Mode Cnt??? >>>>> Score?? Error? Units >>>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024? avgt 10?? >>>>> 49.326 ? 0.843? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 >>>>> avgt?????????? NaN??????????? --- >>>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024? avgt 10? >>>>> 100.291 ? 1.271? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 >>>>> avgt?????????? NaN??????????? --- >>>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024? avgt 10? >>>>> 101.494 ? 1.027? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 >>>>> avgt?????????? NaN??????????? --- >>>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024? avgt 10?? >>>>> 94.606 ? 1.522? ns/op >>>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 >>>>> avgt?????????? NaN >>>>> >>>>> >>>>> BR, >>>>> Rado >>>>> From: Paul Sandoz >>>>> Sent: Friday, August 6, 2021 18:04 >>>>> To: Rados?aw Smogura >>>>> Cc: panama-dev at openjdk.java.net >>>>> Subject: Re: Issues with loop unrolling: better pinned node >>>>> >>>>> Hi Rado, >>>>> >>>>> It?s good you are looking at the IR >>>>> >>>>> Out of curiosity, what happens if you turn off bounds checking [*]? >>>>> >>>>> Paul. >>>>> >>>>> [*] >>>>> -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 >>>>> >>>>> > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura >>>>> wrote: >>>>> > >>>>> > Hi all, >>>>> > >>>>> > I've found that even if we get rid of barriers, the loop can't >>>>> get unrolled, and not needed code is inside it. >>>>> > >>>>> > I've found this graph, I wonder if it's most optimal, in a >>>>> partiucalry Load of ByteBuffer index / hb is from phi, could it be >>>>> attached to initial memory? >>>>> > >>>>> > Here's a picture >>>>> https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing >>>> >>>> >>>> >>>> >>>> >>>>> > >>>>> [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p]>>> >>>> >>>> >>>> > >>>> >>>>> > >>>>> bb_issues.png>>> >>>> >>>> >>>> > >>>> >>>>> > drive.google.com >>>>> > >>>>> > >>>>> > And sample code >>>>> > >>>>> > protected void copyMemory(ByteBuffer in, ByteBuffer out) { >>>>> >? var limit = SPECIES.loopBound(in.limit()); >>>>> >? for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { >>>>> >??? final var v = ByteVector.fromByteBuffer(SPECIES, in, i, >>>>> ByteOrder.nativeOrder()); >>>>> >??? v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); >>>>> >? } >>>>> > } >>>>> > >>>>> > Kind regards, >>>>> > Rado >>>> From sviswanathan at openjdk.java.net Thu Aug 19 21:52:01 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Thu, 19 Aug 2021 21:52:01 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v8] In-Reply-To: References: Message-ID: On Thu, 19 Aug 2021 20:03:21 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits: > > - 8270349: Jcheck error resolution (extra white space) > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. > - 8270349: Minor fix missed in last checkin. > - 8270349: Review comments resolution. > - 8270349: Review comments resolution. > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - ... and 1 more: https://git.openjdk.java.net/panama-vector/compare/c1950c63...b001f939 src/hotspot/cpu/x86/x86.ad line 7256: > 7254: predicate(UseAVX > 2 && > 7255: (VM_Version::supports_avx512vl() || > 7256: Matcher::vector_length_in_bytes(n->in(1)->in(1)) == 64) && // src1 This doesn't look correct. This instruct sets vec dst, whereas with avx512vl kReg dst is expected. Should have been: !VM_Version::supports_avx512vl() && vector_length_in_bytes(n->in(1)->in(1)) == 64 && ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From sviswanathan at openjdk.java.net Thu Aug 19 21:56:51 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Thu, 19 Aug 2021 21:56:51 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v8] In-Reply-To: References: Message-ID: On Thu, 19 Aug 2021 20:03:21 GMT, Jatin Bhateja wrote: >> Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. >> >> This patch adds initial X86 backed support for predicated vector operations. >> >> Following is performance data for existing VectorAPI JMH benchmarks with the patch: >> Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) >> >> Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain >> -- | -- | -- | -- | -- >> Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 >> Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 >> Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 >> Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 >> Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 >> Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 >> Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 >> Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 >> Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 >> Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 >> Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 >> Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 >> Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 >> Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 >> Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 >> Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 >> Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 >> Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 >> Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 >> Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 >> Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 >> Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 >> Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 >> Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 >> Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 >> Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 >> Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 >> Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 >> Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 >> Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 >> Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 >> Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 >> Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 >> Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 >> Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 >> Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 >> Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 >> Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 >> Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 >> Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 >> Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 >> Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 >> Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 >> Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 >> Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 >> Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 >> Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 >> >> >> >> PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. >> New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. > > Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits: > > - 8270349: Jcheck error resolution (extra white space) > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. > - 8270349: Minor fix missed in last checkin. > - 8270349: Review comments resolution. > - 8270349: Review comments resolution. > - 8270349: Review comments resolution. > - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 > - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. > - 8270349: Fix for 32-bit build failure. > - ... and 1 more: https://git.openjdk.java.net/panama-vector/compare/c1950c63...b001f939 Marked as reviewed by sviswanathan (Committer). Other than the predicate above for vcmpu64, rest of the patch looks good to me. Please fix the predicate. No need for re-review. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From duke at openjdk.java.net Fri Aug 20 11:04:41 2021 From: duke at openjdk.java.net (duke) Date: Fri, 20 Aug 2021 11:04:41 GMT Subject: git: openjdk/panama-foreign: master: 62 new changesets Message-ID: Changeset: 717792c3 Author: Lance Andersen Date: 2021-08-13 16:11:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/717792c3b728584413572e7aede83290779be2a2 8263940: NPE when creating default file system when default file system provider is packaged as JAR file on class path Reviewed-by: naoto, bpb, iris, joehw ! src/java.base/share/classes/java/util/zip/ZipFile.java ! test/jdk/java/nio/file/spi/SetDefaultProvider.java Changeset: bd7f9b4f Author: Daniel D. Daugherty Date: 2021-08-13 16:57:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bd7f9b4fb9a037b8efd9d552149efd41ce7f7155 8272459: ProblemList compiler/codecache/TestStressCodeBuffers.java on aarch64 Reviewed-by: iignatyev ! test/hotspot/jtreg/ProblemList.txt Changeset: 0af645aa Author: Phil Race Date: 2021-08-13 19:30:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0af645aa4fd138861a51b58dec4182679640776a 8205138: Remove Applet references from Font2DTest Reviewed-by: serb, psadhukhan - src/demo/share/jfc/Font2DTest/Font2DTest.html ! src/demo/share/jfc/Font2DTest/Font2DTest.java ! src/demo/share/jfc/Font2DTest/README.txt Changeset: 6b8b160e Author: Xue-Lei Andrew Fan Date: 2021-08-13 21:33:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6b8b160e374a4a566d193a594d9a228646e8e067 8272396: mismatching debug output streams Reviewed-by: mullan ! src/java.base/share/classes/sun/security/ssl/RSAKeyExchange.java Changeset: 87d2761f Author: Marcus G K Williams Committer: Sandhya Viswanathan Date: 2021-08-14 00:34:51 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/87d2761f1b4572633de020b2d4681918c6f10f06 8271883: Math CopySign optimization for x86 Reviewed-by: jbhateja, sviswanathan, kvn ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/x86.ad ! test/micro/org/openjdk/bench/vm/compiler/Signum.java Changeset: 17b93500 Author: Alexey Ushakov Date: 2021-08-14 10:40:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/17b93500237e74dca964e1805e65c857e7980bbe 8266079: Lanai: AlphaComposite shows differences on Metal compared to OpenGL Reviewed-by: serb ! src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java ! src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m + test/jdk/java/awt/AlphaComposite/WindowAlphaCompositeTest.java Changeset: 6a5241c3 Author: Phil Race Date: 2021-08-15 16:50:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6a5241c3adfd3ba886e469156dea56ed5b9673ff 8272491: Problem list javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java on macos Reviewed-by: pbansal ! test/jdk/ProblemList.txt Changeset: 3f38a50c Author: Yi Yang Date: 2021-08-16 02:30:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3f38a50c528cccc30ca9e513b15ce9866d92aa82 8271203: C2: assert(iff->Opcode() == Op_If || iff->Opcode() == Op_CountedLoopEnd || iff->Opcode() == Op_RangeCheck) failed: Check this code when new subtype is added Reviewed-by: chagedorn, roland, thartmann ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/c2/LongCountedLoopAsUnswitchIff.java Changeset: 36e2ddad Author: Ioi Lam Date: 2021-08-16 03:22:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/36e2ddad4d2ef3ce27475af6244d0246a8315c0c 8272348: Update CDS tests in anticipation of JDK-8270489 Reviewed-by: ccheung, minqi ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/runtime/cds/ServiceLoaderTest.java ! test/hotspot/jtreg/runtime/cds/SharedStringsWb.java ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressApp.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassApp.java ! test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDumpWb.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExerciseGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/FlagCombo.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternSharedString.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternStringTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LargePages.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockSharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringValueTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasicPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWb.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWbTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SysDictCrash.java ! test/lib/jdk/test/whitebox/WhiteBox.java ! test/lib/sun/hotspot/WhiteBox.java Changeset: 0209d9f3 Author: Albert Mingkun Yang Date: 2021-08-16 07:34:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0209d9f382f09840c29ac34b27dd41d2c8676913 8272461: G1: remove empty declaration of cleanup_after_scan_heap_roots Reviewed-by: kbarrett ! src/hotspot/share/gc/g1/g1RemSet.hpp Changeset: 7a5b37b8 Author: Albert Mingkun Yang Date: 2021-08-16 07:35:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7a5b37b8ca64650a8d23d64013bf49c9f3a60e2c 8272439: G1: add documentation to G1CardSetInlinePtr Co-authored-by: Thomas Schatzl Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp Changeset: 5db36ced Author: Hannes Walln?fer Date: 2021-08-16 07:46:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5db36cedc91d0954ececd309a5f8f59ea828f6c1 8272158: SoftReference related bugs under memory pressure Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java Changeset: 69cc588f Author: Albert Mingkun Yang Date: 2021-08-16 09:40:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/69cc588fce0aef3f6066f2ff313d5319b528d684 8272235: G1: update outdated code root fixup Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp ! test/hotspot/jtreg/gc/g1/TestGCLogMessages.java Changeset: 83d0e128 Author: Ivan Walulya Date: 2021-08-16 13:08:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/83d0e128e362822584bb51b00576cb754f44e58b 8267833: Improve G1CardSetInlinePtr::add() Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.inline.hpp Changeset: 0a03481a Author: Ivan Walulya Date: 2021-08-16 13:09:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a03481a6566d59b21ea5f802cb1f0028531c9d8 8272231: G1: Refactor G1CardSet::get_card_set to return G1CardSetHashTableValue* Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp Changeset: 36777345 Author: Christian Hagedorn Date: 2021-08-16 14:51:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3677734584859e1b4bea65f6719e839f949c9236 8271471: [IR Framework] Rare occurrence of "" in PrintIdeal/PrintOptoAssembly can let tests fail Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/IRMatcher.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestRunTests.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestScenarios.java + test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/Utils.java Changeset: 82688258 Author: Brian Burkhalter Date: 2021-08-16 15:53:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/82688258f676e6be8a603f6ab744d52728e3478b 8272297: FileInputStream should override transferTo() for better performance Reviewed-by: alanb ! src/java.base/share/classes/java/io/FileInputStream.java + test/jdk/java/io/FileInputStream/TransferTo.java Changeset: b2c272d4 Author: Igor Ignatyev Date: 2021-08-16 16:56:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b2c272d4e21eb4aeb6c8e1c0be0d08943dc36db8 8272305: several hotspot runtime/modules don't check exit codes Reviewed-by: dholmes, mseledtsov ! test/hotspot/jtreg/runtime/modules/ClassLoaderNoUnnamedModuleTest.java ! test/hotspot/jtreg/runtime/modules/IgnoreModulePropertiesTest.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleCDS.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTraceCL.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpNoVisibility.java Changeset: ae45592d Author: Jonathan Gibbons Date: 2021-08-16 20:48:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ae45592d3304f50aa9e8e114416a41e7899fe37b 8272374: doclint should report missing "body" comments Reviewed-by: kcr, hannesw ! make/modules/java.desktop/Java.gmk ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties ! test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java ! test/langtools/tools/doclint/AccessTest.java ! test/langtools/tools/doclint/CustomTagTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.out + test/langtools/tools/doclint/EmptyDescriptionTest.java + test/langtools/tools/doclint/EmptyDescriptionTest.out ! test/langtools/tools/doclint/EmptyExceptionTest.java ! test/langtools/tools/doclint/EmptyExceptionTest.out ! test/langtools/tools/doclint/EmptyParamTest.java ! test/langtools/tools/doclint/EmptyParamTest.out ! test/langtools/tools/doclint/EmptyReturnTest.java ! test/langtools/tools/doclint/EmptyReturnTest.out ! test/langtools/tools/doclint/EmptySerialFieldTest.java ! test/langtools/tools/doclint/EmptySerialFieldTest.out ! test/langtools/tools/doclint/EmptySinceTest.java ! test/langtools/tools/doclint/EmptySinceTest.out ! test/langtools/tools/doclint/EmptyVersionTest.java ! test/langtools/tools/doclint/EmptyVersionTest.out ! test/langtools/tools/doclint/EndWithIdentifierTest.java ! test/langtools/tools/doclint/EndWithIdentifierTest.out ! test/langtools/tools/doclint/LambdaTest.java ! test/langtools/tools/doclint/LiteralTest.java ! test/langtools/tools/doclint/MissingParamsTest.java ! test/langtools/tools/doclint/MissingReturnTest.java ! test/langtools/tools/doclint/MissingThrowsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.out ! test/langtools/tools/doclint/ReferenceTest.java ! test/langtools/tools/doclint/ReferenceTest.out ! test/langtools/tools/doclint/SyntaxTest.java ! test/langtools/tools/doclint/packageTests/bad/Test.java ! test/langtools/tools/doclint/tool/StatsTest.java ! test/langtools/tools/javac/doclint/DocLintTest.java Changeset: a5ad7720 Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2021-08-16 22:24:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a5ad7720d235610ad45fc341c61f164805f82a54 8272342: [TEST_BUG] java/awt/print/PrinterJob/PageDialogMarginTest.java catches all exceptions Reviewed-by: aivanov, pbansal ! test/jdk/java/awt/print/PrinterJob/PageDialogMarginTest.java Changeset: 3fb19279 Author: Jonathan Gibbons Date: 2021-08-16 22:54:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3fb19279da240ecabee04148ba8907f036450575 8271227: Missing `{@code }` in com.sun.source.* Reviewed-by: iris ! src/jdk.compiler/share/classes/com/sun/source/doctree/DocTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/Trees.java Changeset: ee8bf10d Author: Zhengyu Gu Date: 2021-08-17 00:35:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ee8bf10d321da8a261ff4eda705cef753b4a7014 8272327: Shenandoah: Avoid enqueuing duplicate string candidates Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.inline.hpp Changeset: 989f39f8 Author: Igor Ignatyev Date: 2021-08-17 03:45:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/989f39f8106a22498053a4ca5f2becf8df5f2420 8272552: mark hotspot runtime/cds tests which ignore external VM flags Reviewed-by: mseledtsov, jiefu, dholmes, iklam ! test/hotspot/jtreg/runtime/cds/MaxMetaspaceSize.java ! test/hotspot/jtreg/runtime/cds/SharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifyWithDefaultArchive.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java ! test/hotspot/jtreg/runtime/cds/appcds/jcmd/JCmdTestDynamicDump.java Changeset: df1427b7 Author: Stefan Karlsson Date: 2021-08-17 06:36:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/df1427b72ba1d02d440018a4f6f8a287fecad460 8272446: C1: Raw version of UnsafeGet generates load barriers Reviewed-by: eosterlund, iveresov ! src/hotspot/share/c1/c1_LIRGenerator.cpp Changeset: c5c84b8f Author: lawrence.andrews Committer: Prasanta Sadhukhan Date: 2021-08-17 07:44:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c5c84b8fdc0d52bc45ed7290011b39337f3bbe35 8270312: Error: Not a test or directory containing tests: java/awt/print/PrinterJob/XparColor.java Reviewed-by: psadhukhan, jdv ! test/jdk/java/awt/print/PrinterJob/XparColor.java Changeset: 0e3fde6c Author: Hannes Walln?fer Date: 2021-08-17 08:29:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0e3fde6c3c2f5c05777b79ff5eb1188014269b0f 8264274: Block tags in overview.html are ignored Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java ! test/langtools/jdk/javadoc/doclet/testOverview/TestOverview.java ! test/langtools/jdk/javadoc/doclet/testOverview/overview.html Changeset: ed57cf1c Author: Abdul Kolarkunnu Date: 2021-08-17 12:12:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ed57cf1cf3f2d107e085ecdae38a63e66ab2fa30 8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java Reviewed-by: hchao, ssahoo, xuelei, weijun + test/jdk/sun/security/pkcs12/KeytoolOpensslInteropTest.java - test/jdk/sun/security/pkcs12/ParamsTest.java + test/lib/jdk/test/lib/artifacts/OpensslArtifactFetcher.java Changeset: 2aaf7952 Author: Albert Mingkun Yang Date: 2021-08-17 12:42:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2aaf795270eb07eb155df9a7f5e1d6901f09d8f0 8272520: Inline GenericTaskQueue::initialize() to the constructor Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1FullGCMarker.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/gc/shared/taskqueue.hpp ! src/hotspot/share/gc/shared/taskqueue.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.cpp ! src/hotspot/share/gc/z/zHeapIterator.cpp Changeset: 2ed7b709 Author: Albert Mingkun Yang Date: 2021-08-17 12:42:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ed7b709a197f009632580b17e3b1df34c1ffeb7 8272521: Remove unused PSPromotionManager::_claimed_stack_breadth Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/parallel/psPromotionManager.hpp Changeset: cf64c3e7 Author: Jim Laskey Date: 2021-08-17 15:53:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cf64c3e7e226eacf675d984db52872b0a8343a46 8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails Reviewed-by: rriggs, bpb ! test/jdk/java/util/Random/RandomTestChiSquared.java ! test/jdk/java/util/Random/RandomTestMoments.java Changeset: 1cbf41a8 Author: Rajan Halade Date: 2021-08-17 16:01:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1cbf41a87b153c010c51fdbae832e00314422193 8225083: Remove Google certificate that is expiring in December 2021 Reviewed-by: xuelei, mullan - make/data/cacerts/globalsignr2ca ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: a199ebc0 Author: Abdul Kolarkunnu Date: 2021-08-17 16:54:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a199ebc0175f9882f051551cff9ce08016f204a4 8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182 Reviewed-by: weijun ! test/jdk/sun/security/pkcs12/KeytoolOpensslInteropTest.java = test/lib/jdk/test/lib/security/OpensslArtifactFetcher.java Changeset: a68b5b9c Author: Brian Burkhalter Date: 2021-08-17 17:07:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a68b5b9c1dd9dd69fa3ef29d8f1186707ec09311 8272369: java/io/File/GetXSpace.java failed with "RuntimeException: java.nio.file.NoSuchFileException: /run/user/0" Reviewed-by: alanb ! test/jdk/java/io/File/GetXSpace.java Changeset: 05d64da7 Author: Igor Ignatyev Date: 2021-08-17 19:36:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/05d64da7f32e5960550d5ec76fa2fba5c972d9b3 8272291: mark hotspot runtime/logging tests which ignore external VM flags Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/runtime/logging/ClassInitializationTest.java ! test/hotspot/jtreg/runtime/logging/ClassLoadUnloadTest.java ! test/hotspot/jtreg/runtime/logging/ClassResolutionTest.java ! test/hotspot/jtreg/runtime/logging/CompressedOopsTest.java ! test/hotspot/jtreg/runtime/logging/CondyIndyTest.java ! test/hotspot/jtreg/runtime/logging/DefaultMethodsTest.java ! test/hotspot/jtreg/runtime/logging/ExceptionsTest.java ! test/hotspot/jtreg/runtime/logging/ItablesTest.java ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java ! test/hotspot/jtreg/runtime/logging/ModulesTest.java ! test/hotspot/jtreg/runtime/logging/MonitorInflationTest.java ! test/hotspot/jtreg/runtime/logging/MonitorMismatchTest.java ! test/hotspot/jtreg/runtime/logging/OsCpuLoggingTest.java ! test/hotspot/jtreg/runtime/logging/ProtectionDomainVerificationTest.java ! test/hotspot/jtreg/runtime/logging/SafepointCleanupTest.java ! test/hotspot/jtreg/runtime/logging/SafepointTest.java ! test/hotspot/jtreg/runtime/logging/StackWalkTest.java ! test/hotspot/jtreg/runtime/logging/StartupTimeTest.java ! test/hotspot/jtreg/runtime/logging/ThreadLoggingTest.java ! test/hotspot/jtreg/runtime/logging/VMOperationTest.java ! test/hotspot/jtreg/runtime/logging/VerificationTest.java ! test/hotspot/jtreg/runtime/logging/VtablesTest.java ! test/hotspot/jtreg/runtime/logging/loadLibraryTest/LoadLibraryTest.java Changeset: fe721971 Author: Igor Ignatyev Date: 2021-08-17 19:37:45 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fe7219710243dbb3b5bc4ad6ef3e93d0d203d4f7 8272551: mark hotspot runtime/modules tests which ignore external VM flags Reviewed-by: mseledtsov, jiefu ! test/hotspot/jtreg/runtime/modules/ClassLoaderNoUnnamedModuleTest.java ! test/hotspot/jtreg/runtime/modules/IgnoreModulePropertiesTest.java ! test/hotspot/jtreg/runtime/modules/ModuleOptionsTest.java ! test/hotspot/jtreg/runtime/modules/ModuleOptionsWarn.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ExportModuleStressTest.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStress.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStressGC.java ! test/hotspot/jtreg/runtime/modules/ModulesSymLink.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModule2Dirs.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleCDS.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleDupJavaBase.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleDupModule.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleJavaBase.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTest.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTestJar.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTestJarDir.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTraceCL.java ! test/hotspot/jtreg/runtime/modules/Visibility/PatchModuleVisibility.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpNoVisibility.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpVisibility.java Changeset: 14623cde Author: Vicente Romero Date: 2021-08-17 20:47:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/14623cde3a20962e902043b556c5058ac208711f 8270835: regression after JDK-8261006 Reviewed-by: jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/AttrContext.java + test/langtools/tools/javac/cantReferenceBeforeCtor/CantReferenceBeforeConstructorTest.java + test/langtools/tools/javac/cantReferenceBeforeCtor/CantReferenceBeforeConstructorTest.out Changeset: ec63957f Author: Mikhailo Seledtsov Date: 2021-08-17 23:22:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec63957f9d103e86d3b8e235e79cabb8992cb3ca 8272398: Update DockerTestUtils.buildJdkDockerImage() Reviewed-by: iignatyev, hseigel ! test/hotspot/jtreg/containers/docker/DockerBasicTest.java ! test/hotspot/jtreg/containers/docker/TestCPUAwareness.java ! test/hotspot/jtreg/containers/docker/TestCPUSets.java ! test/hotspot/jtreg/containers/docker/TestJFREvents.java ! test/hotspot/jtreg/containers/docker/TestJFRNetworkEvents.java ! test/hotspot/jtreg/containers/docker/TestJFRWithJMX.java ! test/hotspot/jtreg/containers/docker/TestJcmdWithSideCar.java ! test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java ! test/hotspot/jtreg/containers/docker/TestMisc.java ! test/hotspot/jtreg/containers/docker/TestPids.java ! test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java ! test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java ! test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java ! test/jdk/jdk/internal/platform/docker/TestPidsLimit.java ! test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java ! test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java ! test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java Changeset: 5189047d Author: Tobias Hartmann Date: 2021-08-18 04:47:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5189047d09e976cfd17d4ab5ec12097c242f3435 8272558: IR Test Framework README misses some flags Reviewed-by: chagedorn ! test/hotspot/jtreg/compiler/lib/ir_framework/README.md Changeset: 481c1f05 Author: Alexander Zuev Date: 2021-08-18 05:48:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/481c1f0549e361e8e83fcf0530acc4ebdb60104b 8269951: [macos] Focus not painted in JButton when setBorderPainted(false) is invoked Reviewed-by: serb, psadhukhan ! src/java.desktop/macosx/classes/com/apple/laf/AquaButtonUI.java + test/jdk/javax/swing/plaf/aqua/AquaButtonFocusTest.java Changeset: 79a06df8 Author: Christian Hagedorn Date: 2021-08-18 06:39:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/79a06df8113ba1da55db5c38fe34608c3507c223 8272567: [IR Framework] Make AbstractInfo.getRandom() static Reviewed-by: thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/AbstractInfo.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/examples/CustomRunTestExample.java Changeset: e8f1219d Author: Vladimir Ivanov Date: 2021-08-18 10:31:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e8f1219d6f471c89fe15b19c56e3062dd668466f 8271276: C2: Wrong JVM state used for receiver null check Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/callGenerator.cpp + test/hotspot/jtreg/compiler/inlining/LateInlineVirtualNullReceiverCheck.java Changeset: 30b0f820 Author: Claes Redestad Date: 2021-08-18 10:47:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/30b0f820cec12b6da62229fe78a528ab3ad0d134 8272626: Avoid C-style array declarations in java.* Reviewed-by: dfuchs, alanb ! src/java.base/share/classes/java/io/BufferedInputStream.java ! src/java.base/share/classes/java/io/BufferedOutputStream.java ! src/java.base/share/classes/java/io/BufferedWriter.java ! src/java.base/share/classes/java/io/ByteArrayInputStream.java ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/CharArrayWriter.java ! src/java.base/share/classes/java/io/Console.java ! src/java.base/share/classes/java/io/DataInput.java ! src/java.base/share/classes/java/io/DataInputStream.java ! src/java.base/share/classes/java/io/DataOutput.java ! src/java.base/share/classes/java/io/DataOutputStream.java ! src/java.base/share/classes/java/io/FileInputStream.java ! src/java.base/share/classes/java/io/FileOutputStream.java ! src/java.base/share/classes/java/io/FilterInputStream.java ! src/java.base/share/classes/java/io/FilterOutputStream.java ! src/java.base/share/classes/java/io/FilterWriter.java ! src/java.base/share/classes/java/io/InputStream.java ! src/java.base/share/classes/java/io/LineNumberInputStream.java ! src/java.base/share/classes/java/io/LineNumberReader.java ! src/java.base/share/classes/java/io/ObjectInput.java ! src/java.base/share/classes/java/io/ObjectOutput.java ! src/java.base/share/classes/java/io/OutputStream.java ! src/java.base/share/classes/java/io/OutputStreamWriter.java ! src/java.base/share/classes/java/io/PipedInputStream.java ! src/java.base/share/classes/java/io/PipedOutputStream.java ! src/java.base/share/classes/java/io/PipedReader.java ! src/java.base/share/classes/java/io/PipedWriter.java ! src/java.base/share/classes/java/io/PrintStream.java ! src/java.base/share/classes/java/io/PrintWriter.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/io/SequenceInputStream.java ! src/java.base/share/classes/java/io/StringBufferInputStream.java ! src/java.base/share/classes/java/io/StringWriter.java ! src/java.base/share/classes/java/io/Writer.java ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/lang/StringBuffer.java ! src/java.base/share/classes/java/lang/StringLatin1.java ! src/java.base/share/classes/java/lang/StringUTF16.java ! src/java.base/share/classes/java/lang/Thread.java ! src/java.base/share/classes/java/lang/ThreadGroup.java ! src/java.base/share/classes/java/math/BigInteger.java ! src/java.base/share/classes/java/net/DatagramPacket.java ! src/java.base/share/classes/java/net/Inet4Address.java ! src/java.base/share/classes/java/net/Inet6Address.java ! src/java.base/share/classes/java/net/Socket.java ! src/java.base/share/classes/java/net/URLConnection.java ! src/java.base/share/classes/java/text/ChoiceFormat.java ! src/java.base/share/classes/java/text/DecimalFormat.java ! src/java.base/share/classes/java/util/Arrays.java ! src/java.base/share/classes/java/util/jar/JarVerifier.java ! src/java.base/share/classes/java/util/regex/Matcher.java ! src/java.base/share/classes/java/util/zip/ZipFile.java ! src/java.base/share/classes/java/util/zip/ZipUtils.java Changeset: 4d6593ce Author: Harold Seigel Date: 2021-08-18 14:24:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4d6593ce0243457e7431a5990957a8f880e0a3fb 8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon Reviewed-by: mseledtsov, sgehwolf ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java ! test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java Changeset: 96107e31 Author: Vladimir Ivanov Date: 2021-08-18 16:45:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/96107e31dfe115fc102fa54d7bdd523c8a79ff76 8272573: Redundant unique_concrete_method_4 dependencies Reviewed-by: kvn, thartmann ! src/hotspot/share/code/dependencies.cpp Changeset: 73da66ff Author: Ralf Schmelter Date: 2021-08-18 18:30:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/73da66ffb707abf6dc38368a12e337d52597de25 8272318: Improve performance of HeapDumpAllTest Reviewed-by: lucy, sspitsyn ! test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpAllTest.java Changeset: 6d3d4795 Author: Jonathan Gibbons Date: 2021-08-18 23:40:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6d3d47957ef03c90ed3b1cb7a48902366cd1bc27 8272667: substandard error messages from the docs build Reviewed-by: darcy, iris ! make/common/ProcessMarkdown.gmk Changeset: 1c80f078 Author: Julia Boes Date: 2021-08-19 09:09:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1c80f078f61a53ee80640e76a9af86f9b16a0618 8272334: com.sun.net.httpserver.HttpExchange: Improve API doc of getRequestHeaders Reviewed-by: dfuchs, michaelm, chegar ! src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java Changeset: 82b2f21d Author: Albert Mingkun Yang Date: 2021-08-19 09:55:51 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/82b2f21d17828546f154cf31d174e26d0944530f 8272579: G1: remove unnecesary null check for G1ParScanThreadStateSet::_states slots Reviewed-by: iwalulya, kbarrett, sjohanss ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: ab418129 Author: Albert Mingkun Yang Date: 2021-08-19 09:56:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ab41812951aad9d44fb475d3a8c94b65d9e22b20 8272576: G1: Use more accurate integer type for collection set length Reviewed-by: iwalulya, sjohanss ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp Changeset: 03b5e99d Author: Roman Kennke Date: 2021-08-19 10:16:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/03b5e99d998e037f84e9e2395b49321979c0acd8 8272165: Consolidate mark_must_be_preserved() variants Reviewed-by: tschatzl ! src/hotspot/share/gc/shared/preservedMarks.inline.hpp ! src/hotspot/share/oops/markWord.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 51c1b9a6 Author: Andrey Turbanov Committer: Brian Burkhalter Date: 2021-08-19 15:57:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/51c1b9a6870bd9644e92227e47082a53e2d1c066 8272616: Strange code in java.text.DecimalFormat#applyPattern Reviewed-by: bpb, naoto, iris ! src/java.base/share/classes/java/text/DecimalFormat.java Changeset: 9569159d Author: Weijun Wang Date: 2021-08-19 19:02:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9569159d2552d6079cd039b602264a324dcdfe49 8272674: Logging missing keytab file in Krb5LoginModule Reviewed-by: coffeys ! src/java.security.jgss/share/classes/sun/security/krb5/internal/ktab/KeyTab.java Changeset: 7eccbd4f Author: Roman Kennke Date: 2021-08-19 19:50:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7eccbd4fde58ea36d6a21a2c4ffa3bc5d0b38c10 8266519: Cleanup resolve() leftovers from BarrierSet et al Reviewed-by: kbarrett, stefank ! src/hotspot/share/gc/shared/barrierSet.hpp ! src/hotspot/share/oops/access.hpp ! src/hotspot/share/oops/access.inline.hpp ! src/hotspot/share/oops/accessBackend.hpp Changeset: b40e8f0f Author: Roman Kennke Date: 2021-08-19 19:51:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b40e8f0f9e719f28cf128d74d834233860e4ab67 8271951: Consolidate preserved marks overflow stack in SerialGC Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp Changeset: f4be211a Author: Roman Kennke Date: 2021-08-19 19:54:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f4be211ae290824cb6c678dcdff0df91a20117d6 8270041: Consolidate oopDesc::cas_forward_to() and oopDesc::forward_to_atomic() Reviewed-by: stefank, kbarrett ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: d007be09 Author: Jie Fu Date: 2021-08-19 23:11:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d007be0952abdc8beb7b68ebf7529a939162307b 8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848 Reviewed-by: dholmes ! make/autoconf/flags-other.m4 Changeset: ddcd851c Author: Phil Race Date: 2021-08-20 00:08:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ddcd851c43aa97477c7e406490c0c7c7d71ac629 8272602: [macos] not all KEY_PRESSED events sent when control modifier is used Reviewed-by: kizune ! src/java.desktop/macosx/native/libosxapp/JNIUtilities.m + test/jdk/java/awt/event/KeyEvent/KeyTyped/CtrlSpace.java Changeset: 4bd37c31 Author: Thejasvi Voniadka Committer: Abdul Kolarkunnu Date: 2021-08-20 03:15:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4bd37c315333325b69db8d55c0c3aaf74c95024f 8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled Reviewed-by: rhalade ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java Changeset: a81e5e93 Author: Aleksey Shipilev Date: 2021-08-20 07:34:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a81e5e9353a635a2307ff4e5de8a304c14f08047 8272654: Mark word accesses should not use Access API Reviewed-by: stefank, rkennke, eosterlund ! src/hotspot/share/oops/oop.inline.hpp Changeset: db9834ff Author: Daniel Fuchs Date: 2021-08-20 09:05:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/db9834ff82ce477e5c38c8873d39f54882627746 8258951: java/net/httpclient/HandshakeFailureTest.java failed with "RuntimeException: Not found expected SSLHandshakeException in java.io.IOException" Reviewed-by: chegar ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java ! test/jdk/java/net/httpclient/HandshakeFailureTest.java Changeset: 92bde673 Author: Roman Kennke Date: 2021-08-20 10:12:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/92bde6738a8984000ffdef010228d5117b2d8313 8271946: Cleanup leftovers in Space and subclasses Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/shared/space.cpp ! src/hotspot/share/gc/shared/space.hpp ! src/hotspot/share/gc/shared/space.inline.hpp Changeset: 451a4620 Author: duke Date: 2021-08-20 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/451a4620903fe1d19c04f837f41f8886f52bc092 Automatic merge of jdk:master into master From duke at openjdk.java.net Fri Aug 20 11:09:52 2021 From: duke at openjdk.java.net (duke) Date: Fri, 20 Aug 2021 11:09:52 GMT Subject: git: openjdk/panama-foreign: foreign-jextract: 64 new changesets Message-ID: <8a840582-1a87-4149-914b-886e42748216@openjdk.org> Changeset: 717792c3 Author: Lance Andersen Date: 2021-08-13 16:11:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/717792c3b728584413572e7aede83290779be2a2 8263940: NPE when creating default file system when default file system provider is packaged as JAR file on class path Reviewed-by: naoto, bpb, iris, joehw ! src/java.base/share/classes/java/util/zip/ZipFile.java ! test/jdk/java/nio/file/spi/SetDefaultProvider.java Changeset: bd7f9b4f Author: Daniel D. Daugherty Date: 2021-08-13 16:57:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bd7f9b4fb9a037b8efd9d552149efd41ce7f7155 8272459: ProblemList compiler/codecache/TestStressCodeBuffers.java on aarch64 Reviewed-by: iignatyev ! test/hotspot/jtreg/ProblemList.txt Changeset: 0af645aa Author: Phil Race Date: 2021-08-13 19:30:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0af645aa4fd138861a51b58dec4182679640776a 8205138: Remove Applet references from Font2DTest Reviewed-by: serb, psadhukhan - src/demo/share/jfc/Font2DTest/Font2DTest.html ! src/demo/share/jfc/Font2DTest/Font2DTest.java ! src/demo/share/jfc/Font2DTest/README.txt Changeset: 6b8b160e Author: Xue-Lei Andrew Fan Date: 2021-08-13 21:33:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6b8b160e374a4a566d193a594d9a228646e8e067 8272396: mismatching debug output streams Reviewed-by: mullan ! src/java.base/share/classes/sun/security/ssl/RSAKeyExchange.java Changeset: 87d2761f Author: Marcus G K Williams Committer: Sandhya Viswanathan Date: 2021-08-14 00:34:51 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/87d2761f1b4572633de020b2d4681918c6f10f06 8271883: Math CopySign optimization for x86 Reviewed-by: jbhateja, sviswanathan, kvn ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/x86.ad ! test/micro/org/openjdk/bench/vm/compiler/Signum.java Changeset: 17b93500 Author: Alexey Ushakov Date: 2021-08-14 10:40:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/17b93500237e74dca964e1805e65c857e7980bbe 8266079: Lanai: AlphaComposite shows differences on Metal compared to OpenGL Reviewed-by: serb ! src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java ! src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m + test/jdk/java/awt/AlphaComposite/WindowAlphaCompositeTest.java Changeset: 6a5241c3 Author: Phil Race Date: 2021-08-15 16:50:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6a5241c3adfd3ba886e469156dea56ed5b9673ff 8272491: Problem list javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java on macos Reviewed-by: pbansal ! test/jdk/ProblemList.txt Changeset: 3f38a50c Author: Yi Yang Date: 2021-08-16 02:30:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3f38a50c528cccc30ca9e513b15ce9866d92aa82 8271203: C2: assert(iff->Opcode() == Op_If || iff->Opcode() == Op_CountedLoopEnd || iff->Opcode() == Op_RangeCheck) failed: Check this code when new subtype is added Reviewed-by: chagedorn, roland, thartmann ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/c2/LongCountedLoopAsUnswitchIff.java Changeset: 36e2ddad Author: Ioi Lam Date: 2021-08-16 03:22:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/36e2ddad4d2ef3ce27475af6244d0246a8315c0c 8272348: Update CDS tests in anticipation of JDK-8270489 Reviewed-by: ccheung, minqi ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/runtime/cds/ServiceLoaderTest.java ! test/hotspot/jtreg/runtime/cds/SharedStringsWb.java ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressApp.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassApp.java ! test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDumpWb.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExerciseGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/FlagCombo.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternSharedString.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternStringTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LargePages.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockSharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringValueTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasicPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWb.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWbTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SysDictCrash.java ! test/lib/jdk/test/whitebox/WhiteBox.java ! test/lib/sun/hotspot/WhiteBox.java Changeset: 0209d9f3 Author: Albert Mingkun Yang Date: 2021-08-16 07:34:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0209d9f382f09840c29ac34b27dd41d2c8676913 8272461: G1: remove empty declaration of cleanup_after_scan_heap_roots Reviewed-by: kbarrett ! src/hotspot/share/gc/g1/g1RemSet.hpp Changeset: 7a5b37b8 Author: Albert Mingkun Yang Date: 2021-08-16 07:35:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7a5b37b8ca64650a8d23d64013bf49c9f3a60e2c 8272439: G1: add documentation to G1CardSetInlinePtr Co-authored-by: Thomas Schatzl Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp Changeset: 5db36ced Author: Hannes Walln?fer Date: 2021-08-16 07:46:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5db36cedc91d0954ececd309a5f8f59ea828f6c1 8272158: SoftReference related bugs under memory pressure Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java Changeset: 69cc588f Author: Albert Mingkun Yang Date: 2021-08-16 09:40:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/69cc588fce0aef3f6066f2ff313d5319b528d684 8272235: G1: update outdated code root fixup Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp ! test/hotspot/jtreg/gc/g1/TestGCLogMessages.java Changeset: 83d0e128 Author: Ivan Walulya Date: 2021-08-16 13:08:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/83d0e128e362822584bb51b00576cb754f44e58b 8267833: Improve G1CardSetInlinePtr::add() Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.inline.hpp Changeset: 0a03481a Author: Ivan Walulya Date: 2021-08-16 13:09:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a03481a6566d59b21ea5f802cb1f0028531c9d8 8272231: G1: Refactor G1CardSet::get_card_set to return G1CardSetHashTableValue* Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp Changeset: 36777345 Author: Christian Hagedorn Date: 2021-08-16 14:51:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3677734584859e1b4bea65f6719e839f949c9236 8271471: [IR Framework] Rare occurrence of "" in PrintIdeal/PrintOptoAssembly can let tests fail Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/IRMatcher.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestRunTests.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestScenarios.java + test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/Utils.java Changeset: 82688258 Author: Brian Burkhalter Date: 2021-08-16 15:53:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/82688258f676e6be8a603f6ab744d52728e3478b 8272297: FileInputStream should override transferTo() for better performance Reviewed-by: alanb ! src/java.base/share/classes/java/io/FileInputStream.java + test/jdk/java/io/FileInputStream/TransferTo.java Changeset: b2c272d4 Author: Igor Ignatyev Date: 2021-08-16 16:56:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b2c272d4e21eb4aeb6c8e1c0be0d08943dc36db8 8272305: several hotspot runtime/modules don't check exit codes Reviewed-by: dholmes, mseledtsov ! test/hotspot/jtreg/runtime/modules/ClassLoaderNoUnnamedModuleTest.java ! test/hotspot/jtreg/runtime/modules/IgnoreModulePropertiesTest.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleCDS.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTraceCL.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpNoVisibility.java Changeset: ae45592d Author: Jonathan Gibbons Date: 2021-08-16 20:48:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ae45592d3304f50aa9e8e114416a41e7899fe37b 8272374: doclint should report missing "body" comments Reviewed-by: kcr, hannesw ! make/modules/java.desktop/Java.gmk ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties ! test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java ! test/langtools/tools/doclint/AccessTest.java ! test/langtools/tools/doclint/CustomTagTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.out + test/langtools/tools/doclint/EmptyDescriptionTest.java + test/langtools/tools/doclint/EmptyDescriptionTest.out ! test/langtools/tools/doclint/EmptyExceptionTest.java ! test/langtools/tools/doclint/EmptyExceptionTest.out ! test/langtools/tools/doclint/EmptyParamTest.java ! test/langtools/tools/doclint/EmptyParamTest.out ! test/langtools/tools/doclint/EmptyReturnTest.java ! test/langtools/tools/doclint/EmptyReturnTest.out ! test/langtools/tools/doclint/EmptySerialFieldTest.java ! test/langtools/tools/doclint/EmptySerialFieldTest.out ! test/langtools/tools/doclint/EmptySinceTest.java ! test/langtools/tools/doclint/EmptySinceTest.out ! test/langtools/tools/doclint/EmptyVersionTest.java ! test/langtools/tools/doclint/EmptyVersionTest.out ! test/langtools/tools/doclint/EndWithIdentifierTest.java ! test/langtools/tools/doclint/EndWithIdentifierTest.out ! test/langtools/tools/doclint/LambdaTest.java ! test/langtools/tools/doclint/LiteralTest.java ! test/langtools/tools/doclint/MissingParamsTest.java ! test/langtools/tools/doclint/MissingReturnTest.java ! test/langtools/tools/doclint/MissingThrowsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.out ! test/langtools/tools/doclint/ReferenceTest.java ! test/langtools/tools/doclint/ReferenceTest.out ! test/langtools/tools/doclint/SyntaxTest.java ! test/langtools/tools/doclint/packageTests/bad/Test.java ! test/langtools/tools/doclint/tool/StatsTest.java ! test/langtools/tools/javac/doclint/DocLintTest.java Changeset: a5ad7720 Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2021-08-16 22:24:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a5ad7720d235610ad45fc341c61f164805f82a54 8272342: [TEST_BUG] java/awt/print/PrinterJob/PageDialogMarginTest.java catches all exceptions Reviewed-by: aivanov, pbansal ! test/jdk/java/awt/print/PrinterJob/PageDialogMarginTest.java Changeset: 3fb19279 Author: Jonathan Gibbons Date: 2021-08-16 22:54:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3fb19279da240ecabee04148ba8907f036450575 8271227: Missing `{@code }` in com.sun.source.* Reviewed-by: iris ! src/jdk.compiler/share/classes/com/sun/source/doctree/DocTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/Trees.java Changeset: ee8bf10d Author: Zhengyu Gu Date: 2021-08-17 00:35:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ee8bf10d321da8a261ff4eda705cef753b4a7014 8272327: Shenandoah: Avoid enqueuing duplicate string candidates Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.inline.hpp Changeset: 989f39f8 Author: Igor Ignatyev Date: 2021-08-17 03:45:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/989f39f8106a22498053a4ca5f2becf8df5f2420 8272552: mark hotspot runtime/cds tests which ignore external VM flags Reviewed-by: mseledtsov, jiefu, dholmes, iklam ! test/hotspot/jtreg/runtime/cds/MaxMetaspaceSize.java ! test/hotspot/jtreg/runtime/cds/SharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifyWithDefaultArchive.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java ! test/hotspot/jtreg/runtime/cds/appcds/jcmd/JCmdTestDynamicDump.java Changeset: df1427b7 Author: Stefan Karlsson Date: 2021-08-17 06:36:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/df1427b72ba1d02d440018a4f6f8a287fecad460 8272446: C1: Raw version of UnsafeGet generates load barriers Reviewed-by: eosterlund, iveresov ! src/hotspot/share/c1/c1_LIRGenerator.cpp Changeset: c5c84b8f Author: lawrence.andrews Committer: Prasanta Sadhukhan Date: 2021-08-17 07:44:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c5c84b8fdc0d52bc45ed7290011b39337f3bbe35 8270312: Error: Not a test or directory containing tests: java/awt/print/PrinterJob/XparColor.java Reviewed-by: psadhukhan, jdv ! test/jdk/java/awt/print/PrinterJob/XparColor.java Changeset: 0e3fde6c Author: Hannes Walln?fer Date: 2021-08-17 08:29:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0e3fde6c3c2f5c05777b79ff5eb1188014269b0f 8264274: Block tags in overview.html are ignored Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java ! test/langtools/jdk/javadoc/doclet/testOverview/TestOverview.java ! test/langtools/jdk/javadoc/doclet/testOverview/overview.html Changeset: ed57cf1c Author: Abdul Kolarkunnu Date: 2021-08-17 12:12:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ed57cf1cf3f2d107e085ecdae38a63e66ab2fa30 8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java Reviewed-by: hchao, ssahoo, xuelei, weijun + test/jdk/sun/security/pkcs12/KeytoolOpensslInteropTest.java - test/jdk/sun/security/pkcs12/ParamsTest.java + test/lib/jdk/test/lib/artifacts/OpensslArtifactFetcher.java Changeset: 2aaf7952 Author: Albert Mingkun Yang Date: 2021-08-17 12:42:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2aaf795270eb07eb155df9a7f5e1d6901f09d8f0 8272520: Inline GenericTaskQueue::initialize() to the constructor Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1FullGCMarker.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/gc/shared/taskqueue.hpp ! src/hotspot/share/gc/shared/taskqueue.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.cpp ! src/hotspot/share/gc/z/zHeapIterator.cpp Changeset: 2ed7b709 Author: Albert Mingkun Yang Date: 2021-08-17 12:42:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ed7b709a197f009632580b17e3b1df34c1ffeb7 8272521: Remove unused PSPromotionManager::_claimed_stack_breadth Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/parallel/psPromotionManager.hpp Changeset: cf64c3e7 Author: Jim Laskey Date: 2021-08-17 15:53:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cf64c3e7e226eacf675d984db52872b0a8343a46 8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails Reviewed-by: rriggs, bpb ! test/jdk/java/util/Random/RandomTestChiSquared.java ! test/jdk/java/util/Random/RandomTestMoments.java Changeset: 1cbf41a8 Author: Rajan Halade Date: 2021-08-17 16:01:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1cbf41a87b153c010c51fdbae832e00314422193 8225083: Remove Google certificate that is expiring in December 2021 Reviewed-by: xuelei, mullan - make/data/cacerts/globalsignr2ca ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: a199ebc0 Author: Abdul Kolarkunnu Date: 2021-08-17 16:54:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a199ebc0175f9882f051551cff9ce08016f204a4 8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182 Reviewed-by: weijun ! test/jdk/sun/security/pkcs12/KeytoolOpensslInteropTest.java = test/lib/jdk/test/lib/security/OpensslArtifactFetcher.java Changeset: a68b5b9c Author: Brian Burkhalter Date: 2021-08-17 17:07:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a68b5b9c1dd9dd69fa3ef29d8f1186707ec09311 8272369: java/io/File/GetXSpace.java failed with "RuntimeException: java.nio.file.NoSuchFileException: /run/user/0" Reviewed-by: alanb ! test/jdk/java/io/File/GetXSpace.java Changeset: 05d64da7 Author: Igor Ignatyev Date: 2021-08-17 19:36:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/05d64da7f32e5960550d5ec76fa2fba5c972d9b3 8272291: mark hotspot runtime/logging tests which ignore external VM flags Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/runtime/logging/ClassInitializationTest.java ! test/hotspot/jtreg/runtime/logging/ClassLoadUnloadTest.java ! test/hotspot/jtreg/runtime/logging/ClassResolutionTest.java ! test/hotspot/jtreg/runtime/logging/CompressedOopsTest.java ! test/hotspot/jtreg/runtime/logging/CondyIndyTest.java ! test/hotspot/jtreg/runtime/logging/DefaultMethodsTest.java ! test/hotspot/jtreg/runtime/logging/ExceptionsTest.java ! test/hotspot/jtreg/runtime/logging/ItablesTest.java ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java ! test/hotspot/jtreg/runtime/logging/ModulesTest.java ! test/hotspot/jtreg/runtime/logging/MonitorInflationTest.java ! test/hotspot/jtreg/runtime/logging/MonitorMismatchTest.java ! test/hotspot/jtreg/runtime/logging/OsCpuLoggingTest.java ! test/hotspot/jtreg/runtime/logging/ProtectionDomainVerificationTest.java ! test/hotspot/jtreg/runtime/logging/SafepointCleanupTest.java ! test/hotspot/jtreg/runtime/logging/SafepointTest.java ! test/hotspot/jtreg/runtime/logging/StackWalkTest.java ! test/hotspot/jtreg/runtime/logging/StartupTimeTest.java ! test/hotspot/jtreg/runtime/logging/ThreadLoggingTest.java ! test/hotspot/jtreg/runtime/logging/VMOperationTest.java ! test/hotspot/jtreg/runtime/logging/VerificationTest.java ! test/hotspot/jtreg/runtime/logging/VtablesTest.java ! test/hotspot/jtreg/runtime/logging/loadLibraryTest/LoadLibraryTest.java Changeset: fe721971 Author: Igor Ignatyev Date: 2021-08-17 19:37:45 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fe7219710243dbb3b5bc4ad6ef3e93d0d203d4f7 8272551: mark hotspot runtime/modules tests which ignore external VM flags Reviewed-by: mseledtsov, jiefu ! test/hotspot/jtreg/runtime/modules/ClassLoaderNoUnnamedModuleTest.java ! test/hotspot/jtreg/runtime/modules/IgnoreModulePropertiesTest.java ! test/hotspot/jtreg/runtime/modules/ModuleOptionsTest.java ! test/hotspot/jtreg/runtime/modules/ModuleOptionsWarn.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ExportModuleStressTest.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStress.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStressGC.java ! test/hotspot/jtreg/runtime/modules/ModulesSymLink.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModule2Dirs.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleCDS.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleDupJavaBase.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleDupModule.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleJavaBase.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTest.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTestJar.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTestJarDir.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTraceCL.java ! test/hotspot/jtreg/runtime/modules/Visibility/PatchModuleVisibility.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpNoVisibility.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpVisibility.java Changeset: 14623cde Author: Vicente Romero Date: 2021-08-17 20:47:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/14623cde3a20962e902043b556c5058ac208711f 8270835: regression after JDK-8261006 Reviewed-by: jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/AttrContext.java + test/langtools/tools/javac/cantReferenceBeforeCtor/CantReferenceBeforeConstructorTest.java + test/langtools/tools/javac/cantReferenceBeforeCtor/CantReferenceBeforeConstructorTest.out Changeset: ec63957f Author: Mikhailo Seledtsov Date: 2021-08-17 23:22:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec63957f9d103e86d3b8e235e79cabb8992cb3ca 8272398: Update DockerTestUtils.buildJdkDockerImage() Reviewed-by: iignatyev, hseigel ! test/hotspot/jtreg/containers/docker/DockerBasicTest.java ! test/hotspot/jtreg/containers/docker/TestCPUAwareness.java ! test/hotspot/jtreg/containers/docker/TestCPUSets.java ! test/hotspot/jtreg/containers/docker/TestJFREvents.java ! test/hotspot/jtreg/containers/docker/TestJFRNetworkEvents.java ! test/hotspot/jtreg/containers/docker/TestJFRWithJMX.java ! test/hotspot/jtreg/containers/docker/TestJcmdWithSideCar.java ! test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java ! test/hotspot/jtreg/containers/docker/TestMisc.java ! test/hotspot/jtreg/containers/docker/TestPids.java ! test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java ! test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java ! test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java ! test/jdk/jdk/internal/platform/docker/TestPidsLimit.java ! test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java ! test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java ! test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java Changeset: 5189047d Author: Tobias Hartmann Date: 2021-08-18 04:47:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5189047d09e976cfd17d4ab5ec12097c242f3435 8272558: IR Test Framework README misses some flags Reviewed-by: chagedorn ! test/hotspot/jtreg/compiler/lib/ir_framework/README.md Changeset: 481c1f05 Author: Alexander Zuev Date: 2021-08-18 05:48:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/481c1f0549e361e8e83fcf0530acc4ebdb60104b 8269951: [macos] Focus not painted in JButton when setBorderPainted(false) is invoked Reviewed-by: serb, psadhukhan ! src/java.desktop/macosx/classes/com/apple/laf/AquaButtonUI.java + test/jdk/javax/swing/plaf/aqua/AquaButtonFocusTest.java Changeset: 79a06df8 Author: Christian Hagedorn Date: 2021-08-18 06:39:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/79a06df8113ba1da55db5c38fe34608c3507c223 8272567: [IR Framework] Make AbstractInfo.getRandom() static Reviewed-by: thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/AbstractInfo.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/examples/CustomRunTestExample.java Changeset: e8f1219d Author: Vladimir Ivanov Date: 2021-08-18 10:31:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e8f1219d6f471c89fe15b19c56e3062dd668466f 8271276: C2: Wrong JVM state used for receiver null check Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/callGenerator.cpp + test/hotspot/jtreg/compiler/inlining/LateInlineVirtualNullReceiverCheck.java Changeset: 30b0f820 Author: Claes Redestad Date: 2021-08-18 10:47:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/30b0f820cec12b6da62229fe78a528ab3ad0d134 8272626: Avoid C-style array declarations in java.* Reviewed-by: dfuchs, alanb ! src/java.base/share/classes/java/io/BufferedInputStream.java ! src/java.base/share/classes/java/io/BufferedOutputStream.java ! src/java.base/share/classes/java/io/BufferedWriter.java ! src/java.base/share/classes/java/io/ByteArrayInputStream.java ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/CharArrayWriter.java ! src/java.base/share/classes/java/io/Console.java ! src/java.base/share/classes/java/io/DataInput.java ! src/java.base/share/classes/java/io/DataInputStream.java ! src/java.base/share/classes/java/io/DataOutput.java ! src/java.base/share/classes/java/io/DataOutputStream.java ! src/java.base/share/classes/java/io/FileInputStream.java ! src/java.base/share/classes/java/io/FileOutputStream.java ! src/java.base/share/classes/java/io/FilterInputStream.java ! src/java.base/share/classes/java/io/FilterOutputStream.java ! src/java.base/share/classes/java/io/FilterWriter.java ! src/java.base/share/classes/java/io/InputStream.java ! src/java.base/share/classes/java/io/LineNumberInputStream.java ! src/java.base/share/classes/java/io/LineNumberReader.java ! src/java.base/share/classes/java/io/ObjectInput.java ! src/java.base/share/classes/java/io/ObjectOutput.java ! src/java.base/share/classes/java/io/OutputStream.java ! src/java.base/share/classes/java/io/OutputStreamWriter.java ! src/java.base/share/classes/java/io/PipedInputStream.java ! src/java.base/share/classes/java/io/PipedOutputStream.java ! src/java.base/share/classes/java/io/PipedReader.java ! src/java.base/share/classes/java/io/PipedWriter.java ! src/java.base/share/classes/java/io/PrintStream.java ! src/java.base/share/classes/java/io/PrintWriter.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/io/SequenceInputStream.java ! src/java.base/share/classes/java/io/StringBufferInputStream.java ! src/java.base/share/classes/java/io/StringWriter.java ! src/java.base/share/classes/java/io/Writer.java ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/lang/StringBuffer.java ! src/java.base/share/classes/java/lang/StringLatin1.java ! src/java.base/share/classes/java/lang/StringUTF16.java ! src/java.base/share/classes/java/lang/Thread.java ! src/java.base/share/classes/java/lang/ThreadGroup.java ! src/java.base/share/classes/java/math/BigInteger.java ! src/java.base/share/classes/java/net/DatagramPacket.java ! src/java.base/share/classes/java/net/Inet4Address.java ! src/java.base/share/classes/java/net/Inet6Address.java ! src/java.base/share/classes/java/net/Socket.java ! src/java.base/share/classes/java/net/URLConnection.java ! src/java.base/share/classes/java/text/ChoiceFormat.java ! src/java.base/share/classes/java/text/DecimalFormat.java ! src/java.base/share/classes/java/util/Arrays.java ! src/java.base/share/classes/java/util/jar/JarVerifier.java ! src/java.base/share/classes/java/util/regex/Matcher.java ! src/java.base/share/classes/java/util/zip/ZipFile.java ! src/java.base/share/classes/java/util/zip/ZipUtils.java Changeset: 4d6593ce Author: Harold Seigel Date: 2021-08-18 14:24:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4d6593ce0243457e7431a5990957a8f880e0a3fb 8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon Reviewed-by: mseledtsov, sgehwolf ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java ! test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java Changeset: 96107e31 Author: Vladimir Ivanov Date: 2021-08-18 16:45:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/96107e31dfe115fc102fa54d7bdd523c8a79ff76 8272573: Redundant unique_concrete_method_4 dependencies Reviewed-by: kvn, thartmann ! src/hotspot/share/code/dependencies.cpp Changeset: 73da66ff Author: Ralf Schmelter Date: 2021-08-18 18:30:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/73da66ffb707abf6dc38368a12e337d52597de25 8272318: Improve performance of HeapDumpAllTest Reviewed-by: lucy, sspitsyn ! test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpAllTest.java Changeset: 6d3d4795 Author: Jonathan Gibbons Date: 2021-08-18 23:40:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6d3d47957ef03c90ed3b1cb7a48902366cd1bc27 8272667: substandard error messages from the docs build Reviewed-by: darcy, iris ! make/common/ProcessMarkdown.gmk Changeset: 1c80f078 Author: Julia Boes Date: 2021-08-19 09:09:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1c80f078f61a53ee80640e76a9af86f9b16a0618 8272334: com.sun.net.httpserver.HttpExchange: Improve API doc of getRequestHeaders Reviewed-by: dfuchs, michaelm, chegar ! src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java Changeset: 82b2f21d Author: Albert Mingkun Yang Date: 2021-08-19 09:55:51 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/82b2f21d17828546f154cf31d174e26d0944530f 8272579: G1: remove unnecesary null check for G1ParScanThreadStateSet::_states slots Reviewed-by: iwalulya, kbarrett, sjohanss ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: ab418129 Author: Albert Mingkun Yang Date: 2021-08-19 09:56:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ab41812951aad9d44fb475d3a8c94b65d9e22b20 8272576: G1: Use more accurate integer type for collection set length Reviewed-by: iwalulya, sjohanss ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp Changeset: 03b5e99d Author: Roman Kennke Date: 2021-08-19 10:16:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/03b5e99d998e037f84e9e2395b49321979c0acd8 8272165: Consolidate mark_must_be_preserved() variants Reviewed-by: tschatzl ! src/hotspot/share/gc/shared/preservedMarks.inline.hpp ! src/hotspot/share/oops/markWord.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 51c1b9a6 Author: Andrey Turbanov Committer: Brian Burkhalter Date: 2021-08-19 15:57:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/51c1b9a6870bd9644e92227e47082a53e2d1c066 8272616: Strange code in java.text.DecimalFormat#applyPattern Reviewed-by: bpb, naoto, iris ! src/java.base/share/classes/java/text/DecimalFormat.java Changeset: 9569159d Author: Weijun Wang Date: 2021-08-19 19:02:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9569159d2552d6079cd039b602264a324dcdfe49 8272674: Logging missing keytab file in Krb5LoginModule Reviewed-by: coffeys ! src/java.security.jgss/share/classes/sun/security/krb5/internal/ktab/KeyTab.java Changeset: 7eccbd4f Author: Roman Kennke Date: 2021-08-19 19:50:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7eccbd4fde58ea36d6a21a2c4ffa3bc5d0b38c10 8266519: Cleanup resolve() leftovers from BarrierSet et al Reviewed-by: kbarrett, stefank ! src/hotspot/share/gc/shared/barrierSet.hpp ! src/hotspot/share/oops/access.hpp ! src/hotspot/share/oops/access.inline.hpp ! src/hotspot/share/oops/accessBackend.hpp Changeset: b40e8f0f Author: Roman Kennke Date: 2021-08-19 19:51:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b40e8f0f9e719f28cf128d74d834233860e4ab67 8271951: Consolidate preserved marks overflow stack in SerialGC Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp Changeset: f4be211a Author: Roman Kennke Date: 2021-08-19 19:54:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f4be211ae290824cb6c678dcdff0df91a20117d6 8270041: Consolidate oopDesc::cas_forward_to() and oopDesc::forward_to_atomic() Reviewed-by: stefank, kbarrett ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: d007be09 Author: Jie Fu Date: 2021-08-19 23:11:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d007be0952abdc8beb7b68ebf7529a939162307b 8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848 Reviewed-by: dholmes ! make/autoconf/flags-other.m4 Changeset: ddcd851c Author: Phil Race Date: 2021-08-20 00:08:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ddcd851c43aa97477c7e406490c0c7c7d71ac629 8272602: [macos] not all KEY_PRESSED events sent when control modifier is used Reviewed-by: kizune ! src/java.desktop/macosx/native/libosxapp/JNIUtilities.m + test/jdk/java/awt/event/KeyEvent/KeyTyped/CtrlSpace.java Changeset: 4bd37c31 Author: Thejasvi Voniadka Committer: Abdul Kolarkunnu Date: 2021-08-20 03:15:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4bd37c315333325b69db8d55c0c3aaf74c95024f 8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled Reviewed-by: rhalade ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java Changeset: a81e5e93 Author: Aleksey Shipilev Date: 2021-08-20 07:34:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a81e5e9353a635a2307ff4e5de8a304c14f08047 8272654: Mark word accesses should not use Access API Reviewed-by: stefank, rkennke, eosterlund ! src/hotspot/share/oops/oop.inline.hpp Changeset: db9834ff Author: Daniel Fuchs Date: 2021-08-20 09:05:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/db9834ff82ce477e5c38c8873d39f54882627746 8258951: java/net/httpclient/HandshakeFailureTest.java failed with "RuntimeException: Not found expected SSLHandshakeException in java.io.IOException" Reviewed-by: chegar ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java ! test/jdk/java/net/httpclient/HandshakeFailureTest.java Changeset: 92bde673 Author: Roman Kennke Date: 2021-08-20 10:12:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/92bde6738a8984000ffdef010228d5117b2d8313 8271946: Cleanup leftovers in Space and subclasses Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/shared/space.cpp ! src/hotspot/share/gc/shared/space.hpp ! src/hotspot/share/gc/shared/space.inline.hpp Changeset: 451a4620 Author: duke Date: 2021-08-20 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/451a4620903fe1d19c04f837f41f8886f52bc092 Automatic merge of jdk:master into master Changeset: 40b7c48d Author: duke Date: 2021-08-20 11:00:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/40b7c48d94e62f9d80b12140ad4f0db653daacd6 Automatic merge of master into foreign-memaccess+abi Changeset: 244e797f Author: duke Date: 2021-08-20 11:01:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/244e797f27f93b8e8ec97c57ce930cd956875c75 Automatic merge of foreign-memaccess+abi into foreign-jextract From duke at openjdk.java.net Fri Aug 20 11:13:39 2021 From: duke at openjdk.java.net (duke) Date: Fri, 20 Aug 2021 11:13:39 GMT Subject: git: openjdk/panama-foreign: foreign-memaccess+abi: 63 new changesets Message-ID: Changeset: 717792c3 Author: Lance Andersen Date: 2021-08-13 16:11:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/717792c3b728584413572e7aede83290779be2a2 8263940: NPE when creating default file system when default file system provider is packaged as JAR file on class path Reviewed-by: naoto, bpb, iris, joehw ! src/java.base/share/classes/java/util/zip/ZipFile.java ! test/jdk/java/nio/file/spi/SetDefaultProvider.java Changeset: bd7f9b4f Author: Daniel D. Daugherty Date: 2021-08-13 16:57:12 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bd7f9b4fb9a037b8efd9d552149efd41ce7f7155 8272459: ProblemList compiler/codecache/TestStressCodeBuffers.java on aarch64 Reviewed-by: iignatyev ! test/hotspot/jtreg/ProblemList.txt Changeset: 0af645aa Author: Phil Race Date: 2021-08-13 19:30:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0af645aa4fd138861a51b58dec4182679640776a 8205138: Remove Applet references from Font2DTest Reviewed-by: serb, psadhukhan - src/demo/share/jfc/Font2DTest/Font2DTest.html ! src/demo/share/jfc/Font2DTest/Font2DTest.java ! src/demo/share/jfc/Font2DTest/README.txt Changeset: 6b8b160e Author: Xue-Lei Andrew Fan Date: 2021-08-13 21:33:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6b8b160e374a4a566d193a594d9a228646e8e067 8272396: mismatching debug output streams Reviewed-by: mullan ! src/java.base/share/classes/sun/security/ssl/RSAKeyExchange.java Changeset: 87d2761f Author: Marcus G K Williams Committer: Sandhya Viswanathan Date: 2021-08-14 00:34:51 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/87d2761f1b4572633de020b2d4681918c6f10f06 8271883: Math CopySign optimization for x86 Reviewed-by: jbhateja, sviswanathan, kvn ! src/hotspot/cpu/x86/vm_version_x86.cpp ! src/hotspot/cpu/x86/x86.ad ! test/micro/org/openjdk/bench/vm/compiler/Signum.java Changeset: 17b93500 Author: Alexey Ushakov Date: 2021-08-14 10:40:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/17b93500237e74dca964e1805e65c857e7980bbe 8266079: Lanai: AlphaComposite shows differences on Metal compared to OpenGL Reviewed-by: serb ! src/java.desktop/macosx/classes/sun/java2d/metal/MTLLayer.java ! src/java.desktop/macosx/classes/sun/lwawt/LWWindowPeer.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CFLayer.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLLayer.m + test/jdk/java/awt/AlphaComposite/WindowAlphaCompositeTest.java Changeset: 6a5241c3 Author: Phil Race Date: 2021-08-15 16:50:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6a5241c3adfd3ba886e469156dea56ed5b9673ff 8272491: Problem list javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java on macos Reviewed-by: pbansal ! test/jdk/ProblemList.txt Changeset: 3f38a50c Author: Yi Yang Date: 2021-08-16 02:30:57 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3f38a50c528cccc30ca9e513b15ce9866d92aa82 8271203: C2: assert(iff->Opcode() == Op_If || iff->Opcode() == Op_CountedLoopEnd || iff->Opcode() == Op_RangeCheck) failed: Check this code when new subtype is added Reviewed-by: chagedorn, roland, thartmann ! src/hotspot/share/opto/loopopts.cpp + test/hotspot/jtreg/compiler/c2/LongCountedLoopAsUnswitchIff.java Changeset: 36e2ddad Author: Ioi Lam Date: 2021-08-16 03:22:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/36e2ddad4d2ef3ce27475af6244d0246a8315c0c 8272348: Update CDS tests in anticipation of JDK-8270489 Reviewed-by: ccheung, minqi ! src/hotspot/share/prims/whitebox.cpp ! test/hotspot/jtreg/runtime/cds/ServiceLoaderTest.java ! test/hotspot/jtreg/runtime/cds/SharedStringsWb.java ! test/hotspot/jtreg/runtime/cds/appcds/DumpClassList.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/GCStressApp.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/RedefineClassApp.java ! test/hotspot/jtreg/runtime/cds/appcds/javaldr/GCSharedStringsDuringDumpWb.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/ExerciseGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/FlagCombo.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringGC.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/HelloStringPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternSharedString.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/InternStringTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LargePages.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockSharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/LockStringValueTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsBasicPlus.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWb.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SharedStringsWbTest.java ! test/hotspot/jtreg/runtime/cds/appcds/sharedStrings/SysDictCrash.java ! test/lib/jdk/test/whitebox/WhiteBox.java ! test/lib/sun/hotspot/WhiteBox.java Changeset: 0209d9f3 Author: Albert Mingkun Yang Date: 2021-08-16 07:34:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0209d9f382f09840c29ac34b27dd41d2c8676913 8272461: G1: remove empty declaration of cleanup_after_scan_heap_roots Reviewed-by: kbarrett ! src/hotspot/share/gc/g1/g1RemSet.hpp Changeset: 7a5b37b8 Author: Albert Mingkun Yang Date: 2021-08-16 07:35:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7a5b37b8ca64650a8d23d64013bf49c9f3a60e2c 8272439: G1: add documentation to G1CardSetInlinePtr Co-authored-by: Thomas Schatzl Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp Changeset: 5db36ced Author: Hannes Walln?fer Date: 2021-08-16 07:46:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5db36cedc91d0954ececd309a5f8f59ea828f6c1 8272158: SoftReference related bugs under memory pressure Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java Changeset: 69cc588f Author: Albert Mingkun Yang Date: 2021-08-16 09:40:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/69cc588fce0aef3f6066f2ff313d5319b528d684 8272235: G1: update outdated code root fixup Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.cpp ! src/hotspot/share/gc/g1/g1GCPhaseTimes.hpp ! test/hotspot/jtreg/gc/g1/TestGCLogMessages.java Changeset: 83d0e128 Author: Ivan Walulya Date: 2021-08-16 13:08:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/83d0e128e362822584bb51b00576cb754f44e58b 8267833: Improve G1CardSetInlinePtr::add() Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSetContainers.hpp ! src/hotspot/share/gc/g1/g1CardSetContainers.inline.hpp Changeset: 0a03481a Author: Ivan Walulya Date: 2021-08-16 13:09:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0a03481a6566d59b21ea5f802cb1f0028531c9d8 8272231: G1: Refactor G1CardSet::get_card_set to return G1CardSetHashTableValue* Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/g1/g1CardSet.cpp ! src/hotspot/share/gc/g1/g1CardSet.hpp Changeset: 36777345 Author: Christian Hagedorn Date: 2021-08-16 14:51:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3677734584859e1b4bea65f6719e839f949c9236 8271471: [IR Framework] Rare occurrence of "" in PrintIdeal/PrintOptoAssembly can let tests fail Reviewed-by: kvn, thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/driver/IRMatcher.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestIRMatching.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestRunTests.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/TestScenarios.java + test/hotspot/jtreg/testlibrary_tests/ir_framework/tests/Utils.java Changeset: 82688258 Author: Brian Burkhalter Date: 2021-08-16 15:53:33 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/82688258f676e6be8a603f6ab744d52728e3478b 8272297: FileInputStream should override transferTo() for better performance Reviewed-by: alanb ! src/java.base/share/classes/java/io/FileInputStream.java + test/jdk/java/io/FileInputStream/TransferTo.java Changeset: b2c272d4 Author: Igor Ignatyev Date: 2021-08-16 16:56:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b2c272d4e21eb4aeb6c8e1c0be0d08943dc36db8 8272305: several hotspot runtime/modules don't check exit codes Reviewed-by: dholmes, mseledtsov ! test/hotspot/jtreg/runtime/modules/ClassLoaderNoUnnamedModuleTest.java ! test/hotspot/jtreg/runtime/modules/IgnoreModulePropertiesTest.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleCDS.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTraceCL.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpNoVisibility.java Changeset: ae45592d Author: Jonathan Gibbons Date: 2021-08-16 20:48:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ae45592d3304f50aa9e8e114416a41e7899fe37b 8272374: doclint should report missing "body" comments Reviewed-by: kcr, hannesw ! make/modules/java.desktop/Java.gmk ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties ! test/langtools/jdk/javadoc/tool/doclint/DocLintTest.java ! test/langtools/tools/doclint/AccessTest.java ! test/langtools/tools/doclint/CustomTagTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.java ! test/langtools/tools/doclint/EmptyAuthorTest.out + test/langtools/tools/doclint/EmptyDescriptionTest.java + test/langtools/tools/doclint/EmptyDescriptionTest.out ! test/langtools/tools/doclint/EmptyExceptionTest.java ! test/langtools/tools/doclint/EmptyExceptionTest.out ! test/langtools/tools/doclint/EmptyParamTest.java ! test/langtools/tools/doclint/EmptyParamTest.out ! test/langtools/tools/doclint/EmptyReturnTest.java ! test/langtools/tools/doclint/EmptyReturnTest.out ! test/langtools/tools/doclint/EmptySerialFieldTest.java ! test/langtools/tools/doclint/EmptySerialFieldTest.out ! test/langtools/tools/doclint/EmptySinceTest.java ! test/langtools/tools/doclint/EmptySinceTest.out ! test/langtools/tools/doclint/EmptyVersionTest.java ! test/langtools/tools/doclint/EmptyVersionTest.out ! test/langtools/tools/doclint/EndWithIdentifierTest.java ! test/langtools/tools/doclint/EndWithIdentifierTest.out ! test/langtools/tools/doclint/LambdaTest.java ! test/langtools/tools/doclint/LiteralTest.java ! test/langtools/tools/doclint/MissingParamsTest.java ! test/langtools/tools/doclint/MissingReturnTest.java ! test/langtools/tools/doclint/MissingThrowsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.java ! test/langtools/tools/doclint/MultipleDocLintOptionsTest.out ! test/langtools/tools/doclint/ReferenceTest.java ! test/langtools/tools/doclint/ReferenceTest.out ! test/langtools/tools/doclint/SyntaxTest.java ! test/langtools/tools/doclint/packageTests/bad/Test.java ! test/langtools/tools/doclint/tool/StatsTest.java ! test/langtools/tools/javac/doclint/DocLintTest.java Changeset: a5ad7720 Author: Rajat Mahajan Committer: Alexey Ivanov Date: 2021-08-16 22:24:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a5ad7720d235610ad45fc341c61f164805f82a54 8272342: [TEST_BUG] java/awt/print/PrinterJob/PageDialogMarginTest.java catches all exceptions Reviewed-by: aivanov, pbansal ! test/jdk/java/awt/print/PrinterJob/PageDialogMarginTest.java Changeset: 3fb19279 Author: Jonathan Gibbons Date: 2021-08-16 22:54:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/3fb19279da240ecabee04148ba8907f036450575 8271227: Missing `{@code }` in com.sun.source.* Reviewed-by: iris ! src/jdk.compiler/share/classes/com/sun/source/doctree/DocTreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/tree/TreeVisitor.java ! src/jdk.compiler/share/classes/com/sun/source/util/Trees.java Changeset: ee8bf10d Author: Zhengyu Gu Date: 2021-08-17 00:35:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ee8bf10d321da8a261ff4eda705cef753b4a7014 8272327: Shenandoah: Avoid enqueuing duplicate string candidates Reviewed-by: rkennke ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.inline.hpp Changeset: 989f39f8 Author: Igor Ignatyev Date: 2021-08-17 03:45:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/989f39f8106a22498053a4ca5f2becf8df5f2420 8272552: mark hotspot runtime/cds tests which ignore external VM flags Reviewed-by: mseledtsov, jiefu, dholmes, iklam ! test/hotspot/jtreg/runtime/cds/MaxMetaspaceSize.java ! test/hotspot/jtreg/runtime/cds/SharedStrings.java ! test/hotspot/jtreg/runtime/cds/appcds/MoveJDKTest.java ! test/hotspot/jtreg/runtime/cds/appcds/VerifyWithDefaultArchive.java ! test/hotspot/jtreg/runtime/cds/appcds/cacheObject/ArchivedModuleWithCustomImageTest.java ! test/hotspot/jtreg/runtime/cds/appcds/jcmd/JCmdTestDynamicDump.java Changeset: df1427b7 Author: Stefan Karlsson Date: 2021-08-17 06:36:09 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/df1427b72ba1d02d440018a4f6f8a287fecad460 8272446: C1: Raw version of UnsafeGet generates load barriers Reviewed-by: eosterlund, iveresov ! src/hotspot/share/c1/c1_LIRGenerator.cpp Changeset: c5c84b8f Author: lawrence.andrews Committer: Prasanta Sadhukhan Date: 2021-08-17 07:44:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c5c84b8fdc0d52bc45ed7290011b39337f3bbe35 8270312: Error: Not a test or directory containing tests: java/awt/print/PrinterJob/XparColor.java Reviewed-by: psadhukhan, jdv ! test/jdk/java/awt/print/PrinterJob/XparColor.java Changeset: 0e3fde6c Author: Hannes Walln?fer Date: 2021-08-17 08:29:49 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0e3fde6c3c2f5c05777b79ff5eb1188014269b0f 8264274: Block tags in overview.html are ignored Reviewed-by: jjg ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractOverviewIndexWriter.java ! test/langtools/jdk/javadoc/doclet/testOverview/TestOverview.java ! test/langtools/jdk/javadoc/doclet/testOverview/overview.html Changeset: ed57cf1c Author: Abdul Kolarkunnu Date: 2021-08-17 12:12:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ed57cf1cf3f2d107e085ecdae38a63e66ab2fa30 8266182: Automate manual steps listed in the test jdk/sun/security/pkcs12/ParamsTest.java Reviewed-by: hchao, ssahoo, xuelei, weijun + test/jdk/sun/security/pkcs12/KeytoolOpensslInteropTest.java - test/jdk/sun/security/pkcs12/ParamsTest.java + test/lib/jdk/test/lib/artifacts/OpensslArtifactFetcher.java Changeset: 2aaf7952 Author: Albert Mingkun Yang Date: 2021-08-17 12:42:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2aaf795270eb07eb155df9a7f5e1d6901f09d8f0 8272520: Inline GenericTaskQueue::initialize() to the constructor Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1FullGCMarker.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/gc/shared/taskqueue.hpp ! src/hotspot/share/gc/shared/taskqueue.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMarkingContext.cpp ! src/hotspot/share/gc/z/zHeapIterator.cpp Changeset: 2ed7b709 Author: Albert Mingkun Yang Date: 2021-08-17 12:42:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ed7b709a197f009632580b17e3b1df34c1ffeb7 8272521: Remove unused PSPromotionManager::_claimed_stack_breadth Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/parallel/psPromotionManager.hpp Changeset: cf64c3e7 Author: Jim Laskey Date: 2021-08-17 15:53:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/cf64c3e7e226eacf675d984db52872b0a8343a46 8272326: java/util/Random/RandomTestMoments.java had two Gaussian fails Reviewed-by: rriggs, bpb ! test/jdk/java/util/Random/RandomTestChiSquared.java ! test/jdk/java/util/Random/RandomTestMoments.java Changeset: 1cbf41a8 Author: Rajan Halade Date: 2021-08-17 16:01:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1cbf41a87b153c010c51fdbae832e00314422193 8225083: Remove Google certificate that is expiring in December 2021 Reviewed-by: xuelei, mullan - make/data/cacerts/globalsignr2ca ! test/jdk/sun/security/lib/cacerts/VerifyCACerts.java Changeset: a199ebc0 Author: Abdul Kolarkunnu Date: 2021-08-17 16:54:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a199ebc0175f9882f051551cff9ce08016f204a4 8272581: sun/security/pkcs11/Provider/MultipleLogins.sh fails after JDK-8266182 Reviewed-by: weijun ! test/jdk/sun/security/pkcs12/KeytoolOpensslInteropTest.java = test/lib/jdk/test/lib/security/OpensslArtifactFetcher.java Changeset: a68b5b9c Author: Brian Burkhalter Date: 2021-08-17 17:07:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a68b5b9c1dd9dd69fa3ef29d8f1186707ec09311 8272369: java/io/File/GetXSpace.java failed with "RuntimeException: java.nio.file.NoSuchFileException: /run/user/0" Reviewed-by: alanb ! test/jdk/java/io/File/GetXSpace.java Changeset: 05d64da7 Author: Igor Ignatyev Date: 2021-08-17 19:36:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/05d64da7f32e5960550d5ec76fa2fba5c972d9b3 8272291: mark hotspot runtime/logging tests which ignore external VM flags Reviewed-by: mseledtsov, dholmes ! test/hotspot/jtreg/runtime/logging/ClassInitializationTest.java ! test/hotspot/jtreg/runtime/logging/ClassLoadUnloadTest.java ! test/hotspot/jtreg/runtime/logging/ClassResolutionTest.java ! test/hotspot/jtreg/runtime/logging/CompressedOopsTest.java ! test/hotspot/jtreg/runtime/logging/CondyIndyTest.java ! test/hotspot/jtreg/runtime/logging/DefaultMethodsTest.java ! test/hotspot/jtreg/runtime/logging/ExceptionsTest.java ! test/hotspot/jtreg/runtime/logging/ItablesTest.java ! test/hotspot/jtreg/runtime/logging/LoaderConstraintsTest.java ! test/hotspot/jtreg/runtime/logging/ModulesTest.java ! test/hotspot/jtreg/runtime/logging/MonitorInflationTest.java ! test/hotspot/jtreg/runtime/logging/MonitorMismatchTest.java ! test/hotspot/jtreg/runtime/logging/OsCpuLoggingTest.java ! test/hotspot/jtreg/runtime/logging/ProtectionDomainVerificationTest.java ! test/hotspot/jtreg/runtime/logging/SafepointCleanupTest.java ! test/hotspot/jtreg/runtime/logging/SafepointTest.java ! test/hotspot/jtreg/runtime/logging/StackWalkTest.java ! test/hotspot/jtreg/runtime/logging/StartupTimeTest.java ! test/hotspot/jtreg/runtime/logging/ThreadLoggingTest.java ! test/hotspot/jtreg/runtime/logging/VMOperationTest.java ! test/hotspot/jtreg/runtime/logging/VerificationTest.java ! test/hotspot/jtreg/runtime/logging/VtablesTest.java ! test/hotspot/jtreg/runtime/logging/loadLibraryTest/LoadLibraryTest.java Changeset: fe721971 Author: Igor Ignatyev Date: 2021-08-17 19:37:45 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fe7219710243dbb3b5bc4ad6ef3e93d0d203d4f7 8272551: mark hotspot runtime/modules tests which ignore external VM flags Reviewed-by: mseledtsov, jiefu ! test/hotspot/jtreg/runtime/modules/ClassLoaderNoUnnamedModuleTest.java ! test/hotspot/jtreg/runtime/modules/IgnoreModulePropertiesTest.java ! test/hotspot/jtreg/runtime/modules/ModuleOptionsTest.java ! test/hotspot/jtreg/runtime/modules/ModuleOptionsWarn.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ExportModuleStressTest.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStress.java ! test/hotspot/jtreg/runtime/modules/ModuleStress/ModuleStressGC.java ! test/hotspot/jtreg/runtime/modules/ModulesSymLink.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModule2Dirs.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleCDS.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleDupJavaBase.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleDupModule.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleJavaBase.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTest.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTestJar.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTestJarDir.java ! test/hotspot/jtreg/runtime/modules/PatchModule/PatchModuleTraceCL.java ! test/hotspot/jtreg/runtime/modules/Visibility/PatchModuleVisibility.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpNoVisibility.java ! test/hotspot/jtreg/runtime/modules/Visibility/XbootcpVisibility.java Changeset: 14623cde Author: Vicente Romero Date: 2021-08-17 20:47:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/14623cde3a20962e902043b556c5058ac208711f 8270835: regression after JDK-8261006 Reviewed-by: jlahoda ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java ! src/jdk.compiler/share/classes/com/sun/tools/javac/comp/AttrContext.java + test/langtools/tools/javac/cantReferenceBeforeCtor/CantReferenceBeforeConstructorTest.java + test/langtools/tools/javac/cantReferenceBeforeCtor/CantReferenceBeforeConstructorTest.out Changeset: ec63957f Author: Mikhailo Seledtsov Date: 2021-08-17 23:22:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ec63957f9d103e86d3b8e235e79cabb8992cb3ca 8272398: Update DockerTestUtils.buildJdkDockerImage() Reviewed-by: iignatyev, hseigel ! test/hotspot/jtreg/containers/docker/DockerBasicTest.java ! test/hotspot/jtreg/containers/docker/TestCPUAwareness.java ! test/hotspot/jtreg/containers/docker/TestCPUSets.java ! test/hotspot/jtreg/containers/docker/TestJFREvents.java ! test/hotspot/jtreg/containers/docker/TestJFRNetworkEvents.java ! test/hotspot/jtreg/containers/docker/TestJFRWithJMX.java ! test/hotspot/jtreg/containers/docker/TestJcmdWithSideCar.java ! test/hotspot/jtreg/containers/docker/TestMemoryAwareness.java ! test/hotspot/jtreg/containers/docker/TestMisc.java ! test/hotspot/jtreg/containers/docker/TestPids.java ! test/jdk/jdk/internal/platform/docker/TestDockerCpuMetrics.java ! test/jdk/jdk/internal/platform/docker/TestDockerMemoryMetrics.java ! test/jdk/jdk/internal/platform/docker/TestGetFreeSwapSpaceSize.java ! test/jdk/jdk/internal/platform/docker/TestPidsLimit.java ! test/jdk/jdk/internal/platform/docker/TestSystemMetrics.java ! test/jdk/jdk/internal/platform/docker/TestUseContainerSupport.java ! test/lib/jdk/test/lib/containers/docker/DockerTestUtils.java Changeset: 5189047d Author: Tobias Hartmann Date: 2021-08-18 04:47:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/5189047d09e976cfd17d4ab5ec12097c242f3435 8272558: IR Test Framework README misses some flags Reviewed-by: chagedorn ! test/hotspot/jtreg/compiler/lib/ir_framework/README.md Changeset: 481c1f05 Author: Alexander Zuev Date: 2021-08-18 05:48:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/481c1f0549e361e8e83fcf0530acc4ebdb60104b 8269951: [macos] Focus not painted in JButton when setBorderPainted(false) is invoked Reviewed-by: serb, psadhukhan ! src/java.desktop/macosx/classes/com/apple/laf/AquaButtonUI.java + test/jdk/javax/swing/plaf/aqua/AquaButtonFocusTest.java Changeset: 79a06df8 Author: Christian Hagedorn Date: 2021-08-18 06:39:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/79a06df8113ba1da55db5c38fe34608c3507c223 8272567: [IR Framework] Make AbstractInfo.getRandom() static Reviewed-by: thartmann ! test/hotspot/jtreg/compiler/lib/ir_framework/AbstractInfo.java ! test/hotspot/jtreg/testlibrary_tests/ir_framework/examples/CustomRunTestExample.java Changeset: e8f1219d Author: Vladimir Ivanov Date: 2021-08-18 10:31:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e8f1219d6f471c89fe15b19c56e3062dd668466f 8271276: C2: Wrong JVM state used for receiver null check Reviewed-by: kvn, thartmann ! src/hotspot/share/opto/callGenerator.cpp + test/hotspot/jtreg/compiler/inlining/LateInlineVirtualNullReceiverCheck.java Changeset: 30b0f820 Author: Claes Redestad Date: 2021-08-18 10:47:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/30b0f820cec12b6da62229fe78a528ab3ad0d134 8272626: Avoid C-style array declarations in java.* Reviewed-by: dfuchs, alanb ! src/java.base/share/classes/java/io/BufferedInputStream.java ! src/java.base/share/classes/java/io/BufferedOutputStream.java ! src/java.base/share/classes/java/io/BufferedWriter.java ! src/java.base/share/classes/java/io/ByteArrayInputStream.java ! src/java.base/share/classes/java/io/ByteArrayOutputStream.java ! src/java.base/share/classes/java/io/CharArrayWriter.java ! src/java.base/share/classes/java/io/Console.java ! src/java.base/share/classes/java/io/DataInput.java ! src/java.base/share/classes/java/io/DataInputStream.java ! src/java.base/share/classes/java/io/DataOutput.java ! src/java.base/share/classes/java/io/DataOutputStream.java ! src/java.base/share/classes/java/io/FileInputStream.java ! src/java.base/share/classes/java/io/FileOutputStream.java ! src/java.base/share/classes/java/io/FilterInputStream.java ! src/java.base/share/classes/java/io/FilterOutputStream.java ! src/java.base/share/classes/java/io/FilterWriter.java ! src/java.base/share/classes/java/io/InputStream.java ! src/java.base/share/classes/java/io/LineNumberInputStream.java ! src/java.base/share/classes/java/io/LineNumberReader.java ! src/java.base/share/classes/java/io/ObjectInput.java ! src/java.base/share/classes/java/io/ObjectOutput.java ! src/java.base/share/classes/java/io/OutputStream.java ! src/java.base/share/classes/java/io/OutputStreamWriter.java ! src/java.base/share/classes/java/io/PipedInputStream.java ! src/java.base/share/classes/java/io/PipedOutputStream.java ! src/java.base/share/classes/java/io/PipedReader.java ! src/java.base/share/classes/java/io/PipedWriter.java ! src/java.base/share/classes/java/io/PrintStream.java ! src/java.base/share/classes/java/io/PrintWriter.java ! src/java.base/share/classes/java/io/RandomAccessFile.java ! src/java.base/share/classes/java/io/SequenceInputStream.java ! src/java.base/share/classes/java/io/StringBufferInputStream.java ! src/java.base/share/classes/java/io/StringWriter.java ! src/java.base/share/classes/java/io/Writer.java ! src/java.base/share/classes/java/lang/Runtime.java ! src/java.base/share/classes/java/lang/String.java ! src/java.base/share/classes/java/lang/StringBuffer.java ! src/java.base/share/classes/java/lang/StringLatin1.java ! src/java.base/share/classes/java/lang/StringUTF16.java ! src/java.base/share/classes/java/lang/Thread.java ! src/java.base/share/classes/java/lang/ThreadGroup.java ! src/java.base/share/classes/java/math/BigInteger.java ! src/java.base/share/classes/java/net/DatagramPacket.java ! src/java.base/share/classes/java/net/Inet4Address.java ! src/java.base/share/classes/java/net/Inet6Address.java ! src/java.base/share/classes/java/net/Socket.java ! src/java.base/share/classes/java/net/URLConnection.java ! src/java.base/share/classes/java/text/ChoiceFormat.java ! src/java.base/share/classes/java/text/DecimalFormat.java ! src/java.base/share/classes/java/util/Arrays.java ! src/java.base/share/classes/java/util/jar/JarVerifier.java ! src/java.base/share/classes/java/util/regex/Matcher.java ! src/java.base/share/classes/java/util/zip/ZipFile.java ! src/java.base/share/classes/java/util/zip/ZipUtils.java Changeset: 4d6593ce Author: Harold Seigel Date: 2021-08-18 14:24:58 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4d6593ce0243457e7431a5990957a8f880e0a3fb 8272124: Cgroup v1 initialization causes NullPointerException when cgroup path contains colon Reviewed-by: mseledtsov, sgehwolf ! src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java ! test/jdk/jdk/internal/platform/cgroup/TestCgroupSubsystemFactory.java Changeset: 96107e31 Author: Vladimir Ivanov Date: 2021-08-18 16:45:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/96107e31dfe115fc102fa54d7bdd523c8a79ff76 8272573: Redundant unique_concrete_method_4 dependencies Reviewed-by: kvn, thartmann ! src/hotspot/share/code/dependencies.cpp Changeset: 73da66ff Author: Ralf Schmelter Date: 2021-08-18 18:30:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/73da66ffb707abf6dc38368a12e337d52597de25 8272318: Improve performance of HeapDumpAllTest Reviewed-by: lucy, sspitsyn ! test/hotspot/jtreg/serviceability/dcmd/gc/HeapDumpAllTest.java Changeset: 6d3d4795 Author: Jonathan Gibbons Date: 2021-08-18 23:40:44 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6d3d47957ef03c90ed3b1cb7a48902366cd1bc27 8272667: substandard error messages from the docs build Reviewed-by: darcy, iris ! make/common/ProcessMarkdown.gmk Changeset: 1c80f078 Author: Julia Boes Date: 2021-08-19 09:09:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1c80f078f61a53ee80640e76a9af86f9b16a0618 8272334: com.sun.net.httpserver.HttpExchange: Improve API doc of getRequestHeaders Reviewed-by: dfuchs, michaelm, chegar ! src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java Changeset: 82b2f21d Author: Albert Mingkun Yang Date: 2021-08-19 09:55:51 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/82b2f21d17828546f154cf31d174e26d0944530f 8272579: G1: remove unnecesary null check for G1ParScanThreadStateSet::_states slots Reviewed-by: iwalulya, kbarrett, sjohanss ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: ab418129 Author: Albert Mingkun Yang Date: 2021-08-19 09:56:32 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ab41812951aad9d44fb475d3a8c94b65d9e22b20 8272576: G1: Use more accurate integer type for collection set length Reviewed-by: iwalulya, sjohanss ! src/hotspot/share/gc/g1/g1CollectionSet.cpp ! src/hotspot/share/gc/g1/g1CollectionSet.hpp Changeset: 03b5e99d Author: Roman Kennke Date: 2021-08-19 10:16:55 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/03b5e99d998e037f84e9e2395b49321979c0acd8 8272165: Consolidate mark_must_be_preserved() variants Reviewed-by: tschatzl ! src/hotspot/share/gc/shared/preservedMarks.inline.hpp ! src/hotspot/share/oops/markWord.hpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: 51c1b9a6 Author: Andrey Turbanov Committer: Brian Burkhalter Date: 2021-08-19 15:57:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/51c1b9a6870bd9644e92227e47082a53e2d1c066 8272616: Strange code in java.text.DecimalFormat#applyPattern Reviewed-by: bpb, naoto, iris ! src/java.base/share/classes/java/text/DecimalFormat.java Changeset: 9569159d Author: Weijun Wang Date: 2021-08-19 19:02:22 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9569159d2552d6079cd039b602264a324dcdfe49 8272674: Logging missing keytab file in Krb5LoginModule Reviewed-by: coffeys ! src/java.security.jgss/share/classes/sun/security/krb5/internal/ktab/KeyTab.java Changeset: 7eccbd4f Author: Roman Kennke Date: 2021-08-19 19:50:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7eccbd4fde58ea36d6a21a2c4ffa3bc5d0b38c10 8266519: Cleanup resolve() leftovers from BarrierSet et al Reviewed-by: kbarrett, stefank ! src/hotspot/share/gc/shared/barrierSet.hpp ! src/hotspot/share/oops/access.hpp ! src/hotspot/share/oops/access.inline.hpp ! src/hotspot/share/oops/accessBackend.hpp Changeset: b40e8f0f Author: Roman Kennke Date: 2021-08-19 19:51:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b40e8f0f9e719f28cf128d74d834233860e4ab67 8271951: Consolidate preserved marks overflow stack in SerialGC Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp Changeset: f4be211a Author: Roman Kennke Date: 2021-08-19 19:54:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f4be211ae290824cb6c678dcdff0df91a20117d6 8270041: Consolidate oopDesc::cas_forward_to() and oopDesc::forward_to_atomic() Reviewed-by: stefank, kbarrett ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/oops/oop.hpp ! src/hotspot/share/oops/oop.inline.hpp Changeset: d007be09 Author: Jie Fu Date: 2021-08-19 23:11:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d007be0952abdc8beb7b68ebf7529a939162307b 8272700: [macos] Build failure with Xcode 13.0 after JDK-8264848 Reviewed-by: dholmes ! make/autoconf/flags-other.m4 Changeset: ddcd851c Author: Phil Race Date: 2021-08-20 00:08:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ddcd851c43aa97477c7e406490c0c7c7d71ac629 8272602: [macos] not all KEY_PRESSED events sent when control modifier is used Reviewed-by: kizune ! src/java.desktop/macosx/native/libosxapp/JNIUtilities.m + test/jdk/java/awt/event/KeyEvent/KeyTyped/CtrlSpace.java Changeset: 4bd37c31 Author: Thejasvi Voniadka Committer: Abdul Kolarkunnu Date: 2021-08-20 03:15:04 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/4bd37c315333325b69db8d55c0c3aaf74c95024f 8272708: [Test]: Cleanup: test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java no longer needs ocspEnabled Reviewed-by: rhalade ! test/jdk/security/infra/java/security/cert/CertPathValidator/certification/BuypassCA.java Changeset: a81e5e93 Author: Aleksey Shipilev Date: 2021-08-20 07:34:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a81e5e9353a635a2307ff4e5de8a304c14f08047 8272654: Mark word accesses should not use Access API Reviewed-by: stefank, rkennke, eosterlund ! src/hotspot/share/oops/oop.inline.hpp Changeset: db9834ff Author: Daniel Fuchs Date: 2021-08-20 09:05:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/db9834ff82ce477e5c38c8873d39f54882627746 8258951: java/net/httpclient/HandshakeFailureTest.java failed with "RuntimeException: Not found expected SSLHandshakeException in java.io.IOException" Reviewed-by: chegar ! src/java.net.http/share/classes/jdk/internal/net/http/Http2Connection.java ! test/jdk/java/net/httpclient/HandshakeFailureTest.java Changeset: 92bde673 Author: Roman Kennke Date: 2021-08-20 10:12:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/92bde6738a8984000ffdef010228d5117b2d8313 8271946: Cleanup leftovers in Space and subclasses Reviewed-by: stefank, tschatzl ! src/hotspot/share/gc/shared/space.cpp ! src/hotspot/share/gc/shared/space.hpp ! src/hotspot/share/gc/shared/space.inline.hpp Changeset: 451a4620 Author: duke Date: 2021-08-20 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/451a4620903fe1d19c04f837f41f8886f52bc092 Automatic merge of jdk:master into master Changeset: 40b7c48d Author: duke Date: 2021-08-20 11:00:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/40b7c48d94e62f9d80b12140ad4f0db653daacd6 Automatic merge of master into foreign-memaccess+abi From jbhateja at openjdk.java.net Mon Aug 23 02:53:16 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 23 Aug 2021 02:53:16 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v8] In-Reply-To: References: Message-ID: On Thu, 19 Aug 2021 21:38:33 GMT, Sandhya Viswanathan wrote: >> Jatin Bhateja has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 11 commits: >> >> - 8270349: Jcheck error resolution (extra white space) >> - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 >> - 8270349: Optimizing JIT sequence for alltrue/anytrue and maskAll operations. >> - 8270349: Minor fix missed in last checkin. >> - 8270349: Review comments resolution. >> - 8270349: Review comments resolution. >> - 8270349: Review comments resolution. >> - Merge branch 'vectorIntrinsics+mask' of http://github.com/openjdk/panama-vector into JDK-8270349 >> - 8270349: Merge with latest vectorIntrinsics+mask tip + extend backend support for XorV,AndV,OrV and Compare masked operations. >> - 8270349: Fix for 32-bit build failure. >> - ... and 1 more: https://git.openjdk.java.net/panama-vector/compare/c1950c63...b001f939 > > src/hotspot/cpu/x86/x86.ad line 7256: > >> 7254: predicate(UseAVX > 2 && >> 7255: (VM_Version::supports_avx512vl() || >> 7256: Matcher::vector_length_in_bytes(n->in(1)->in(1)) == 64) && // src1 > > This doesn't look correct. This instruct sets vec dst, whereas with avx512vl kReg dst is expected. > Should have been: > !VM_Version::supports_avx512vl() && > vector_length_in_bytes(n->in(1)->in(1)) == 64 && Yes this new pattern was added specifically for 64 byte unsigned/signed comparisons (will apply to integral types only) for targets which do not support VL extensions. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Mon Aug 23 09:59:32 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 23 Aug 2021 09:59:32 GMT Subject: [vectorIntrinsics+mask] RFR: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. [v9] In-Reply-To: References: Message-ID: > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8270349: Strengthening vector mask reinterpretation predications. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/99/files - new: https://git.openjdk.java.net/panama-vector/pull/99/files/b001f939..cc6530fc Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=08 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=99&range=07-08 Stats: 17 lines in 2 files changed: 11 ins; 0 del; 6 mod Patch: https://git.openjdk.java.net/panama-vector/pull/99.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/99/head:pull/99 PR: https://git.openjdk.java.net/panama-vector/pull/99 From jbhateja at openjdk.java.net Mon Aug 23 09:59:32 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 23 Aug 2021 09:59:32 GMT Subject: [vectorIntrinsics+mask] Integrated: 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. In-Reply-To: References: Message-ID: On Thu, 22 Jul 2021 06:31:06 GMT, Jatin Bhateja wrote: > Intel targets supporting AVX512 feature offer predicated vector instructions. These are vector operations on selected vector lanes under the influence of opmask register. For non-AVX512 targets, masked vector operations are supported using an explicit vector blend operation after main vector operation which does the needed selection. > > This patch adds initial X86 backed support for predicated vector operations. > > Following is performance data for existing VectorAPI JMH benchmarks with the patch: > Test System: Intel(R) Xeon(R) Platinum 8380 CPU @ 2.30GHz (Icelake server 40C 2S) > > Benchmark | SIZE | Baseline (ops/ms) | WithOpts (ops/ms) | Gain > -- | -- | -- | -- | -- > Int512Vector.ABSMasked | 1024 | 10132.664 | 10394.942 | 1.025884407 > Int512Vector.ADDMasked | 1024 | 7785.805 | 8980.133 | 1.153398139 > Int512Vector.ADDMaskedLanes | 1024 | 5809.455 | 6350.628 | 1.093153833 > Int512Vector.ANDMasked | 1024 | 7776.729 | 8965.988 | 1.152925349 > Int512Vector.ANDMaskedLanes | 1024 | 6717.202 | 7426.217 | 1.105552133 > Int512Vector.AND_NOTMasked | 1024 | 7688.835 | 8988.659 | 1.169053439 > Int512Vector.ASHRMasked | 1024 | 6808.185 | 7883.755 | 1.1579819 > Int512Vector.ASHRMaskedShift | 1024 | 9523.164 | 12166.72 | 1.277592195 > Int512Vector.BITWISE_BLENDMasked | 1024 | 5919.647 | 6864.988 | 1.159695502 > Int512Vector.DIVMasked | 1024 | 237.174 | 236.014 | 0.995109076 > Int512Vector.FIRST_NONZEROMasked | 1024 | 5387.315 | 7890.42 | 1.464629412 > Int512Vector.LSHLMasked | 1024 | 6806.898 | 7881.315 | 1.157842383 > Int512Vector.LSHLMaskedShift | 1024 | 9552.257 | 12153.769 | 1.272345269 > Int512Vector.LSHRMasked | 1024 | 6776.605 | 7897.786 | 1.165448776 > Int512Vector.LSHRMaskedShift | 1024 | 9500.087 | 12134.962 | 1.277352723 > Int512Vector.MAXMaskedLanes | 1024 | 6993.149 | 7580.399 | 1.083975045 > Int512Vector.MINMaskedLanes | 1024 | 6925.363 | 7450.814 | 1.075873424 > Int512Vector.MULMasked | 1024 | 7732.753 | 8956.02 | 1.158192949 > Int512Vector.MULMaskedLanes | 1024 | 4066.384 | 4152.375 | 1.021146798 > Int512Vector.NEGMasked | 1024 | 8760.797 | 9255.063 | 1.056417926 > Int512Vector.NOTMasked | 1024 | 8981.123 | 9229.573 | 1.027663578 > Int512Vector.ORMasked | 1024 | 7786.787 | 8967.057 | 1.151573428 > Int512Vector.ORMaskedLanes | 1024 | 6694.36 | 7450.106 | 1.112892943 > Int512Vector.SUBMasked | 1024 | 7782.939 | 9001.692 | 1.156592901 > Int512Vector.XORMasked | 1024 | 7785.031 | 9070.342 | 1.165100306 > Int512Vector.XORMaskedLanes | 1024 | 6700.689 | 7454.73 | 1.112531861 > Int512Vector.ZOMOMasked | 1024 | 6982.297 | 8313.51 | 1.190655453 > Int512Vector.gatherMasked | 1024 | 361.497 | 1494.876 | 4.135237637 > Int512Vector.scatterMasked | 1024 | 490.05 | 3120.425 | 6.367564534 > Int512Vector.sliceMasked | 1024 | 1436.248 | 1597.805 | 1.112485448 > Int512Vector.unsliceMasked | 1024 | 296.721 | 346.434 | 1.167541226 > Float512Vector.ADDMasked | 1024 | 7645.873 | 9123.386 | 1.193243205 > Float512Vector.ADDMaskedLanes | 1024 | 2404.371 | 2529.284 | 1.051952465 > Float512Vector.DIVMasked | 1024 | 5134.602 | 5129.085 | 0.998925525 > Float512Vector.FIRST_NONZEROMasked | 1024 | 5040.567 | 7078.828 | 1.404371373 > Float512Vector.FMAMasked | 1024 | 5996.419 | 6902.626 | 1.151124696 > Float512Vector.MAXMaskedLanes | 1024 | 1681.249 | 1727.444 | 1.027476596 > Float512Vector.MINMaskedLanes | 1024 | 1610.115 | 1667.143 | 1.035418588 > Float512Vector.MULMasked | 1024 | 7812.317 | 9054.137 | 1.158956683 > Float512Vector.MULMaskedLanes | 1024 | 2406.81 | 2514.018 | 1.044543608 > Float512Vector.NEGMasked | 1024 | 8248.933 | 9834.607 | 1.192227771 > Float512Vector.SQRTMasked | 1024 | 4278.046 | 4281.009 | 1.000692606 > Float512Vector.SUBMasked | 1024 | 7697.582 | 9044.305 | 1.174954031 > Float512Vector.gatherMasked | 1024 | 428.428 | 1491.441 | 3.48119404 > Float512Vector.scatterMasked | 1024 | 416.169 | 3216.628 | 7.729138883 > Float512Vector.sliceMasked | 1024 | 1431.07 | 1609.12 | 1.124417394 > Float512Vector.unsliceMasked | 1024 | 292.513 | 331.366 | 1.132824866 > > > > PS: Above data shows the performance gains for two vector species Int512, Float512. In general for all the species we see 1.2-2.x gains on various masking operation supported uptill now. > New matcher routine `Matcher::match_rule_supported_vector_masked` lists making operations supported by this patch. This pull request has now been integrated. Changeset: 60aa8ca6 Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/60aa8ca6dc0b3f1a3ee517db167f9660012858cd Stats: 3419 lines in 18 files changed: 3243 ins; 70 del; 106 mod 8270349: Initial X86 backend support for optimizing masking operations on AVX512 targets. Reviewed-by: sviswanathan ------------- PR: https://git.openjdk.java.net/panama-vector/pull/99 From carl.dea at gmail.com Mon Aug 23 04:25:24 2021 From: carl.dea at gmail.com (carl dea) Date: Mon, 23 Aug 2021 00:25:24 -0400 Subject: How do you use jextract for two or more header files? Message-ID: Panama Dev team, I'm trying to use jextract for stdio.h and time.h, but getting compile issues when the target (-t) name space is the same such as *-t org.unix* *jextract stdio.h* # jextract stdio.h jextract --source -d generated/src -t org.unix \ -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h *jextract time.h* # jextract time.h jextract --source -d generated/src -t org.unix \ -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h *Compile source* javac -d classes generated/src/org/unix/*.java *Compile Error* The following compile errors (87 errors) generated/src/org/unix/stdio_h.java:732: error: cannot find symbol return RuntimeHelper.requireNonNull(constants$0.renameat$MH,"renameat"); ^ symbol: variable renameat$MH location: class constants$0 generated/src/org/unix/stdio_h.java:735: error: cannot find symbol ... *Workaround (change namespace)* My workaround is making time.h 's target namespace to *-t org.unix.time*. When I'm in the IDE and using Panama the source code looks like the following import static org.unix.stdio_h.*; import static org.unix.time.time_h.*; import org.unix.time.tm; ... // more code localtime_r(now2, pTmStruct); Is there a better way to perform a jextract on two more headers? This example uses both stdio.h and time.h https://github.com/carldea/panama4newbies/blob/main/part03/src/PanamaTime.java Thank you, Carl -- *Carl Dea* Email: carldea at gmail.com Website: https://carlfx.wordpress.com Twitter: @carldea From paul.sandoz at oracle.com Mon Aug 23 18:13:36 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Mon, 23 Aug 2021 18:13:36 +0000 Subject: How do you use jextract for two or more header files? In-Reply-To: References: Message-ID: <61139383-B528-4645-8E3B-375DED9B22B0@oracle.com> Hi Carl, Generating separately will overwrite common generated artifacts (in this case the constants classes). Create your own header file with the following content: #include #include Then run jextract using that header file as input. Paul. > On Aug 22, 2021, at 9:25 PM, carl dea wrote: > > Panama Dev team, > > I'm trying to use jextract for stdio.h and time.h, but getting compile > issues when the target (-t) name space is the same such as *-t org.unix* > *jextract stdio.h* > > # jextract stdio.h > jextract --source -d generated/src -t org.unix \ > -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include > \ > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h > > *jextract time.h* > > # jextract time.h > jextract --source -d generated/src -t org.unix \ > -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include > \ > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h > > *Compile source* > > javac -d classes generated/src/org/unix/*.java > > > *Compile Error* > The following compile errors (87 errors) > generated/src/org/unix/stdio_h.java:732: error: cannot find symbol > return > RuntimeHelper.requireNonNull(constants$0.renameat$MH,"renameat"); > ^ > symbol: variable renameat$MH > location: class constants$0 > generated/src/org/unix/stdio_h.java:735: error: cannot find symbol > ... > > *Workaround (change namespace)* > My workaround is making time.h 's target namespace to *-t org.unix.time*. > When I'm in the IDE and using Panama the source code looks like the > following > > import static org.unix.stdio_h.*; > import static org.unix.time.time_h.*; > > import org.unix.time.tm; > ... > // more code > localtime_r(now2, pTmStruct); > > Is there a better way to perform a jextract on two more headers? > > This example uses both stdio.h and time.h > https://github.com/carldea/panama4newbies/blob/main/part03/src/PanamaTime.java > > > Thank you, > Carl > > -- > *Carl Dea* > Email: carldea at gmail.com > Website: https://carlfx.wordpress.com > Twitter: @carldea From maurizio.cimadamore at oracle.com Tue Aug 24 10:06:44 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 24 Aug 2021 11:06:44 +0100 Subject: Java primitive arrays with non-native ByteOrder? In-Reply-To: References: Message-ID: <3f2ca3f8-ac3b-eeda-9dd4-6668f96cf99d@oracle.com> On 14/08/2021 05:38, leerho wrote: > All, > > Can anyone think of cases where it would be desirable to load a Java > primitive array with non-native byte order values? Assume that all reading > and writing to such an array by the user would always use the non-native > byte order. As for the use case, the main use case we're after with byte order is serialization. A lot of message protocols use, for better or worse, BigEndian as the default representation. The ByteBuffer API also uses that as its default polarity. So, if you store an array of doubles in a mapped file, with big endian order, and later you want to read it, you need "swappy" primitives. > > The integral types should always be valid, but doubles and floats could > become illegal IEEE 754 bit layouts if something in the JVM were to examine > them. Assume that the user would not use any of the built-in static > methods like isNaN(double), etc. > > Would this cause any problems in the JVM? What you say is true - swapping doubles and floats could lead to troubles, but this is already possible in the ByteBuffer API (as noted above) so I don't think this problem is specific to this API? Maurizio > > Has anyone done this? > > Cheers, > > Lee. From carl.dea at gmail.com Tue Aug 24 14:17:42 2021 From: carl.dea at gmail.com (Carl Dea) Date: Tue, 24 Aug 2021 10:17:42 -0400 Subject: How do you use jextract for two or more header files? In-Reply-To: <61139383-B528-4645-8E3B-375DED9B22B0@oracle.com> References: <61139383-B528-4645-8E3B-375DED9B22B0@oracle.com> Message-ID: <829753AA-7949-41DB-881D-901300DCCAC8@gmail.com> Paul, Excellent! Yes others have mentioned this technique. Although it works rather well, the imports will have a header?s name: For example: foo.h After jextract it?s import org.unix.foo_h.*; Not a deal breaker, but just thought it might be noted in docs. Thank you, Carl Sent from my iPhone > On Aug 23, 2021, at 2:13 PM, Paul Sandoz wrote: > > ?Hi Carl, > > Generating separately will overwrite common generated artifacts (in this case the constants classes). > > Create your own header file with the following content: > > #include > #include > > Then run jextract using that header file as input. > > Paul. > >> On Aug 22, 2021, at 9:25 PM, carl dea wrote: >> >> Panama Dev team, >> >> I'm trying to use jextract for stdio.h and time.h, but getting compile >> issues when the target (-t) name space is the same such as *-t org.unix* >> *jextract stdio.h* >> >> # jextract stdio.h >> jextract --source -d generated/src -t org.unix \ >> -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include >> \ >> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h >> >> *jextract time.h* >> >> # jextract time.h >> jextract --source -d generated/src -t org.unix \ >> -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include >> \ >> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h >> >> *Compile source* >> >> javac -d classes generated/src/org/unix/*.java >> >> >> *Compile Error* >> The following compile errors (87 errors) >> generated/src/org/unix/stdio_h.java:732: error: cannot find symbol >> return >> RuntimeHelper.requireNonNull(constants$0.renameat$MH,"renameat"); >> ^ >> symbol: variable renameat$MH >> location: class constants$0 >> generated/src/org/unix/stdio_h.java:735: error: cannot find symbol >> ... >> >> *Workaround (change namespace)* >> My workaround is making time.h 's target namespace to *-t org.unix.time*. >> When I'm in the IDE and using Panama the source code looks like the >> following >> >> import static org.unix.stdio_h.*; >> import static org.unix.time.time_h.*; >> >> import org.unix.time.tm; >> ... >> // more code >> localtime_r(now2, pTmStruct); >> >> Is there a better way to perform a jextract on two more headers? >> >> This example uses both stdio.h and time.h >> https://github.com/carldea/panama4newbies/blob/main/part03/src/PanamaTime.java >> >> >> Thank you, >> Carl >> >> -- >> *Carl Dea* >> Email: carldea at gmail.com >> Website: https://carlfx.wordpress.com >> Twitter: @carldea > From maurizio.cimadamore at oracle.com Tue Aug 24 16:02:31 2021 From: maurizio.cimadamore at oracle.com (Maurizio Cimadamore) Date: Tue, 24 Aug 2021 17:02:31 +0100 Subject: How do you use jextract for two or more header files? In-Reply-To: <829753AA-7949-41DB-881D-901300DCCAC8@gmail.com> References: <61139383-B528-4645-8E3B-375DED9B22B0@oracle.com> <829753AA-7949-41DB-881D-901300DCCAC8@gmail.com> Message-ID: Hi Carl, note that jextract has an option to override the name of the generated class: `--header-class-name`. This might alleviate the problem you are referring to. Maurizio On 24/08/2021 15:17, Carl Dea wrote: > Paul, > Excellent! > Yes others have mentioned this technique. > Although it works rather well, the imports will have a header?s name: > For example: > foo.h > > After jextract it?s > > import org.unix.foo_h.*; > > Not a deal breaker, but just thought it might be noted in docs. > > Thank you, > Carl > > Sent from my iPhone > >> On Aug 23, 2021, at 2:13 PM, Paul Sandoz wrote: >> >> ?Hi Carl, >> >> Generating separately will overwrite common generated artifacts (in this case the constants classes). >> >> Create your own header file with the following content: >> >> #include >> #include >> >> Then run jextract using that header file as input. >> >> Paul. >> >>> On Aug 22, 2021, at 9:25 PM, carl dea wrote: >>> >>> Panama Dev team, >>> >>> I'm trying to use jextract for stdio.h and time.h, but getting compile >>> issues when the target (-t) name space is the same such as *-t org.unix* >>> *jextract stdio.h* >>> >>> # jextract stdio.h >>> jextract --source -d generated/src -t org.unix \ >>> -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include >>> \ >>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h >>> >>> *jextract time.h* >>> >>> # jextract time.h >>> jextract --source -d generated/src -t org.unix \ >>> -I /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include >>> \ >>> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/time.h >>> >>> *Compile source* >>> >>> javac -d classes generated/src/org/unix/*.java >>> >>> >>> *Compile Error* >>> The following compile errors (87 errors) >>> generated/src/org/unix/stdio_h.java:732: error: cannot find symbol >>> return >>> RuntimeHelper.requireNonNull(constants$0.renameat$MH,"renameat"); >>> ^ >>> symbol: variable renameat$MH >>> location: class constants$0 >>> generated/src/org/unix/stdio_h.java:735: error: cannot find symbol >>> ... >>> >>> *Workaround (change namespace)* >>> My workaround is making time.h 's target namespace to *-t org.unix.time*. >>> When I'm in the IDE and using Panama the source code looks like the >>> following >>> >>> import static org.unix.stdio_h.*; >>> import static org.unix.time.time_h.*; >>> >>> import org.unix.time.tm; >>> ... >>> // more code >>> localtime_r(now2, pTmStruct); >>> >>> Is there a better way to perform a jextract on two more headers? >>> >>> This example uses both stdio.h and time.h >>> https://github.com/carldea/panama4newbies/blob/main/part03/src/PanamaTime.java >>> >>> >>> Thank you, >>> Carl >>> >>> -- >>> *Carl Dea* >>> Email: carldea at gmail.com >>> Website: https://carlfx.wordpress.com >>> Twitter: @carldea From jbhateja at openjdk.java.net Thu Aug 26 06:23:51 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 26 Aug 2021 06:23:51 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species Message-ID: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. - Handles casting for both predicated/non-predicated targets. Following is the performance data for new JMH benchmark included with the patch. System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio -- | -- | -- | -- | -- | -- | -- microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56353.873 | 48970.14 | 0.868975589 microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 56834.785 | 114543.015 | 2.015368141 microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 47412.246 | 43539.56 | 0.918318866 microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 68103.798 | 131857.429 | 1.936124458 microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 68663.899 | 58686.52 | 0.854692507 microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68775.626 | 130610.463 | 1.899080686 microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 72769.986 | 132547.949 | 1.821464539 microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72177.696 | 128137.316 | 1.775303495 microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 67920.658 | 130120.344 | 1.915769779 microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 69022.136 | 58334.489 | 0.845156241 microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63210.734 | 130065.762 | 2.057653088 microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 56546.461 | 49007.128 | 0.866670118 microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 53074.581 | 48768.727 | 0.918871635 microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74943.574 | 65043.773 | 0.867903271 microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 75332.964 | 65311.575 | 0.86697206 microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 73417.365 | 132380.982 | 1.803129028 microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 73740.351 | 131155.599 | 1.778613706 microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68695.16 | 58410.73 | 0.85028887 microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 64162.04 | 58806.579 | 0.916532252 microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 68702.838 | 58956.922 | 0.85814391 microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 67675.889 | 128556.324 | 1.899588257 microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 67611.643 | 126309.927 | 1.868168283 microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 69019.63 | 57951.985 | 0.839644968 microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 56031.712 | 116504.228 | 2.07925519 microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 56541.831 | 49175.688 | 0.869722242 microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 45410.684 | 42683.147 | 0.939936227 microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 72453.087 | 126654.897 | 1.748095247 microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72278.575 | 127633.658 | 1.76585742 PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. ------------- Commit messages: - 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species Changes: https://git.openjdk.java.net/panama-vector/pull/113/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=113&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8272971 Stats: 552 lines in 34 files changed: 233 ins; 129 del; 190 mod Patch: https://git.openjdk.java.net/panama-vector/pull/113.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/113/head:pull/113 PR: https://git.openjdk.java.net/panama-vector/pull/113 From psandoz at openjdk.java.net Thu Aug 26 15:22:53 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Thu, 26 Aug 2021 15:22:53 GMT Subject: [vectorIntrinsics] RFR: 8263532: C2: Improve vector box elimination for Phi nodes In-Reply-To: References: Message-ID: On Tue, 18 May 2021 11:27:52 GMT, Vladimir Ivanov wrote: > Enhance vector box elimination when merging VectorBox nodes through Phis. Rubber stamped. ------------- Marked as reviewed by psandoz (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/84 From jbhateja at openjdk.java.net Thu Aug 26 20:54:19 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Thu, 26 Aug 2021 20:54:19 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v2] In-Reply-To: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: > - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. > - Handles casting for both predicated/non-predicated targets. > > Following is the performance data for new JMH benchmark included with the patch. > > System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) > > Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio > -- | -- | -- | -- | -- | -- | -- > microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56353.873 | 48970.14 | 0.868975589 > microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 56834.785 | 114543.015 | 2.015368141 > microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 47412.246 | 43539.56 | 0.918318866 > microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 68103.798 | 131857.429 | 1.936124458 > microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 68663.899 | 58686.52 | 0.854692507 > microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68775.626 | 130610.463 | 1.899080686 > microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 72769.986 | 132547.949 | 1.821464539 > microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72177.696 | 128137.316 | 1.775303495 > microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 67920.658 | 130120.344 | 1.915769779 > microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 69022.136 | 58334.489 | 0.845156241 > microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63210.734 | 130065.762 | 2.057653088 > microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 56546.461 | 49007.128 | 0.866670118 > microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 53074.581 | 48768.727 | 0.918871635 > microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74943.574 | 65043.773 | 0.867903271 > microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 75332.964 | 65311.575 | 0.86697206 > microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 73417.365 | 132380.982 | 1.803129028 > microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 73740.351 | 131155.599 | 1.778613706 > microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68695.16 | 58410.73 | 0.85028887 > microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 64162.04 | 58806.579 | 0.916532252 > microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 68702.838 | 58956.922 | 0.85814391 > microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 67675.889 | 128556.324 | 1.899588257 > microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 67611.643 | 126309.927 | 1.868168283 > microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 69019.63 | 57951.985 | 0.839644968 > microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 56031.712 | 116504.228 | 2.07925519 > microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 56541.831 | 49175.688 | 0.869722242 > microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 45410.684 | 42683.147 | 0.939936227 > microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 72453.087 | 126654.897 | 1.748095247 > microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72278.575 | 127633.658 | 1.76585742 > > PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8272971: Optimizing IR for mask-casting over non-predicated targets. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/113/files - new: https://git.openjdk.java.net/panama-vector/pull/113/files/5f041f21..3b18e774 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=113&range=01 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=113&range=00-01 Stats: 21 lines in 1 file changed: 18 ins; 0 del; 3 mod Patch: https://git.openjdk.java.net/panama-vector/pull/113.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/113/head:pull/113 PR: https://git.openjdk.java.net/panama-vector/pull/113 From vlivanov at openjdk.java.net Thu Aug 26 21:33:59 2021 From: vlivanov at openjdk.java.net (Vladimir Ivanov) Date: Thu, 26 Aug 2021 21:33:59 GMT Subject: [vectorIntrinsics] RFR: 8263532: C2: Improve vector box elimination for Phi nodes In-Reply-To: References: Message-ID: On Tue, 18 May 2021 11:27:52 GMT, Vladimir Ivanov wrote: > Enhance vector box elimination when merging VectorBox nodes through Phis. Thanks, Paul. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/84 From vlivanov at openjdk.java.net Thu Aug 26 21:34:00 2021 From: vlivanov at openjdk.java.net (Vladimir Ivanov) Date: Thu, 26 Aug 2021 21:34:00 GMT Subject: [vectorIntrinsics] Integrated: 8263532: C2: Improve vector box elimination for Phi nodes In-Reply-To: References: Message-ID: On Tue, 18 May 2021 11:27:52 GMT, Vladimir Ivanov wrote: > Enhance vector box elimination when merging VectorBox nodes through Phis. This pull request has now been integrated. Changeset: dca538de Author: Vladimir Ivanov URL: https://git.openjdk.java.net/panama-vector/commit/dca538de7effc2e8594f680a1c0322c7177f8ed5 Stats: 94 lines in 2 files changed: 60 ins; 1 del; 33 mod 8263532: C2: Improve vector box elimination for Phi nodes Reviewed-by: psandoz ------------- PR: https://git.openjdk.java.net/panama-vector/pull/84 From sviswanathan at openjdk.java.net Thu Aug 26 22:35:43 2021 From: sviswanathan at openjdk.java.net (Sandhya Viswanathan) Date: Thu, 26 Aug 2021 22:35:43 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v2] In-Reply-To: References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Thu, 26 Aug 2021 20:54:19 GMT, Jatin Bhateja wrote: >> - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. >> - Handles casting for both predicated/non-predicated targets. >> >> Following is the performance data for new JMH benchmark included with the patch. >> >> System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) >> Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio >> -- | -- | -- | -- | -- | -- | -- >> microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56144.479 | 48677.988 | 0.867012908 >> microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 52357.222 | 113713.843 | 2.171884578 >> microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 46976.122 | 44040.585 | 0.937510018 >> microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 64291.206 | 125241.322 | 1.948031928 >> microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 63500.39 | 57353.881 | 0.903205177 >> microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68406.484 | 129829.223 | 1.897908143 >> microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 73194.15 | 129671.204 | 1.771606119 >> microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72413.82 | 129555.214 | 1.789095148 >> microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 64238.202 | 126321.452 | 1.966453731 >> microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 68179.69 | 57691.751 | 0.846172093 >> microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63548.106 | 122347.947 | 1.925280779 >> microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 55993.494 | 49020.628 | 0.875470068 >> microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 56366.012 | 48907.786 | 0.867682212 >> microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74174.816 | 63532.575 | 0.856524875 >> microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 68350.908 | 64608.882 | 0.945252724 >> microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 69808.173 | 129450.203 | 1.854370304 >> microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 72577.142 | 129282.92 | 1.781317319 >> microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68758.915 | 58392.958 | 0.849241993 >> microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 62663.689 | 58091.934 | 0.927042996 >> microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 64319.673 | 58479.2 | 0.909196165 >> microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 68764.768 | 131602.165 | 1.91380221 >> microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 63122.811 | 131626.603 | 2.085246219 >> microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 68457.314 | 58924.963 | 0.86075482 >> microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 55950.597 | 111919.098 | 2.000319997 >> microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 54465.523 | 48667.357 | 0.893544289 >> microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 47341.838 | 44144.299 | 0.932458495 >> microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 71861.612 | 125784.021 | 1.75036459 >> microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72313.591 | 130789.753 | 1.808646911 >> >> >> PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8272971: Optimizing IR for mask-casting over non-predicated targets. Marked as reviewed by sviswanathan (Committer). The patch looks good to me. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/113 From jzhu at openjdk.java.net Fri Aug 27 09:22:08 2021 From: jzhu at openjdk.java.net (Joshua Zhu) Date: Fri, 27 Aug 2021 09:22:08 GMT Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" Message-ID: Hi, I want to propose a new VectorAPI "Selective Store/Load" and share my implementation. Currently Alibaba's internal databases are in the process of applying VectorAPI and they have requirements on "Selective Store" for acceleration. My proposed VectorAPI is declared as below [1]: int selectiveIntoArray($type$[] a, int offset, VectorMask<$Boxtype$> m); The active elements (with their respective bit set in mask) are contiguously stored into the array "a". Assume N is the true count of mask, the elements starting from a[offset+N] till a[offset+laneCount] are left unchanged. The return value represents the number of elements store into the array and "offset + return value" is the new offset of the next iteration. ![image](https://user-images.githubusercontent.com/70769035/131103779-a9958779-6ac4-4471-9dba-106da41797a1.png) This API will be used like the following manner [2]: tld.conflict_cnt = 0; for (int i = 0; i < ARRAY_LENGTH; i += INT_PREFERRED_SPECIES.length()) { IntVector av = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input1, i); IntVector bv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input2, i); IntVector cv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_index, i); VectorMask mask = av.compare(VectorOperators.NE, bv); tld.conflict_cnt += cv.selectiveIntoArray(tld.conflict_array, tld.conflict_cnt, mask); } My patch includes the following changes: * Selective Store VectorAPI for Long & Int * Assembler: add x86 instruction "VPCOMPRESSD" and "VPCOMPRESSQ" * Instruction selection: vselective_store; kmask_truecount (true count of kregister) * Add node "StoreVectorSelective" * Add a new parameter "is_selective" in inline_vector_mem_masked_operation() in order to distinguish Masked version or Selective version * jtreg cases * JMH benchmark TODO parts I will implement: * Selective Store for other types * Selective Load * Some potential optimization. Such as: when mask is allTrue, SelectiveIntoArray() -> IntoArray() Test: * Passed VectorAPI jtreg cases. * Result of JMH benchmark to evaluate API's performance in Alibaba's real scenario. UseAVX=3; thread number = 8; conflict data percentage: 20% (that means 20% of mask bits are true) http://cr.openjdk.java.net/~jzhu/8273057/jmh_benchmark_result.pdf [1] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-13cc2d6ec18e487ddae05cda671bdb6bb7ffd42ff7bc51a2e00c8c5e622bd55dR4667 [2] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-951d02bd72a931ac34bc85d1d4e656a14f8943e143fc9282b36b9c76c1893c0cR144 [3] failed to inline (intrinsic) by https://github.com/JoshuaZhuwj/panama-vector/blob/922c4ba69219211a423f7e099d7a4c63e600c133/src/hotspot/cpu/x86/x86.ad#L1769 Best Regards, Joshua ------------- Commit messages: - 8273057: [vector] New VectorAPI "SelectiveStore" Changes: https://git.openjdk.java.net/panama-vector/pull/114/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=114&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8273057 Stats: 1432 lines in 90 files changed: 1423 ins; 0 del; 9 mod Patch: https://git.openjdk.java.net/panama-vector/pull/114.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/114/head:pull/114 PR: https://git.openjdk.java.net/panama-vector/pull/114 From jzhu at openjdk.java.net Fri Aug 27 09:53:41 2021 From: jzhu at openjdk.java.net (Joshua Zhu) Date: Fri, 27 Aug 2021 09:53:41 GMT Subject: [vectorIntrinsics+mask] Withdrawn: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: References: Message-ID: On Fri, 27 Aug 2021 09:15:29 GMT, Joshua Zhu wrote: > Hi, > > I want to propose a new VectorAPI "Selective Store/Load" and share my > implementation. Currently Alibaba's internal databases are in the > process of applying VectorAPI and they have requirements on "Selective > Store" for acceleration. > > My proposed VectorAPI is declared as below [1]: > > int selectiveIntoArray($type$[] a, int offset, VectorMask<$Boxtype$> m); > > The active elements (with their respective bit set in mask) are > contiguously stored into the array "a". Assume N is the true count of > mask, the elements starting from a[offset+N] till a[offset+laneCount] > are left unchanged. The return value represents the number of elements > store into the array and "offset + return value" is the new offset of > the next iteration. > > ![image](https://user-images.githubusercontent.com/70769035/131103779-a9958779-6ac4-4471-9dba-106da41797a1.png) > > This API will be used like the following manner [2]: > > tld.conflict_cnt = 0; > for (int i = 0; i < ARRAY_LENGTH; i += INT_PREFERRED_SPECIES.length()) { > IntVector av = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input1, i); > IntVector bv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input2, i); > IntVector cv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_index, i); > VectorMask mask = av.compare(VectorOperators.NE, bv); > tld.conflict_cnt += cv.selectiveIntoArray(tld.conflict_array, tld.conflict_cnt, mask); > } > > > My patch includes the following changes: >  * Selective Store VectorAPI for Long & Int > * Assembler: add x86 instruction "VPCOMPRESSD" and "VPCOMPRESSQ" > * Instruction selection: vselective_store; kmask_truecount (true count of kregister) > * Add node "StoreVectorSelective" > * Add a new parameter "is_selective" in inline_vector_mem_masked_operation() > in order to distinguish Masked version or Selective version > * jtreg cases > * JMH benchmark > > TODO parts I will implement: > * Selective Store for other types > * Selective Load > * Some potential optimization. Such as: when mask is allTrue, SelectiveIntoArray() -> IntoArray() > > Test: > * Passed VectorAPI jtreg cases. > * Result of JMH benchmark to evaluate API's performance in Alibaba's real scenario. > UseAVX=3; thread number = 8; conflict data percentage: 20% (that means 20% of mask bits are true) > http://cr.openjdk.java.net/~jzhu/8273057/jmh_benchmark_result.pdf > > [1] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-13cc2d6ec18e487ddae05cda671bdb6bb7ffd42ff7bc51a2e00c8c5e622bd55dR4667 > [2] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-951d02bd72a931ac34bc85d1d4e656a14f8943e143fc9282b36b9c76c1893c0cR144 > [3] failed to inline (intrinsic) by https://github.com/JoshuaZhuwj/panama-vector/blob/922c4ba69219211a423f7e099d7a4c63e600c133/src/hotspot/cpu/x86/x86.ad#L1769 > > Best Regards, > Joshua This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/114 From jzhu at openjdk.java.net Fri Aug 27 09:54:16 2021 From: jzhu at openjdk.java.net (Joshua Zhu) Date: Fri, 27 Aug 2021 09:54:16 GMT Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" Message-ID: Hi, I want to propose a new VectorAPI "Selective Store/Load" and share my implementation. Currently Alibaba's internal databases are in the process of applying VectorAPI and they have requirements on "Selective Store" for acceleration. My proposed VectorAPI is declared as below [1]: int selectiveIntoArray($type$[] a, int offset, VectorMask<$Boxtype$> m); The active elements (with their respective bit set in mask) are contiguously stored into the array "a". Assume N is the true count of mask, the elements starting from a[offset+N] till a[offset+laneCount] are left unchanged. The return value represents the number of elements store into the array and "offset + return value" is the new offset of the next iteration. ![image](https://user-images.githubusercontent.com/70769035/131108509-3dcb61f3-e8d0-4b4e-9b49-a72c077aaba6.png) This API will be used like the following manner [2]: tld.conflict_cnt = 0; for (int i = 0; i < ARRAY_LENGTH; i += INT_PREFERRED_SPECIES.length()) { IntVector av = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input1, i); IntVector bv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input2, i); IntVector cv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_index, i); VectorMask mask = av.compare(VectorOperators.NE, bv); tld.conflict_cnt += cv.selectiveIntoArray(tld.conflict_array, tld.conflict_cnt, mask); } My patch includes the following changes:   * Selective Store VectorAPI for Long & Int   * Assembler: add x86 instruction "VPCOMPRESSD" and "VPCOMPRESSQ"   * Instruction selection: vselective_store; kmask_truecount (true count of kregister)   * Add node "StoreVectorSelective"   * Add a new parameter "is_selective" in inline_vector_mem_masked_operation()     in order to distinguish Masked version or Selective version   * jtreg cases   * JMH benchmark TODO parts I will implement:   * Selective Store for other types   * Selective Load   * Some potential optimization. Such as: when mask is allTrue, SelectiveIntoArray() -> IntoArray() Test:   * Passed VectorAPI jtreg cases.   * Result of JMH benchmark to evaluate API's performance in Alibaba's real scenario.       UseAVX=3; thread number = 8; conflict data percentage: 20% (that means 20% of mask bits are true)       http://cr.openjdk.java.net/~jzhu/8273057/jmh_benchmark_result.pdf [1] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-13cc2d6ec18e487ddae05cda671bdb6bb7ffd42ff7bc51a2e00c8c5e622bd55dR4667 [2] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-951d02bd72a931ac34bc85d1d4e656a14f8943e143fc9282b36b9c76c1893c0cR144 [3] failed to inline (intrinsic) by https://github.com/openjdk/panama-vector/blob/60aa8ca6dc0b3f1a3ee517db167f9660012858cd/src/hotspot/cpu/x86/x86.ad#L1769 Best Regards, Joshua ------------- Commit messages: - 8273057: [vector] New VectorAPI "SelectiveStore" Changes: https://git.openjdk.java.net/panama-vector/pull/115/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=115&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8273057 Stats: 1432 lines in 90 files changed: 1423 ins; 0 del; 9 mod Patch: https://git.openjdk.java.net/panama-vector/pull/115.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/115/head:pull/115 PR: https://git.openjdk.java.net/panama-vector/pull/115 From duke at openjdk.java.net Fri Aug 27 11:08:29 2021 From: duke at openjdk.java.net (duke) Date: Fri, 27 Aug 2021 11:08:29 GMT Subject: git: openjdk/panama-foreign: foreign-jextract: 63 new changesets Message-ID: <3d3a0015-3869-404d-80d5-1e3640919f46@openjdk.org> Changeset: d874e961 Author: Hamlin Li Date: 2021-08-20 11:26:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d874e9616f80324a53f3c8866ce500e55dfa308f 8271579: G1: Move copy before CAS in do_copy_to_survivor_space 8272070: G1: Simplify age calculation after JDK-8271579 Co-authored-by: shoubing ma Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: fb1dfc6f Author: Ivan Walulya Date: 2021-08-20 11:30:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fb1dfc6f49f62990aa9988e9d6f7ffd1adf45d8e 8267185: Add string deduplication support to ParallelGC Reviewed-by: kbarrett, ayang ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.hpp ! src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp + src/hotspot/share/gc/parallel/psStringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: c701f6e5 Author: Zhengyu Gu Date: 2021-08-20 12:23:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c701f6e5383030e0192bbd2d95059d9a5b9b0ab7 8272739: Misformatted error message in EventHandlerCreator Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/EventHandlerCreator.java Changeset: 86add21a Author: Vladimir Ivanov Date: 2021-08-20 12:41:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/86add21a85ec57de00aecb0a18bc99567a91d0d8 8223923: C2: Missing interference with mismatched unsafe accesses Reviewed-by: thartmann ! src/hotspot/share/opto/memnode.cpp + test/hotspot/jtreg/compiler/unsafe/MismatchedUnsafeAccessTest.java Changeset: 1ea437a4 Author: Jie Fu Date: 2021-08-20 12:43:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1ea437a4b87381b558cf8157ac52fc03e37ac507 8272720: Fix the implementation of loop unrolling heuristic with LoopPercentProfileLimit Reviewed-by: thartmann, rbackman ! src/hotspot/share/opto/loopTransform.cpp Changeset: d85560ed Author: lawrence.andrews Committer: Alexey Ivanov Date: 2021-08-20 17:45:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d85560ed0f10a586b659db1c0201373457f1a5a9 8267161: Write automated test case for JDK-4479161 Reviewed-by: serb, aivanov - test/jdk/java/awt/im/4959409/bug4959409.html ! test/jdk/java/awt/im/4959409/bug4959409.java Changeset: 04a806ec Author: Sean Coffey Date: 2021-08-20 20:10:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/04a806ec86a388b8de31d42f904c4321beb69e14 8270344: Session resumption errors Reviewed-by: xuelei ! src/java.base/share/classes/sun/security/ssl/ClientHello.java ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java ! src/java.base/share/classes/sun/security/ssl/TransportContext.java + test/jdk/sun/security/ssl/SSLSessionImpl/InvalidateSession.java Changeset: f77a1a15 Author: David Holmes Date: 2021-08-22 01:13:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f77a1a156f3da9068d012d9227c7ee0fee58f571 8272472: StackGuardPages test doesn't build with glibc 2.34 Reviewed-by: shade, stuefe, jiefu ! test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c Changeset: b690f296 Author: Alan Hayward Committer: Nick Gasson Date: 2021-08-23 01:41:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b690f29699180149d33b6a83de10697790587a87 8269687: pauth_aarch64.hpp include name is incorrect Reviewed-by: rbackman, ngasson ! src/hotspot/cpu/aarch64/pauth_aarch64.hpp ! src/hotspot/os_cpu/bsd_aarch64/pauth_bsd_aarch64.inline.hpp ! src/hotspot/os_cpu/windows_aarch64/pauth_windows_aarch64.inline.hpp Changeset: e8a289e7 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-23 06:12:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e8a289e77d70d31f2f7d1a8dea620062dbdb3e2a 8272609: Add string deduplication support to SerialGC Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/serial/defNewGeneration.cpp ! src/hotspot/share/gc/serial/defNewGeneration.hpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp ! src/hotspot/share/gc/serial/markSweep.inline.hpp ! src/hotspot/share/gc/serial/serialHeap.cpp ! src/hotspot/share/gc/serial/serialHeap.hpp + src/hotspot/share/gc/serial/serialStringDedup.cpp + src/hotspot/share/gc/serial/serialStringDedup.hpp + src/hotspot/share/gc/serial/serialStringDedup.inline.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: b7f75c0a Author: Matthias Baesken Date: 2021-08-23 06:39:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b7f75c0a735f0cf40ae2288d1d0ae96a571a4155 8271142: package help is not displayed for missing X11/extensions/Xrandr.h Reviewed-by: clanger ! make/autoconf/help.m4 Changeset: 741f58c1 Author: Tongbao Zhang Committer: Stefan Karlsson Date: 2021-08-23 11:54:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/741f58c18c3dc49c5e1b793e411d8479770f2772 8272417: ZGC: fastdebug build crashes when printing ClassLoaderData Reviewed-by: stefank, pliden ! src/hotspot/share/classfile/classLoaderData.cpp Changeset: d542745d Author: Ivan Walulya Date: 2021-08-23 12:58:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d542745dbe0f58f510108d15f7e310ec27f560db 8267894: Skip work for empty regions in G1 Full GC Reviewed-by: sjohanss, tschatzl ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullCollector.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp ! src/hotspot/share/gc/g1/g1FullGCHeapRegionAttr.hpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp Changeset: 594e5161 Author: Albert Mingkun Yang Date: 2021-08-23 14:00:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/594e5161b48382d61509b4969bc8f52c3c076452 8272778: Consolidate is_instance and is_instance_inlined in java_lang_String Reviewed-by: coleenp, redestad ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp ! src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp ! src/hotspot/share/gc/serial/markSweep.inline.hpp ! src/hotspot/share/gc/serial/serialStringDedup.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/prims/methodHandles.cpp Changeset: 18840724 Author: Jonathan Gibbons Date: 2021-08-23 17:31:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/18840724749c839259688bfa052652a1f34a378a 8265253: javac -Xdoclint:all gives "no comment" warning for code that can't be commented Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java + test/langtools/tools/doclint/AnonClassTest.java + test/langtools/tools/doclint/AnonClassTest.out Changeset: 709b5910 Author: Igor Ignatyev Date: 2021-08-23 18:03:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/709b5910c35ad081b2367435cbc689414098b87a 8272553: several hotspot runtime/CommandLine tests don't check exit code Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/CommandLine/CompilerConfigFileWarning.java ! test/hotspot/jtreg/runtime/CommandLine/ConfigFileWarning.java ! test/hotspot/jtreg/runtime/CommandLine/ObsoleteFlagErrorMessage.java ! test/hotspot/jtreg/runtime/CommandLine/PrintTouchedMethods.java ! test/hotspot/jtreg/runtime/CommandLine/TestHexArguments.java ! test/hotspot/jtreg/runtime/CommandLine/TestVMOptions.java ! test/hotspot/jtreg/runtime/CommandLine/VMOptionWarning.java Changeset: ad92033f Author: Tom Rodriguez Date: 2021-08-23 18:43:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ad92033fccbf4ec9310ea5b3024be61c082ee5bb 8272736: [JVMCI] Add API for reading and writing JVMCI thread locals Reviewed-by: kvn, dnsimon ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java Changeset: 2ff4c01d Author: Vladimir Ivanov Date: 2021-08-23 20:23:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ff4c01d42f1afcc53abd48e074356fb4a700754 8271600: C2: CheckCastPP which should closely follow Allocate is sunk of a loop Reviewed-by: chagedorn, roland ! src/hotspot/share/opto/loopopts.cpp Changeset: 9bc02322 Author: Maxim Kartashev Committer: Sergey Bylokhov Date: 2021-08-23 20:28:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9bc023220fbbb0b6ea1ed1a0ca2aa3848764e8cd 8269223: -Xcheck:jni WARNINGs working with fonts on Linux Reviewed-by: prr, serb ! src/java.desktop/share/native/libfontmanager/freetypeScaler.c ! src/java.desktop/windows/native/libawt/java2d/d3d/D3DRenderQueue.cpp ! src/java.desktop/windows/native/libawt/windows/awt_Component.cpp ! src/java.desktop/windows/native/libawt/windows/awt_DesktopProperties.cpp + test/jdk/java/awt/font/JNICheck/FreeTypeScalerJNICheck.java Changeset: 22ef4f06 Author: Prasanta Sadhukhan Date: 2021-08-24 04:02:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/22ef4f065315c1238216849ce9ce71b8207b43f8 5015261: NPE may be thrown if JDesktopIcon is set to null on a JInternalFrame Reviewed-by: serb, prr, aivanov ! src/java.desktop/share/classes/javax/swing/JInternalFrame.java Changeset: 7f80683c Author: Aleksey Shipilev Date: 2021-08-24 10:08:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7f80683cfeee3c069f48d5bce45fa92b2381b518 8272783: Epsilon: Refactor tests to improve performance Reviewed-by: tschatzl ! test/hotspot/jtreg/gc/epsilon/TestAlignment.java ! test/hotspot/jtreg/gc/epsilon/TestAlwaysPretouch.java ! test/hotspot/jtreg/gc/epsilon/TestArraycopyCheckcast.java ! test/hotspot/jtreg/gc/epsilon/TestByteArrays.java ! test/hotspot/jtreg/gc/epsilon/TestClasses.java ! test/hotspot/jtreg/gc/epsilon/TestDieDefault.java ! test/hotspot/jtreg/gc/epsilon/TestDieWithHeapDump.java ! test/hotspot/jtreg/gc/epsilon/TestDieWithOnError.java ! test/hotspot/jtreg/gc/epsilon/TestElasticTLAB.java ! test/hotspot/jtreg/gc/epsilon/TestElasticTLABDecay.java ! test/hotspot/jtreg/gc/epsilon/TestEpsilonEnabled.java ! test/hotspot/jtreg/gc/epsilon/TestHelloWorld.java ! test/hotspot/jtreg/gc/epsilon/TestLogTrace.java ! test/hotspot/jtreg/gc/epsilon/TestManyThreads.java ! test/hotspot/jtreg/gc/epsilon/TestMaxTLAB.java ! test/hotspot/jtreg/gc/epsilon/TestMemoryMXBeans.java ! test/hotspot/jtreg/gc/epsilon/TestMemoryPools.java ! test/hotspot/jtreg/gc/epsilon/TestObjects.java ! test/hotspot/jtreg/gc/epsilon/TestPrintHeapSteps.java ! test/hotspot/jtreg/gc/epsilon/TestRefArrays.java ! test/hotspot/jtreg/gc/epsilon/TestUpdateCountersSteps.java Changeset: 928b9724 Author: Albert Mingkun Yang Date: 2021-08-24 12:14:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/928b9724c98c3377f96f5c3786ef2d8d79485dfe 8271930: Simplify end_card calculation in G1BlockOffsetTablePart::verify Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp Changeset: 0597cde8 Author: Kim Barrett Date: 2021-08-24 13:17:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0597cde87deb5ba7bcd84e47b3c10329f758067d 8221360: Eliminate Shared_DirtyCardQ_lock Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BarrierSet.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.hpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/g1/g1RemSet.hpp - src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.cpp - src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: 74543069 Author: Patricio Chilano Mateo Date: 2021-08-24 14:09:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7454306920bcd9e4397de32fae2fdf4ec688bded 8272526: Cleanup ThreadStateTransition class Reviewed-by: dholmes, rehn, coleenp ! src/hotspot/share/prims/jni.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/universalUpcallHandler.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/javaCalls.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/thread.cpp ! test/hotspot/jtreg/runtime/Unsafe/InternalErrorTest.java Changeset: 94f5e441 Author: Jonathan Gibbons Date: 2021-08-24 14:41:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/94f5e441f637b7a75227ba11a2b25d70f96cd274 8271258: @param with non-ascii variable names produces incorrect results Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! test/langtools/jdk/javadoc/doclet/testUnicode/TestUnicode.java Changeset: 2309b7d8 Author: Sergei Ustimenko Committer: Daniel Fuchs Date: 2021-08-24 14:49:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2309b7d8fc37e9ba8f80f7820ae2875ccc3b07fd 8253178: Replace LinkedList Impl in net.http.FilterFactory Reviewed-by: dfuchs ! src/java.net.http/share/classes/jdk/internal/net/http/FilterFactory.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java Changeset: 6e0328f5 Author: Albert Mingkun Yang Date: 2021-08-24 15:21:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6e0328f5829282b56327aa0128774cb916275d45 8272725: G1: add documentation on needs_remset_update_t vs bool Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1HeapRegionAttr.hpp Changeset: f681d654 Author: Phil Race Date: 2021-08-24 15:23:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f681d6544ac2506cb72e45c1f9ed8dfbbde099f2 8272806: [macOS] "Apple AWT Internal Exception" when input method is changed Reviewed-by: serb, dmarkov, azvegint ! src/java.desktop/macosx/native/libawt_lwawt/awt/CInputMethod.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m Changeset: f608e81a Author: Calvin Cheung Date: 2021-08-24 15:31:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f608e81ad8309a001b8a92563a93b8adee1ce2b8 8264322: Generate CDS archive when creating custom JDK image Reviewed-by: mchung, alanb ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/ImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ExecutableImage.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java + src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/CDSPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/plugins.properties ! src/jdk.jlink/share/classes/module-info.java + test/jdk/tools/jlink/plugins/CDSPluginTest.java Changeset: d34f17c6 Author: Jonathan Gibbons Date: 2021-08-24 16:10:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d34f17c6973748693de1bdd040bc3e8a0f15f197 8270195: Add missing links between methods of JavaFX properties Reviewed-by: kcr, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/CommentUtils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PropertyBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java + test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXCombo.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXMissingPropComments.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/pkg2/Test.java ! test/langtools/jdk/javadoc/doclet/testProperty/TestProperty.java Changeset: aaedac63 Author: Brian Burkhalter Date: 2021-08-24 17:04:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/aaedac635a0a7ca1f73dcf85336230cc537fcdf2 8265261: java/nio/file/Files/InterruptCopy.java fails with java.lang.RuntimeException: Copy was not interrupted Reviewed-by: dfuchs ! test/jdk/java/nio/file/Files/InterruptCopy.java Changeset: c547ead4 Author: Calvin Cheung Date: 2021-08-24 18:09:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c547ead493fafb6716550996a83276afc0ec018a 8272916: Copyright year was modified unintentionally in jlink.properties and ImagePluginStack.java Reviewed-by: bpb ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Changeset: 6ace805f Author: Igor Ignatyev Date: 2021-08-24 18:43:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6ace805f8c69b273bf998f084f9651bc5bcd52b6 8272856: DoubleFlagWithIntegerValue uses G1GC-only flag Reviewed-by: dholmes, kbarrett ! test/hotspot/jtreg/runtime/CommandLine/DoubleFlagWithIntegerValue.java Changeset: 0e7288ff Author: Smita Kamath Committer: Anthony Scarpino Date: 2021-08-24 18:48:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0e7288ffbf635b9fdb17e8017e9a4f673ca0501d 8267125: AES Galois CounterMode (GCM) interleaved implementation using AVX512 + VAES instructions Co-authored-by: Smita Kamath Co-authored-by: Tomasz Kantecki Co-authored-by: Anthony Scarpino Reviewed-by: kvn, valeriep ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86_aes.cpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/share/classfile/vmIntrinsics.cpp ! src/hotspot/share/classfile/vmIntrinsics.hpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/opto/c2compiler.cpp ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/runtime/stubRoutines.cpp ! src/hotspot/share/runtime/stubRoutines.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/java.base/share/classes/com/sun/crypto/provider/GHASH.java ! src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java ! test/hotspot/jtreg/compiler/codegen/aes/TestAESMain.java Changeset: b17b821a Author: Andy Herrick Date: 2021-08-24 20:59:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b17b821a570930e4188bcdfb396f0a7abe99caf6 8272639: jpackaged applications using microphone on mac Reviewed-by: almatvee, serb ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/Info-lite.plist.template ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/sandbox.plist Changeset: 0f428ca5 Author: casparcwang Committer: Jie Fu Date: 2021-08-25 01:16:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0f428ca533627e758cdca599d4589f39c21e27b6 8272570: C2: crash in PhaseCFG::global_code_motion Co-authored-by: Hui Shi Reviewed-by: thartmann, rbackman ! src/hotspot/share/opto/lcm.cpp + test/hotspot/jtreg/compiler/regalloc/TestGCMRecalcPressureNodes.java Changeset: 1e3e333f Author: Albert Mingkun Yang Date: 2021-08-25 07:33:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1e3e333f73fc448725175eba733c3eaf2f1b61b8 8272884: Make VoidClosure::do_void pure virtual Reviewed-by: kbarrett, dholmes ! src/hotspot/share/memory/iterator.cpp ! src/hotspot/share/memory/iterator.hpp Changeset: c5a27125 Author: Aleksey Shipilev Date: 2021-08-25 08:05:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c5a271259d9761aaae9298e9f29ebd93d734fb0e 8272850: Drop zapping values in the Zap* option descriptions Reviewed-by: stefank, kbarrett ! src/hotspot/share/runtime/globals.hpp Changeset: 63e062fb Author: Ivan Walulya Date: 2021-08-25 10:18:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/63e062fb78f925782cf4c9641b54f266bcbebc5c 8236176: Parallel GC SplitInfo comment should be updated for shadow regions Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.hpp Changeset: 2ef68711 Author: Coleen Phillimore Date: 2021-08-25 13:25:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ef6871118109b294e3148c8f15d4335039dd121 8272447: Remove 'native' ranked Mutex Reviewed-by: stuefe, pchilanomate ! src/hotspot/share/memory/metaspace/testHelpers.cpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/mutex.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! test/hotspot/gtest/metaspace/test_is_metaspace_obj.cpp ! test/hotspot/gtest/metaspace/test_metaspacearena.cpp ! test/hotspot/gtest/metaspace/test_metaspacearena_stress.cpp ! test/hotspot/gtest/runtime/test_mutex.cpp Changeset: e36cbd8e Author: Ivan Walulya Date: 2021-08-25 14:33:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e36cbd8e05774ea9847c69f9987a2242589acf7e 8242847: G1 should not clear mark bitmaps with no marks Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.inline.hpp Changeset: 7212561d Author: Zhengyu Gu Date: 2021-08-25 20:16:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7212561dd1ec65d7f31792959f0eaaab6229eaf4 8267188: gc/stringdedup/TestStringDeduplicationInterned.java fails with Shenandoah Reviewed-by: rkennke, shade ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahSTWMark.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java Changeset: 673ce7ef Author: Igor Veresov Date: 2021-08-26 00:17:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/673ce7efa56e7eb54266af6fe795d46d57f51bdc 8272873: C2: Inlining should not depend on absolute call site counts Reviewed-by: kvn, vlivanov, dlong ! src/hotspot/cpu/aarch64/globals_aarch64.hpp ! src/hotspot/cpu/arm/globals_arm.hpp ! src/hotspot/cpu/ppc/globals_ppc.hpp ! src/hotspot/cpu/s390/globals_s390.hpp ! src/hotspot/cpu/x86/globals_x86.hpp ! src/hotspot/cpu/zero/globals_zero.hpp ! src/hotspot/share/opto/bytecodeInfo.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! test/lib-test/jdk/test/whitebox/vm_flags/IntxTest.java Changeset: c4c76e2f Author: David Holmes Date: 2021-08-26 02:24:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c4c76e2f34f7e709f8b3c960d8c796ff4e2dc4a5 8272811: Document the effects of building with _GNU_SOURCE in os_posix.hpp Reviewed-by: iklam ! src/hotspot/os/posix/os_posix.hpp Changeset: a3308af0 Author: Aleksey Shipilev Date: 2021-08-26 06:51:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a3308af0605bf936d9a9fb7093787a315ccc1e2a 8272836: Limit run time for java/lang/invoke/LFCaching tests Reviewed-by: redestad, iignatyev ! test/jdk/java/lang/invoke/LFCaching/LambdaFormTestCase.java Changeset: 49b2789a Author: Alexey Ushakov Date: 2021-08-26 07:28:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/49b2789a49e4e476dfcdf0a65e061a40264a4683 8262751: RenderPipelineState assertion error in J2DDemo Reviewed-by: jdv ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLPaints.h ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLPaints.m Changeset: 9166ba37 Author: Tobias Hartmann Date: 2021-08-26 08:34:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9166ba37b631aa7ae641488f6167cdbd7fcdff00 8272973: Incorrect compile command used by TestIllegalArrayCopyBeforeInfiniteLoop Reviewed-by: chagedorn, jiefu, neliasso ! test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java Changeset: b94fd32f Author: Magnus Ihse Bursie Date: 2021-08-26 10:00:21 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b94fd32f08bbb0012874eb918a4a1fe2d06eb943 8272859: Javadoc external links should only have feature version number in URL Reviewed-by: iris ! make/conf/javadoc.conf Changeset: 11c9fd82 Author: Albert Mingkun Yang Date: 2021-08-26 10:06:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/11c9fd8298030200727a0e682fd9afb69ca8eb81 8272975: ParallelGC: add documentation to heap memory layout Co-authored-by: Thomas Schatzl Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp Changeset: e43a907f Author: Prasanta Sadhukhan Date: 2021-08-26 12:04:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e43a907f20f99fa1f788fcbe2e99631dd01578d4 8271315: Redo: Nimbus JTree renderer properties persist across L&F changes Reviewed-by: aivanov ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusIcon.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf ! src/java.desktop/share/classes/javax/swing/plaf/synth/SynthLabelUI.java + test/jdk/javax/swing/plaf/nimbus/NimbusJTreeSelTextColor.java + test/jdk/javax/swing/plaf/nimbus/NimbusPropertiesDoNotImplUIResource.java Changeset: c4205305 Author: Alexey Ushakov Date: 2021-08-26 12:56:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c4205305496f73f49e58e64dd303154fca5bfafd 8272481: [macos] javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java fails Reviewed-by: serb, jdv ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! test/jdk/ProblemList.txt Changeset: 845e1cea Author: Ivan Walulya Date: 2021-08-26 13:41:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/845e1cea8dcf0e902a2b6d3bf87749108c21c320 8272983: G1 Add marking details to eager reclaim logging Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp Changeset: fe7d7088 Author: Naoto Sato Date: 2021-08-26 16:21:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fe7d70886cc9985478c5810eff0790648a9aae41 8272473: Parsing epoch seconds at a DST transition with a non-UTC parser is wrong Reviewed-by: joehw, rriggs, iris, lancea, scolebourne ! src/java.base/share/classes/java/time/format/Parsed.java ! test/jdk/java/time/test/java/time/format/TestDateTimeParsing.java Changeset: d732c309 Author: Andrey Turbanov Committer: Sergey Bylokhov Date: 2021-08-26 20:47:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d732c3091fea0a7c6d6767227de89002564504e5 8272863: Replace usages of Collections.sort with List.sort call in public java modules Reviewed-by: serb, dfuchs, naoto ! src/java.base/share/classes/java/net/CookieManager.java ! src/java.base/share/classes/java/time/format/DateTimeTextProvider.java ! src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java ! src/java.base/share/classes/sun/security/provider/certpath/PKIX.java ! src/java.base/windows/classes/java/lang/ProcessEnvironment.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTreeUI.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java ! src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java ! src/java.desktop/unix/classes/sun/font/XRGlyphCache.java ! src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java Changeset: b16a04eb Author: Yasumasa Suenaga Date: 2021-08-27 05:06:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b16a04ebf749a93d89fb51b96baceff36fe1d730 8271186: Add UL option to replace newline char Reviewed-by: iklam, dholmes ! src/hotspot/share/logging/logConfiguration.cpp ! src/hotspot/share/logging/logFileOutput.cpp ! src/hotspot/share/logging/logFileStreamOutput.cpp ! src/hotspot/share/logging/logFileStreamOutput.hpp ! src/java.base/share/man/java.1 + test/hotspot/jtreg/runtime/logging/FoldMultilinesTest.java Changeset: 76baace2 Author: Bradford Wetmore Date: 2021-08-27 05:11:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/76baace2f07cb7b5d5fd20abd1612085bdba4292 8273045: Fix misc javadoc bugs in the java.security and javax.net.ssl code Reviewed-by: xuelei ! src/java.base/share/classes/java/security/AuthProvider.java ! src/java.base/share/classes/javax/net/ssl/SNIHostName.java ! src/java.base/share/classes/javax/net/ssl/SNIMatcher.java ! src/java.base/share/classes/javax/net/ssl/SNIServerName.java ! src/java.base/share/classes/javax/net/ssl/SSLContextSpi.java ! src/java.base/share/classes/javax/net/ssl/SSLEngine.java ! src/java.base/share/classes/javax/net/ssl/SSLEngineResult.java ! src/java.base/share/classes/javax/net/ssl/SSLServerSocket.java ! src/java.base/share/classes/javax/net/ssl/SSLSession.java ! src/java.base/share/classes/javax/net/ssl/X509ExtendedTrustManager.java Changeset: c925c7f3 Author: Tobias Hartmann Date: 2021-08-27 05:38:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c925c7f3e8e1470d0a157ca3387d11137366706f 8273020: LibraryCallKit::sharpen_unsafe_type does not handle narrow oop array Reviewed-by: chagedorn ! src/hotspot/share/opto/library_call.cpp Changeset: 46684a4e Author: Lin Zang Committer: Serguei Spitsyn Date: 2021-08-27 09:02:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/46684a4efa165d97c0ef8f56248ee82003acdb7b 8262386: resourcehogs/serviceability/sa/TestHeapDumpForLargeArray.java timed out Reviewed-by: cjplummer, sspitsyn ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! test/hotspot/jtreg/ProblemList.txt Changeset: ebd62bc0 Author: Aleksey Shipilev Date: 2021-08-27 09:35:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ebd62bc0433c56f3520b9e41621f18a1b736022b 8272846: Move some runtime/Metaspace/elastic/ tests out of tier1 Reviewed-by: mseledtsov, stuefe ! test/hotspot/jtreg/TEST.groups Changeset: a49a0c58 Author: Kim Barrett Date: 2021-08-27 10:32:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a49a0c58662bef48d02246193d86cc89fb9d030b 8273062: Generation::refs_discovery_is_xxx functions are unused Reviewed-by: ayang ! src/hotspot/share/gc/shared/generation.hpp Changeset: a64a49dd Author: duke Date: 2021-08-27 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a64a49dd8754c170af77075306b0be6e4922b93c Automatic merge of jdk:master into master Changeset: 21a22d31 Author: duke Date: 2021-08-27 11:00:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/21a22d313c26f504b0b36c64b07d1cbe5f034b5c Automatic merge of master into foreign-memaccess+abi ! src/hotspot/share/prims/universalUpcallHandler.cpp ! src/hotspot/share/prims/universalUpcallHandler.cpp Changeset: bc986532 Author: duke Date: 2021-08-27 11:01:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/bc9865325f197a656b559b50ee1b746bf7849e13 Automatic merge of foreign-memaccess+abi into foreign-jextract From duke at openjdk.java.net Fri Aug 27 11:14:57 2021 From: duke at openjdk.java.net (duke) Date: Fri, 27 Aug 2021 11:14:57 GMT Subject: git: openjdk/panama-foreign: foreign-memaccess+abi: 62 new changesets Message-ID: Changeset: d874e961 Author: Hamlin Li Date: 2021-08-20 11:26:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d874e9616f80324a53f3c8866ce500e55dfa308f 8271579: G1: Move copy before CAS in do_copy_to_survivor_space 8272070: G1: Simplify age calculation after JDK-8271579 Co-authored-by: shoubing ma Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: fb1dfc6f Author: Ivan Walulya Date: 2021-08-20 11:30:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fb1dfc6f49f62990aa9988e9d6f7ffd1adf45d8e 8267185: Add string deduplication support to ParallelGC Reviewed-by: kbarrett, ayang ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.hpp ! src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp + src/hotspot/share/gc/parallel/psStringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: c701f6e5 Author: Zhengyu Gu Date: 2021-08-20 12:23:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c701f6e5383030e0192bbd2d95059d9a5b9b0ab7 8272739: Misformatted error message in EventHandlerCreator Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/EventHandlerCreator.java Changeset: 86add21a Author: Vladimir Ivanov Date: 2021-08-20 12:41:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/86add21a85ec57de00aecb0a18bc99567a91d0d8 8223923: C2: Missing interference with mismatched unsafe accesses Reviewed-by: thartmann ! src/hotspot/share/opto/memnode.cpp + test/hotspot/jtreg/compiler/unsafe/MismatchedUnsafeAccessTest.java Changeset: 1ea437a4 Author: Jie Fu Date: 2021-08-20 12:43:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1ea437a4b87381b558cf8157ac52fc03e37ac507 8272720: Fix the implementation of loop unrolling heuristic with LoopPercentProfileLimit Reviewed-by: thartmann, rbackman ! src/hotspot/share/opto/loopTransform.cpp Changeset: d85560ed Author: lawrence.andrews Committer: Alexey Ivanov Date: 2021-08-20 17:45:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d85560ed0f10a586b659db1c0201373457f1a5a9 8267161: Write automated test case for JDK-4479161 Reviewed-by: serb, aivanov - test/jdk/java/awt/im/4959409/bug4959409.html ! test/jdk/java/awt/im/4959409/bug4959409.java Changeset: 04a806ec Author: Sean Coffey Date: 2021-08-20 20:10:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/04a806ec86a388b8de31d42f904c4321beb69e14 8270344: Session resumption errors Reviewed-by: xuelei ! src/java.base/share/classes/sun/security/ssl/ClientHello.java ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java ! src/java.base/share/classes/sun/security/ssl/TransportContext.java + test/jdk/sun/security/ssl/SSLSessionImpl/InvalidateSession.java Changeset: f77a1a15 Author: David Holmes Date: 2021-08-22 01:13:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f77a1a156f3da9068d012d9227c7ee0fee58f571 8272472: StackGuardPages test doesn't build with glibc 2.34 Reviewed-by: shade, stuefe, jiefu ! test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c Changeset: b690f296 Author: Alan Hayward Committer: Nick Gasson Date: 2021-08-23 01:41:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b690f29699180149d33b6a83de10697790587a87 8269687: pauth_aarch64.hpp include name is incorrect Reviewed-by: rbackman, ngasson ! src/hotspot/cpu/aarch64/pauth_aarch64.hpp ! src/hotspot/os_cpu/bsd_aarch64/pauth_bsd_aarch64.inline.hpp ! src/hotspot/os_cpu/windows_aarch64/pauth_windows_aarch64.inline.hpp Changeset: e8a289e7 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-23 06:12:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e8a289e77d70d31f2f7d1a8dea620062dbdb3e2a 8272609: Add string deduplication support to SerialGC Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/serial/defNewGeneration.cpp ! src/hotspot/share/gc/serial/defNewGeneration.hpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp ! src/hotspot/share/gc/serial/markSweep.inline.hpp ! src/hotspot/share/gc/serial/serialHeap.cpp ! src/hotspot/share/gc/serial/serialHeap.hpp + src/hotspot/share/gc/serial/serialStringDedup.cpp + src/hotspot/share/gc/serial/serialStringDedup.hpp + src/hotspot/share/gc/serial/serialStringDedup.inline.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: b7f75c0a Author: Matthias Baesken Date: 2021-08-23 06:39:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b7f75c0a735f0cf40ae2288d1d0ae96a571a4155 8271142: package help is not displayed for missing X11/extensions/Xrandr.h Reviewed-by: clanger ! make/autoconf/help.m4 Changeset: 741f58c1 Author: Tongbao Zhang Committer: Stefan Karlsson Date: 2021-08-23 11:54:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/741f58c18c3dc49c5e1b793e411d8479770f2772 8272417: ZGC: fastdebug build crashes when printing ClassLoaderData Reviewed-by: stefank, pliden ! src/hotspot/share/classfile/classLoaderData.cpp Changeset: d542745d Author: Ivan Walulya Date: 2021-08-23 12:58:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d542745dbe0f58f510108d15f7e310ec27f560db 8267894: Skip work for empty regions in G1 Full GC Reviewed-by: sjohanss, tschatzl ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullCollector.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp ! src/hotspot/share/gc/g1/g1FullGCHeapRegionAttr.hpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp Changeset: 594e5161 Author: Albert Mingkun Yang Date: 2021-08-23 14:00:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/594e5161b48382d61509b4969bc8f52c3c076452 8272778: Consolidate is_instance and is_instance_inlined in java_lang_String Reviewed-by: coleenp, redestad ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp ! src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp ! src/hotspot/share/gc/serial/markSweep.inline.hpp ! src/hotspot/share/gc/serial/serialStringDedup.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/prims/methodHandles.cpp Changeset: 18840724 Author: Jonathan Gibbons Date: 2021-08-23 17:31:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/18840724749c839259688bfa052652a1f34a378a 8265253: javac -Xdoclint:all gives "no comment" warning for code that can't be commented Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java + test/langtools/tools/doclint/AnonClassTest.java + test/langtools/tools/doclint/AnonClassTest.out Changeset: 709b5910 Author: Igor Ignatyev Date: 2021-08-23 18:03:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/709b5910c35ad081b2367435cbc689414098b87a 8272553: several hotspot runtime/CommandLine tests don't check exit code Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/CommandLine/CompilerConfigFileWarning.java ! test/hotspot/jtreg/runtime/CommandLine/ConfigFileWarning.java ! test/hotspot/jtreg/runtime/CommandLine/ObsoleteFlagErrorMessage.java ! test/hotspot/jtreg/runtime/CommandLine/PrintTouchedMethods.java ! test/hotspot/jtreg/runtime/CommandLine/TestHexArguments.java ! test/hotspot/jtreg/runtime/CommandLine/TestVMOptions.java ! test/hotspot/jtreg/runtime/CommandLine/VMOptionWarning.java Changeset: ad92033f Author: Tom Rodriguez Date: 2021-08-23 18:43:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ad92033fccbf4ec9310ea5b3024be61c082ee5bb 8272736: [JVMCI] Add API for reading and writing JVMCI thread locals Reviewed-by: kvn, dnsimon ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java Changeset: 2ff4c01d Author: Vladimir Ivanov Date: 2021-08-23 20:23:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ff4c01d42f1afcc53abd48e074356fb4a700754 8271600: C2: CheckCastPP which should closely follow Allocate is sunk of a loop Reviewed-by: chagedorn, roland ! src/hotspot/share/opto/loopopts.cpp Changeset: 9bc02322 Author: Maxim Kartashev Committer: Sergey Bylokhov Date: 2021-08-23 20:28:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9bc023220fbbb0b6ea1ed1a0ca2aa3848764e8cd 8269223: -Xcheck:jni WARNINGs working with fonts on Linux Reviewed-by: prr, serb ! src/java.desktop/share/native/libfontmanager/freetypeScaler.c ! src/java.desktop/windows/native/libawt/java2d/d3d/D3DRenderQueue.cpp ! src/java.desktop/windows/native/libawt/windows/awt_Component.cpp ! src/java.desktop/windows/native/libawt/windows/awt_DesktopProperties.cpp + test/jdk/java/awt/font/JNICheck/FreeTypeScalerJNICheck.java Changeset: 22ef4f06 Author: Prasanta Sadhukhan Date: 2021-08-24 04:02:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/22ef4f065315c1238216849ce9ce71b8207b43f8 5015261: NPE may be thrown if JDesktopIcon is set to null on a JInternalFrame Reviewed-by: serb, prr, aivanov ! src/java.desktop/share/classes/javax/swing/JInternalFrame.java Changeset: 7f80683c Author: Aleksey Shipilev Date: 2021-08-24 10:08:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7f80683cfeee3c069f48d5bce45fa92b2381b518 8272783: Epsilon: Refactor tests to improve performance Reviewed-by: tschatzl ! test/hotspot/jtreg/gc/epsilon/TestAlignment.java ! test/hotspot/jtreg/gc/epsilon/TestAlwaysPretouch.java ! test/hotspot/jtreg/gc/epsilon/TestArraycopyCheckcast.java ! test/hotspot/jtreg/gc/epsilon/TestByteArrays.java ! test/hotspot/jtreg/gc/epsilon/TestClasses.java ! test/hotspot/jtreg/gc/epsilon/TestDieDefault.java ! test/hotspot/jtreg/gc/epsilon/TestDieWithHeapDump.java ! test/hotspot/jtreg/gc/epsilon/TestDieWithOnError.java ! test/hotspot/jtreg/gc/epsilon/TestElasticTLAB.java ! test/hotspot/jtreg/gc/epsilon/TestElasticTLABDecay.java ! test/hotspot/jtreg/gc/epsilon/TestEpsilonEnabled.java ! test/hotspot/jtreg/gc/epsilon/TestHelloWorld.java ! test/hotspot/jtreg/gc/epsilon/TestLogTrace.java ! test/hotspot/jtreg/gc/epsilon/TestManyThreads.java ! test/hotspot/jtreg/gc/epsilon/TestMaxTLAB.java ! test/hotspot/jtreg/gc/epsilon/TestMemoryMXBeans.java ! test/hotspot/jtreg/gc/epsilon/TestMemoryPools.java ! test/hotspot/jtreg/gc/epsilon/TestObjects.java ! test/hotspot/jtreg/gc/epsilon/TestPrintHeapSteps.java ! test/hotspot/jtreg/gc/epsilon/TestRefArrays.java ! test/hotspot/jtreg/gc/epsilon/TestUpdateCountersSteps.java Changeset: 928b9724 Author: Albert Mingkun Yang Date: 2021-08-24 12:14:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/928b9724c98c3377f96f5c3786ef2d8d79485dfe 8271930: Simplify end_card calculation in G1BlockOffsetTablePart::verify Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp Changeset: 0597cde8 Author: Kim Barrett Date: 2021-08-24 13:17:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0597cde87deb5ba7bcd84e47b3c10329f758067d 8221360: Eliminate Shared_DirtyCardQ_lock Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BarrierSet.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.hpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/g1/g1RemSet.hpp - src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.cpp - src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: 74543069 Author: Patricio Chilano Mateo Date: 2021-08-24 14:09:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7454306920bcd9e4397de32fae2fdf4ec688bded 8272526: Cleanup ThreadStateTransition class Reviewed-by: dholmes, rehn, coleenp ! src/hotspot/share/prims/jni.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/universalUpcallHandler.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/javaCalls.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/thread.cpp ! test/hotspot/jtreg/runtime/Unsafe/InternalErrorTest.java Changeset: 94f5e441 Author: Jonathan Gibbons Date: 2021-08-24 14:41:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/94f5e441f637b7a75227ba11a2b25d70f96cd274 8271258: @param with non-ascii variable names produces incorrect results Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! test/langtools/jdk/javadoc/doclet/testUnicode/TestUnicode.java Changeset: 2309b7d8 Author: Sergei Ustimenko Committer: Daniel Fuchs Date: 2021-08-24 14:49:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2309b7d8fc37e9ba8f80f7820ae2875ccc3b07fd 8253178: Replace LinkedList Impl in net.http.FilterFactory Reviewed-by: dfuchs ! src/java.net.http/share/classes/jdk/internal/net/http/FilterFactory.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java Changeset: 6e0328f5 Author: Albert Mingkun Yang Date: 2021-08-24 15:21:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6e0328f5829282b56327aa0128774cb916275d45 8272725: G1: add documentation on needs_remset_update_t vs bool Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1HeapRegionAttr.hpp Changeset: f681d654 Author: Phil Race Date: 2021-08-24 15:23:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f681d6544ac2506cb72e45c1f9ed8dfbbde099f2 8272806: [macOS] "Apple AWT Internal Exception" when input method is changed Reviewed-by: serb, dmarkov, azvegint ! src/java.desktop/macosx/native/libawt_lwawt/awt/CInputMethod.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m Changeset: f608e81a Author: Calvin Cheung Date: 2021-08-24 15:31:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f608e81ad8309a001b8a92563a93b8adee1ce2b8 8264322: Generate CDS archive when creating custom JDK image Reviewed-by: mchung, alanb ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/ImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ExecutableImage.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java + src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/CDSPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/plugins.properties ! src/jdk.jlink/share/classes/module-info.java + test/jdk/tools/jlink/plugins/CDSPluginTest.java Changeset: d34f17c6 Author: Jonathan Gibbons Date: 2021-08-24 16:10:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d34f17c6973748693de1bdd040bc3e8a0f15f197 8270195: Add missing links between methods of JavaFX properties Reviewed-by: kcr, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/CommentUtils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PropertyBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java + test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXCombo.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXMissingPropComments.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/pkg2/Test.java ! test/langtools/jdk/javadoc/doclet/testProperty/TestProperty.java Changeset: aaedac63 Author: Brian Burkhalter Date: 2021-08-24 17:04:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/aaedac635a0a7ca1f73dcf85336230cc537fcdf2 8265261: java/nio/file/Files/InterruptCopy.java fails with java.lang.RuntimeException: Copy was not interrupted Reviewed-by: dfuchs ! test/jdk/java/nio/file/Files/InterruptCopy.java Changeset: c547ead4 Author: Calvin Cheung Date: 2021-08-24 18:09:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c547ead493fafb6716550996a83276afc0ec018a 8272916: Copyright year was modified unintentionally in jlink.properties and ImagePluginStack.java Reviewed-by: bpb ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Changeset: 6ace805f Author: Igor Ignatyev Date: 2021-08-24 18:43:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6ace805f8c69b273bf998f084f9651bc5bcd52b6 8272856: DoubleFlagWithIntegerValue uses G1GC-only flag Reviewed-by: dholmes, kbarrett ! test/hotspot/jtreg/runtime/CommandLine/DoubleFlagWithIntegerValue.java Changeset: 0e7288ff Author: Smita Kamath Committer: Anthony Scarpino Date: 2021-08-24 18:48:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0e7288ffbf635b9fdb17e8017e9a4f673ca0501d 8267125: AES Galois CounterMode (GCM) interleaved implementation using AVX512 + VAES instructions Co-authored-by: Smita Kamath Co-authored-by: Tomasz Kantecki Co-authored-by: Anthony Scarpino Reviewed-by: kvn, valeriep ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86_aes.cpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/share/classfile/vmIntrinsics.cpp ! src/hotspot/share/classfile/vmIntrinsics.hpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/opto/c2compiler.cpp ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/runtime/stubRoutines.cpp ! src/hotspot/share/runtime/stubRoutines.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/java.base/share/classes/com/sun/crypto/provider/GHASH.java ! src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java ! test/hotspot/jtreg/compiler/codegen/aes/TestAESMain.java Changeset: b17b821a Author: Andy Herrick Date: 2021-08-24 20:59:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b17b821a570930e4188bcdfb396f0a7abe99caf6 8272639: jpackaged applications using microphone on mac Reviewed-by: almatvee, serb ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/Info-lite.plist.template ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/sandbox.plist Changeset: 0f428ca5 Author: casparcwang Committer: Jie Fu Date: 2021-08-25 01:16:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0f428ca533627e758cdca599d4589f39c21e27b6 8272570: C2: crash in PhaseCFG::global_code_motion Co-authored-by: Hui Shi Reviewed-by: thartmann, rbackman ! src/hotspot/share/opto/lcm.cpp + test/hotspot/jtreg/compiler/regalloc/TestGCMRecalcPressureNodes.java Changeset: 1e3e333f Author: Albert Mingkun Yang Date: 2021-08-25 07:33:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1e3e333f73fc448725175eba733c3eaf2f1b61b8 8272884: Make VoidClosure::do_void pure virtual Reviewed-by: kbarrett, dholmes ! src/hotspot/share/memory/iterator.cpp ! src/hotspot/share/memory/iterator.hpp Changeset: c5a27125 Author: Aleksey Shipilev Date: 2021-08-25 08:05:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c5a271259d9761aaae9298e9f29ebd93d734fb0e 8272850: Drop zapping values in the Zap* option descriptions Reviewed-by: stefank, kbarrett ! src/hotspot/share/runtime/globals.hpp Changeset: 63e062fb Author: Ivan Walulya Date: 2021-08-25 10:18:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/63e062fb78f925782cf4c9641b54f266bcbebc5c 8236176: Parallel GC SplitInfo comment should be updated for shadow regions Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.hpp Changeset: 2ef68711 Author: Coleen Phillimore Date: 2021-08-25 13:25:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ef6871118109b294e3148c8f15d4335039dd121 8272447: Remove 'native' ranked Mutex Reviewed-by: stuefe, pchilanomate ! src/hotspot/share/memory/metaspace/testHelpers.cpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/mutex.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! test/hotspot/gtest/metaspace/test_is_metaspace_obj.cpp ! test/hotspot/gtest/metaspace/test_metaspacearena.cpp ! test/hotspot/gtest/metaspace/test_metaspacearena_stress.cpp ! test/hotspot/gtest/runtime/test_mutex.cpp Changeset: e36cbd8e Author: Ivan Walulya Date: 2021-08-25 14:33:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e36cbd8e05774ea9847c69f9987a2242589acf7e 8242847: G1 should not clear mark bitmaps with no marks Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.inline.hpp Changeset: 7212561d Author: Zhengyu Gu Date: 2021-08-25 20:16:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7212561dd1ec65d7f31792959f0eaaab6229eaf4 8267188: gc/stringdedup/TestStringDeduplicationInterned.java fails with Shenandoah Reviewed-by: rkennke, shade ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahSTWMark.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java Changeset: 673ce7ef Author: Igor Veresov Date: 2021-08-26 00:17:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/673ce7efa56e7eb54266af6fe795d46d57f51bdc 8272873: C2: Inlining should not depend on absolute call site counts Reviewed-by: kvn, vlivanov, dlong ! src/hotspot/cpu/aarch64/globals_aarch64.hpp ! src/hotspot/cpu/arm/globals_arm.hpp ! src/hotspot/cpu/ppc/globals_ppc.hpp ! src/hotspot/cpu/s390/globals_s390.hpp ! src/hotspot/cpu/x86/globals_x86.hpp ! src/hotspot/cpu/zero/globals_zero.hpp ! src/hotspot/share/opto/bytecodeInfo.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! test/lib-test/jdk/test/whitebox/vm_flags/IntxTest.java Changeset: c4c76e2f Author: David Holmes Date: 2021-08-26 02:24:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c4c76e2f34f7e709f8b3c960d8c796ff4e2dc4a5 8272811: Document the effects of building with _GNU_SOURCE in os_posix.hpp Reviewed-by: iklam ! src/hotspot/os/posix/os_posix.hpp Changeset: a3308af0 Author: Aleksey Shipilev Date: 2021-08-26 06:51:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a3308af0605bf936d9a9fb7093787a315ccc1e2a 8272836: Limit run time for java/lang/invoke/LFCaching tests Reviewed-by: redestad, iignatyev ! test/jdk/java/lang/invoke/LFCaching/LambdaFormTestCase.java Changeset: 49b2789a Author: Alexey Ushakov Date: 2021-08-26 07:28:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/49b2789a49e4e476dfcdf0a65e061a40264a4683 8262751: RenderPipelineState assertion error in J2DDemo Reviewed-by: jdv ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLPaints.h ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLPaints.m Changeset: 9166ba37 Author: Tobias Hartmann Date: 2021-08-26 08:34:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9166ba37b631aa7ae641488f6167cdbd7fcdff00 8272973: Incorrect compile command used by TestIllegalArrayCopyBeforeInfiniteLoop Reviewed-by: chagedorn, jiefu, neliasso ! test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java Changeset: b94fd32f Author: Magnus Ihse Bursie Date: 2021-08-26 10:00:21 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b94fd32f08bbb0012874eb918a4a1fe2d06eb943 8272859: Javadoc external links should only have feature version number in URL Reviewed-by: iris ! make/conf/javadoc.conf Changeset: 11c9fd82 Author: Albert Mingkun Yang Date: 2021-08-26 10:06:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/11c9fd8298030200727a0e682fd9afb69ca8eb81 8272975: ParallelGC: add documentation to heap memory layout Co-authored-by: Thomas Schatzl Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp Changeset: e43a907f Author: Prasanta Sadhukhan Date: 2021-08-26 12:04:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e43a907f20f99fa1f788fcbe2e99631dd01578d4 8271315: Redo: Nimbus JTree renderer properties persist across L&F changes Reviewed-by: aivanov ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusIcon.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf ! src/java.desktop/share/classes/javax/swing/plaf/synth/SynthLabelUI.java + test/jdk/javax/swing/plaf/nimbus/NimbusJTreeSelTextColor.java + test/jdk/javax/swing/plaf/nimbus/NimbusPropertiesDoNotImplUIResource.java Changeset: c4205305 Author: Alexey Ushakov Date: 2021-08-26 12:56:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c4205305496f73f49e58e64dd303154fca5bfafd 8272481: [macos] javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java fails Reviewed-by: serb, jdv ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! test/jdk/ProblemList.txt Changeset: 845e1cea Author: Ivan Walulya Date: 2021-08-26 13:41:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/845e1cea8dcf0e902a2b6d3bf87749108c21c320 8272983: G1 Add marking details to eager reclaim logging Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp Changeset: fe7d7088 Author: Naoto Sato Date: 2021-08-26 16:21:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fe7d70886cc9985478c5810eff0790648a9aae41 8272473: Parsing epoch seconds at a DST transition with a non-UTC parser is wrong Reviewed-by: joehw, rriggs, iris, lancea, scolebourne ! src/java.base/share/classes/java/time/format/Parsed.java ! test/jdk/java/time/test/java/time/format/TestDateTimeParsing.java Changeset: d732c309 Author: Andrey Turbanov Committer: Sergey Bylokhov Date: 2021-08-26 20:47:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d732c3091fea0a7c6d6767227de89002564504e5 8272863: Replace usages of Collections.sort with List.sort call in public java modules Reviewed-by: serb, dfuchs, naoto ! src/java.base/share/classes/java/net/CookieManager.java ! src/java.base/share/classes/java/time/format/DateTimeTextProvider.java ! src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java ! src/java.base/share/classes/sun/security/provider/certpath/PKIX.java ! src/java.base/windows/classes/java/lang/ProcessEnvironment.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTreeUI.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java ! src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java ! src/java.desktop/unix/classes/sun/font/XRGlyphCache.java ! src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java Changeset: b16a04eb Author: Yasumasa Suenaga Date: 2021-08-27 05:06:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b16a04ebf749a93d89fb51b96baceff36fe1d730 8271186: Add UL option to replace newline char Reviewed-by: iklam, dholmes ! src/hotspot/share/logging/logConfiguration.cpp ! src/hotspot/share/logging/logFileOutput.cpp ! src/hotspot/share/logging/logFileStreamOutput.cpp ! src/hotspot/share/logging/logFileStreamOutput.hpp ! src/java.base/share/man/java.1 + test/hotspot/jtreg/runtime/logging/FoldMultilinesTest.java Changeset: 76baace2 Author: Bradford Wetmore Date: 2021-08-27 05:11:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/76baace2f07cb7b5d5fd20abd1612085bdba4292 8273045: Fix misc javadoc bugs in the java.security and javax.net.ssl code Reviewed-by: xuelei ! src/java.base/share/classes/java/security/AuthProvider.java ! src/java.base/share/classes/javax/net/ssl/SNIHostName.java ! src/java.base/share/classes/javax/net/ssl/SNIMatcher.java ! src/java.base/share/classes/javax/net/ssl/SNIServerName.java ! src/java.base/share/classes/javax/net/ssl/SSLContextSpi.java ! src/java.base/share/classes/javax/net/ssl/SSLEngine.java ! src/java.base/share/classes/javax/net/ssl/SSLEngineResult.java ! src/java.base/share/classes/javax/net/ssl/SSLServerSocket.java ! src/java.base/share/classes/javax/net/ssl/SSLSession.java ! src/java.base/share/classes/javax/net/ssl/X509ExtendedTrustManager.java Changeset: c925c7f3 Author: Tobias Hartmann Date: 2021-08-27 05:38:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c925c7f3e8e1470d0a157ca3387d11137366706f 8273020: LibraryCallKit::sharpen_unsafe_type does not handle narrow oop array Reviewed-by: chagedorn ! src/hotspot/share/opto/library_call.cpp Changeset: 46684a4e Author: Lin Zang Committer: Serguei Spitsyn Date: 2021-08-27 09:02:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/46684a4efa165d97c0ef8f56248ee82003acdb7b 8262386: resourcehogs/serviceability/sa/TestHeapDumpForLargeArray.java timed out Reviewed-by: cjplummer, sspitsyn ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! test/hotspot/jtreg/ProblemList.txt Changeset: ebd62bc0 Author: Aleksey Shipilev Date: 2021-08-27 09:35:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ebd62bc0433c56f3520b9e41621f18a1b736022b 8272846: Move some runtime/Metaspace/elastic/ tests out of tier1 Reviewed-by: mseledtsov, stuefe ! test/hotspot/jtreg/TEST.groups Changeset: a49a0c58 Author: Kim Barrett Date: 2021-08-27 10:32:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a49a0c58662bef48d02246193d86cc89fb9d030b 8273062: Generation::refs_discovery_is_xxx functions are unused Reviewed-by: ayang ! src/hotspot/share/gc/shared/generation.hpp Changeset: a64a49dd Author: duke Date: 2021-08-27 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a64a49dd8754c170af77075306b0be6e4922b93c Automatic merge of jdk:master into master Changeset: 21a22d31 Author: duke Date: 2021-08-27 11:00:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/21a22d313c26f504b0b36c64b07d1cbe5f034b5c Automatic merge of master into foreign-memaccess+abi ! src/hotspot/share/prims/universalUpcallHandler.cpp ! src/hotspot/share/prims/universalUpcallHandler.cpp From duke at openjdk.java.net Fri Aug 27 11:18:40 2021 From: duke at openjdk.java.net (duke) Date: Fri, 27 Aug 2021 11:18:40 GMT Subject: git: openjdk/panama-foreign: master: 61 new changesets Message-ID: <81ba0208-616f-4fe7-9853-8095b42eab11@openjdk.org> Changeset: d874e961 Author: Hamlin Li Date: 2021-08-20 11:26:11 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d874e9616f80324a53f3c8866ce500e55dfa308f 8271579: G1: Move copy before CAS in do_copy_to_survivor_space 8272070: G1: Simplify age calculation after JDK-8271579 Co-authored-by: shoubing ma Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/g1/g1ParScanThreadState.cpp Changeset: fb1dfc6f Author: Ivan Walulya Date: 2021-08-20 11:30:00 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fb1dfc6f49f62990aa9988e9d6f7ffd1adf45d8e 8267185: Add string deduplication support to ParallelGC Reviewed-by: kbarrett, ayang ! src/hotspot/share/gc/parallel/parallelScavengeHeap.cpp ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.cpp ! src/hotspot/share/gc/parallel/psCompactionManager.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.cpp ! src/hotspot/share/gc/parallel/psPromotionManager.hpp ! src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp + src/hotspot/share/gc/parallel/psStringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: c701f6e5 Author: Zhengyu Gu Date: 2021-08-20 12:23:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c701f6e5383030e0192bbd2d95059d9a5b9b0ab7 8272739: Misformatted error message in EventHandlerCreator Reviewed-by: mgronlun ! src/jdk.jfr/share/classes/jdk/jfr/internal/EventHandlerCreator.java Changeset: 86add21a Author: Vladimir Ivanov Date: 2021-08-20 12:41:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/86add21a85ec57de00aecb0a18bc99567a91d0d8 8223923: C2: Missing interference with mismatched unsafe accesses Reviewed-by: thartmann ! src/hotspot/share/opto/memnode.cpp + test/hotspot/jtreg/compiler/unsafe/MismatchedUnsafeAccessTest.java Changeset: 1ea437a4 Author: Jie Fu Date: 2021-08-20 12:43:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1ea437a4b87381b558cf8157ac52fc03e37ac507 8272720: Fix the implementation of loop unrolling heuristic with LoopPercentProfileLimit Reviewed-by: thartmann, rbackman ! src/hotspot/share/opto/loopTransform.cpp Changeset: d85560ed Author: lawrence.andrews Committer: Alexey Ivanov Date: 2021-08-20 17:45:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d85560ed0f10a586b659db1c0201373457f1a5a9 8267161: Write automated test case for JDK-4479161 Reviewed-by: serb, aivanov - test/jdk/java/awt/im/4959409/bug4959409.html ! test/jdk/java/awt/im/4959409/bug4959409.java Changeset: 04a806ec Author: Sean Coffey Date: 2021-08-20 20:10:42 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/04a806ec86a388b8de31d42f904c4321beb69e14 8270344: Session resumption errors Reviewed-by: xuelei ! src/java.base/share/classes/sun/security/ssl/ClientHello.java ! src/java.base/share/classes/sun/security/ssl/HandshakeContext.java ! src/java.base/share/classes/sun/security/ssl/TransportContext.java + test/jdk/sun/security/ssl/SSLSessionImpl/InvalidateSession.java Changeset: f77a1a15 Author: David Holmes Date: 2021-08-22 01:13:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f77a1a156f3da9068d012d9227c7ee0fee58f571 8272472: StackGuardPages test doesn't build with glibc 2.34 Reviewed-by: shade, stuefe, jiefu ! test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c Changeset: b690f296 Author: Alan Hayward Committer: Nick Gasson Date: 2021-08-23 01:41:27 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b690f29699180149d33b6a83de10697790587a87 8269687: pauth_aarch64.hpp include name is incorrect Reviewed-by: rbackman, ngasson ! src/hotspot/cpu/aarch64/pauth_aarch64.hpp ! src/hotspot/os_cpu/bsd_aarch64/pauth_bsd_aarch64.inline.hpp ! src/hotspot/os_cpu/windows_aarch64/pauth_windows_aarch64.inline.hpp Changeset: e8a289e7 Author: Denghui Dong Committer: Yi Yang Date: 2021-08-23 06:12:01 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e8a289e77d70d31f2f7d1a8dea620062dbdb3e2a 8272609: Add string deduplication support to SerialGC Reviewed-by: kbarrett, iwalulya ! src/hotspot/share/gc/serial/defNewGeneration.cpp ! src/hotspot/share/gc/serial/defNewGeneration.hpp ! src/hotspot/share/gc/serial/genMarkSweep.cpp ! src/hotspot/share/gc/serial/markSweep.cpp ! src/hotspot/share/gc/serial/markSweep.hpp ! src/hotspot/share/gc/serial/markSweep.inline.hpp ! src/hotspot/share/gc/serial/serialHeap.cpp ! src/hotspot/share/gc/serial/serialHeap.hpp + src/hotspot/share/gc/serial/serialStringDedup.cpp + src/hotspot/share/gc/serial/serialStringDedup.hpp + src/hotspot/share/gc/serial/serialStringDedup.inline.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedup.hpp ! src/hotspot/share/gc/shared/stringdedup/stringDedupConfig.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationAgeThreshold.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationFullGC.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationPrintOptions.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationTableResize.java ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationYoungGC.java Changeset: b7f75c0a Author: Matthias Baesken Date: 2021-08-23 06:39:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b7f75c0a735f0cf40ae2288d1d0ae96a571a4155 8271142: package help is not displayed for missing X11/extensions/Xrandr.h Reviewed-by: clanger ! make/autoconf/help.m4 Changeset: 741f58c1 Author: Tongbao Zhang Committer: Stefan Karlsson Date: 2021-08-23 11:54:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/741f58c18c3dc49c5e1b793e411d8479770f2772 8272417: ZGC: fastdebug build crashes when printing ClassLoaderData Reviewed-by: stefank, pliden ! src/hotspot/share/classfile/classLoaderData.cpp Changeset: d542745d Author: Ivan Walulya Date: 2021-08-23 12:58:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d542745dbe0f58f510108d15f7e310ec27f560db 8267894: Skip work for empty regions in G1 Full GC Reviewed-by: sjohanss, tschatzl ! src/hotspot/share/gc/g1/g1FullCollector.cpp ! src/hotspot/share/gc/g1/g1FullCollector.hpp ! src/hotspot/share/gc/g1/g1FullCollector.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCCompactTask.cpp ! src/hotspot/share/gc/g1/g1FullGCHeapRegionAttr.hpp ! src/hotspot/share/gc/g1/g1FullGCPrepareTask.cpp Changeset: 594e5161 Author: Albert Mingkun Yang Date: 2021-08-23 14:00:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/594e5161b48382d61509b4969bc8f52c3c076452 8272778: Consolidate is_instance and is_instance_inlined in java_lang_String Reviewed-by: coleenp, redestad ! src/hotspot/share/classfile/javaClasses.cpp ! src/hotspot/share/classfile/javaClasses.hpp ! src/hotspot/share/classfile/javaClasses.inline.hpp ! src/hotspot/share/gc/g1/g1FullGCMarker.inline.hpp ! src/hotspot/share/gc/parallel/psCompactionManager.inline.hpp ! src/hotspot/share/gc/parallel/psPromotionManager.inline.hpp ! src/hotspot/share/gc/serial/markSweep.inline.hpp ! src/hotspot/share/gc/serial/serialStringDedup.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahStringDedup.inline.hpp ! src/hotspot/share/gc/z/zMark.cpp ! src/hotspot/share/prims/methodHandles.cpp Changeset: 18840724 Author: Jonathan Gibbons Date: 2021-08-23 17:31:29 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/18840724749c839259688bfa052652a1f34a378a 8265253: javac -Xdoclint:all gives "no comment" warning for code that can't be commented Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java + test/langtools/tools/doclint/AnonClassTest.java + test/langtools/tools/doclint/AnonClassTest.out Changeset: 709b5910 Author: Igor Ignatyev Date: 2021-08-23 18:03:13 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/709b5910c35ad081b2367435cbc689414098b87a 8272553: several hotspot runtime/CommandLine tests don't check exit code Reviewed-by: dholmes ! test/hotspot/jtreg/runtime/CommandLine/CompilerConfigFileWarning.java ! test/hotspot/jtreg/runtime/CommandLine/ConfigFileWarning.java ! test/hotspot/jtreg/runtime/CommandLine/ObsoleteFlagErrorMessage.java ! test/hotspot/jtreg/runtime/CommandLine/PrintTouchedMethods.java ! test/hotspot/jtreg/runtime/CommandLine/TestHexArguments.java ! test/hotspot/jtreg/runtime/CommandLine/TestVMOptions.java ! test/hotspot/jtreg/runtime/CommandLine/VMOptionWarning.java Changeset: ad92033f Author: Tom Rodriguez Date: 2021-08-23 18:43:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ad92033fccbf4ec9310ea5b3024be61c082ee5bb 8272736: [JVMCI] Add API for reading and writing JVMCI thread locals Reviewed-by: kvn, dnsimon ! src/hotspot/share/jvmci/jvmciCompilerToVM.cpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/runtime/thread.cpp ! src/hotspot/share/runtime/thread.hpp ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/CompilerToVM.java ! src/jdk.internal.vm.ci/share/classes/jdk.vm.ci.hotspot/src/jdk/vm/ci/hotspot/HotSpotJVMCIRuntime.java Changeset: 2ff4c01d Author: Vladimir Ivanov Date: 2021-08-23 20:23:41 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ff4c01d42f1afcc53abd48e074356fb4a700754 8271600: C2: CheckCastPP which should closely follow Allocate is sunk of a loop Reviewed-by: chagedorn, roland ! src/hotspot/share/opto/loopopts.cpp Changeset: 9bc02322 Author: Maxim Kartashev Committer: Sergey Bylokhov Date: 2021-08-23 20:28:17 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9bc023220fbbb0b6ea1ed1a0ca2aa3848764e8cd 8269223: -Xcheck:jni WARNINGs working with fonts on Linux Reviewed-by: prr, serb ! src/java.desktop/share/native/libfontmanager/freetypeScaler.c ! src/java.desktop/windows/native/libawt/java2d/d3d/D3DRenderQueue.cpp ! src/java.desktop/windows/native/libawt/windows/awt_Component.cpp ! src/java.desktop/windows/native/libawt/windows/awt_DesktopProperties.cpp + test/jdk/java/awt/font/JNICheck/FreeTypeScalerJNICheck.java Changeset: 22ef4f06 Author: Prasanta Sadhukhan Date: 2021-08-24 04:02:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/22ef4f065315c1238216849ce9ce71b8207b43f8 5015261: NPE may be thrown if JDesktopIcon is set to null on a JInternalFrame Reviewed-by: serb, prr, aivanov ! src/java.desktop/share/classes/javax/swing/JInternalFrame.java Changeset: 7f80683c Author: Aleksey Shipilev Date: 2021-08-24 10:08:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7f80683cfeee3c069f48d5bce45fa92b2381b518 8272783: Epsilon: Refactor tests to improve performance Reviewed-by: tschatzl ! test/hotspot/jtreg/gc/epsilon/TestAlignment.java ! test/hotspot/jtreg/gc/epsilon/TestAlwaysPretouch.java ! test/hotspot/jtreg/gc/epsilon/TestArraycopyCheckcast.java ! test/hotspot/jtreg/gc/epsilon/TestByteArrays.java ! test/hotspot/jtreg/gc/epsilon/TestClasses.java ! test/hotspot/jtreg/gc/epsilon/TestDieDefault.java ! test/hotspot/jtreg/gc/epsilon/TestDieWithHeapDump.java ! test/hotspot/jtreg/gc/epsilon/TestDieWithOnError.java ! test/hotspot/jtreg/gc/epsilon/TestElasticTLAB.java ! test/hotspot/jtreg/gc/epsilon/TestElasticTLABDecay.java ! test/hotspot/jtreg/gc/epsilon/TestEpsilonEnabled.java ! test/hotspot/jtreg/gc/epsilon/TestHelloWorld.java ! test/hotspot/jtreg/gc/epsilon/TestLogTrace.java ! test/hotspot/jtreg/gc/epsilon/TestManyThreads.java ! test/hotspot/jtreg/gc/epsilon/TestMaxTLAB.java ! test/hotspot/jtreg/gc/epsilon/TestMemoryMXBeans.java ! test/hotspot/jtreg/gc/epsilon/TestMemoryPools.java ! test/hotspot/jtreg/gc/epsilon/TestObjects.java ! test/hotspot/jtreg/gc/epsilon/TestPrintHeapSteps.java ! test/hotspot/jtreg/gc/epsilon/TestRefArrays.java ! test/hotspot/jtreg/gc/epsilon/TestUpdateCountersSteps.java Changeset: 928b9724 Author: Albert Mingkun Yang Date: 2021-08-24 12:14:07 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/928b9724c98c3377f96f5c3786ef2d8d79485dfe 8271930: Simplify end_card calculation in G1BlockOffsetTablePart::verify Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BlockOffsetTable.cpp ! src/hotspot/share/gc/g1/g1BlockOffsetTable.hpp ! src/hotspot/share/gc/g1/heapRegion.cpp Changeset: 0597cde8 Author: Kim Barrett Date: 2021-08-24 13:17:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0597cde87deb5ba7bcd84e47b3c10329f758067d 8221360: Eliminate Shared_DirtyCardQ_lock Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1BarrierSet.cpp ! src/hotspot/share/gc/g1/g1BarrierSet.hpp ! src/hotspot/share/gc/g1/g1DirtyCardQueue.cpp ! src/hotspot/share/gc/g1/g1RemSet.cpp ! src/hotspot/share/gc/g1/g1RemSet.hpp - src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.cpp - src/hotspot/share/gc/g1/g1SharedDirtyCardQueue.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! src/hotspot/share/runtime/mutexLocker.hpp Changeset: 74543069 Author: Patricio Chilano Mateo Date: 2021-08-24 14:09:59 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7454306920bcd9e4397de32fae2fdf4ec688bded 8272526: Cleanup ThreadStateTransition class Reviewed-by: dholmes, rehn, coleenp ! src/hotspot/share/prims/jni.cpp ! src/hotspot/share/prims/jvmtiExport.cpp ! src/hotspot/share/prims/universalUpcallHandler.cpp ! src/hotspot/share/runtime/interfaceSupport.inline.hpp ! src/hotspot/share/runtime/javaCalls.cpp ! src/hotspot/share/runtime/safepoint.hpp ! src/hotspot/share/runtime/thread.cpp ! test/hotspot/jtreg/runtime/Unsafe/InternalErrorTest.java Changeset: 94f5e441 Author: Jonathan Gibbons Date: 2021-08-24 14:41:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/94f5e441f637b7a75227ba11a2b25d70f96cd274 8271258: @param with non-ascii variable names produces incorrect results Reviewed-by: hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/ParamTaglet.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/CommentHelper.java ! test/langtools/jdk/javadoc/doclet/testUnicode/TestUnicode.java Changeset: 2309b7d8 Author: Sergei Ustimenko Committer: Daniel Fuchs Date: 2021-08-24 14:49:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2309b7d8fc37e9ba8f80f7820ae2875ccc3b07fd 8253178: Replace LinkedList Impl in net.http.FilterFactory Reviewed-by: dfuchs ! src/java.net.http/share/classes/jdk/internal/net/http/FilterFactory.java ! src/java.net.http/share/classes/jdk/internal/net/http/HttpClientImpl.java ! src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java Changeset: 6e0328f5 Author: Albert Mingkun Yang Date: 2021-08-24 15:21:14 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6e0328f5829282b56327aa0128774cb916275d45 8272725: G1: add documentation on needs_remset_update_t vs bool Reviewed-by: tschatzl, iwalulya ! src/hotspot/share/gc/g1/g1HeapRegionAttr.hpp Changeset: f681d654 Author: Phil Race Date: 2021-08-24 15:23:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f681d6544ac2506cb72e45c1f9ed8dfbbde099f2 8272806: [macOS] "Apple AWT Internal Exception" when input method is changed Reviewed-by: serb, dmarkov, azvegint ! src/java.desktop/macosx/native/libawt_lwawt/awt/CInputMethod.m ! src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m Changeset: f608e81a Author: Calvin Cheung Date: 2021-08-24 15:31:20 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/f608e81ad8309a001b8a92563a93b8adee1ce2b8 8264322: Generate CDS archive when creating custom JDK image Reviewed-by: mchung, alanb ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/DefaultImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/builder/ImageBuilder.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ExecutableImage.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/Platform.java + src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/CDSPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/ExcludeVMPlugin.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/plugins.properties ! src/jdk.jlink/share/classes/module-info.java + test/jdk/tools/jlink/plugins/CDSPluginTest.java Changeset: d34f17c6 Author: Jonathan Gibbons Date: 2021-08-24 16:10:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d34f17c6973748693de1bdd040bc3e8a0f15f197 8270195: Add missing links between methods of JavaFX properties Reviewed-by: kcr, hannesw ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/CommentUtils.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/PropertyWriter.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/MemberSummaryBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/builders/PropertyBuilder.java ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/doclets.properties ! src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/util/VisibleMemberTable.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java + test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXCombo.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFXMissingPropComments.java ! test/langtools/jdk/javadoc/doclet/testJavaFX/pkg2/Test.java ! test/langtools/jdk/javadoc/doclet/testProperty/TestProperty.java Changeset: aaedac63 Author: Brian Burkhalter Date: 2021-08-24 17:04:35 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/aaedac635a0a7ca1f73dcf85336230cc537fcdf2 8265261: java/nio/file/Files/InterruptCopy.java fails with java.lang.RuntimeException: Copy was not interrupted Reviewed-by: dfuchs ! test/jdk/java/nio/file/Files/InterruptCopy.java Changeset: c547ead4 Author: Calvin Cheung Date: 2021-08-24 18:09:56 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c547ead493fafb6716550996a83276afc0ec018a 8272916: Copyright year was modified unintentionally in jlink.properties and ImagePluginStack.java Reviewed-by: bpb ! src/jdk.jlink/share/classes/jdk/tools/jlink/internal/ImagePluginStack.java ! src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Changeset: 6ace805f Author: Igor Ignatyev Date: 2021-08-24 18:43:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/6ace805f8c69b273bf998f084f9651bc5bcd52b6 8272856: DoubleFlagWithIntegerValue uses G1GC-only flag Reviewed-by: dholmes, kbarrett ! test/hotspot/jtreg/runtime/CommandLine/DoubleFlagWithIntegerValue.java Changeset: 0e7288ff Author: Smita Kamath Committer: Anthony Scarpino Date: 2021-08-24 18:48:31 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0e7288ffbf635b9fdb17e8017e9a4f673ca0501d 8267125: AES Galois CounterMode (GCM) interleaved implementation using AVX512 + VAES instructions Co-authored-by: Smita Kamath Co-authored-by: Tomasz Kantecki Co-authored-by: Anthony Scarpino Reviewed-by: kvn, valeriep ! src/hotspot/cpu/x86/macroAssembler_x86.hpp ! src/hotspot/cpu/x86/macroAssembler_x86_aes.cpp ! src/hotspot/cpu/x86/stubGenerator_x86_64.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.cpp ! src/hotspot/cpu/x86/stubRoutines_x86.hpp ! src/hotspot/share/classfile/vmIntrinsics.cpp ! src/hotspot/share/classfile/vmIntrinsics.hpp ! src/hotspot/share/jvmci/vmStructs_jvmci.cpp ! src/hotspot/share/opto/c2compiler.cpp ! src/hotspot/share/opto/escape.cpp ! src/hotspot/share/opto/graphKit.cpp ! src/hotspot/share/opto/library_call.cpp ! src/hotspot/share/opto/library_call.hpp ! src/hotspot/share/opto/runtime.cpp ! src/hotspot/share/opto/runtime.hpp ! src/hotspot/share/runtime/stubRoutines.cpp ! src/hotspot/share/runtime/stubRoutines.hpp ! src/hotspot/share/runtime/vmStructs.cpp ! src/java.base/share/classes/com/sun/crypto/provider/GHASH.java ! src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java ! test/hotspot/jtreg/compiler/codegen/aes/TestAESMain.java Changeset: b17b821a Author: Andy Herrick Date: 2021-08-24 20:59:43 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b17b821a570930e4188bcdfb396f0a7abe99caf6 8272639: jpackaged applications using microphone on mac Reviewed-by: almatvee, serb ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/Info-lite.plist.template ! src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/resources/sandbox.plist Changeset: 0f428ca5 Author: casparcwang Committer: Jie Fu Date: 2021-08-25 01:16:48 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/0f428ca533627e758cdca599d4589f39c21e27b6 8272570: C2: crash in PhaseCFG::global_code_motion Co-authored-by: Hui Shi Reviewed-by: thartmann, rbackman ! src/hotspot/share/opto/lcm.cpp + test/hotspot/jtreg/compiler/regalloc/TestGCMRecalcPressureNodes.java Changeset: 1e3e333f Author: Albert Mingkun Yang Date: 2021-08-25 07:33:18 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/1e3e333f73fc448725175eba733c3eaf2f1b61b8 8272884: Make VoidClosure::do_void pure virtual Reviewed-by: kbarrett, dholmes ! src/hotspot/share/memory/iterator.cpp ! src/hotspot/share/memory/iterator.hpp Changeset: c5a27125 Author: Aleksey Shipilev Date: 2021-08-25 08:05:47 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c5a271259d9761aaae9298e9f29ebd93d734fb0e 8272850: Drop zapping values in the Zap* option descriptions Reviewed-by: stefank, kbarrett ! src/hotspot/share/runtime/globals.hpp Changeset: 63e062fb Author: Ivan Walulya Date: 2021-08-25 10:18:54 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/63e062fb78f925782cf4c9641b54f266bcbebc5c 8236176: Parallel GC SplitInfo comment should be updated for shadow regions Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/parallel/psParallelCompact.cpp ! src/hotspot/share/gc/parallel/psParallelCompact.hpp Changeset: 2ef68711 Author: Coleen Phillimore Date: 2021-08-25 13:25:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/2ef6871118109b294e3148c8f15d4335039dd121 8272447: Remove 'native' ranked Mutex Reviewed-by: stuefe, pchilanomate ! src/hotspot/share/memory/metaspace/testHelpers.cpp ! src/hotspot/share/runtime/mutex.cpp ! src/hotspot/share/runtime/mutex.hpp ! src/hotspot/share/runtime/mutexLocker.cpp ! test/hotspot/gtest/metaspace/test_is_metaspace_obj.cpp ! test/hotspot/gtest/metaspace/test_metaspacearena.cpp ! test/hotspot/gtest/metaspace/test_metaspacearena_stress.cpp ! test/hotspot/gtest/runtime/test_mutex.cpp Changeset: e36cbd8e Author: Ivan Walulya Date: 2021-08-25 14:33:34 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e36cbd8e05774ea9847c69f9987a2242589acf7e 8242847: G1 should not clear mark bitmaps with no marks Reviewed-by: tschatzl, sjohanss ! src/hotspot/share/gc/g1/g1ConcurrentMark.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMark.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.cpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.hpp ! src/hotspot/share/gc/g1/g1ConcurrentMarkThread.inline.hpp Changeset: 7212561d Author: Zhengyu Gu Date: 2021-08-25 20:16:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/7212561dd1ec65d7f31792959f0eaaab6229eaf4 8267188: gc/stringdedup/TestStringDeduplicationInterned.java fails with Shenandoah Reviewed-by: rkennke, shade ! src/hotspot/share/gc/shenandoah/shenandoahConcurrentMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.cpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.hpp ! src/hotspot/share/gc/shenandoah/shenandoahMark.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.hpp ! src/hotspot/share/gc/shenandoah/shenandoahOopClosures.inline.hpp ! src/hotspot/share/gc/shenandoah/shenandoahSTWMark.cpp ! test/hotspot/jtreg/gc/stringdedup/TestStringDeduplicationInterned.java Changeset: 673ce7ef Author: Igor Veresov Date: 2021-08-26 00:17:15 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/673ce7efa56e7eb54266af6fe795d46d57f51bdc 8272873: C2: Inlining should not depend on absolute call site counts Reviewed-by: kvn, vlivanov, dlong ! src/hotspot/cpu/aarch64/globals_aarch64.hpp ! src/hotspot/cpu/arm/globals_arm.hpp ! src/hotspot/cpu/ppc/globals_ppc.hpp ! src/hotspot/cpu/s390/globals_s390.hpp ! src/hotspot/cpu/x86/globals_x86.hpp ! src/hotspot/cpu/zero/globals_zero.hpp ! src/hotspot/share/opto/bytecodeInfo.cpp ! src/hotspot/share/runtime/arguments.cpp ! src/hotspot/share/runtime/globals.hpp ! test/lib-test/jdk/test/whitebox/vm_flags/IntxTest.java Changeset: c4c76e2f Author: David Holmes Date: 2021-08-26 02:24:36 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c4c76e2f34f7e709f8b3c960d8c796ff4e2dc4a5 8272811: Document the effects of building with _GNU_SOURCE in os_posix.hpp Reviewed-by: iklam ! src/hotspot/os/posix/os_posix.hpp Changeset: a3308af0 Author: Aleksey Shipilev Date: 2021-08-26 06:51:19 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a3308af0605bf936d9a9fb7093787a315ccc1e2a 8272836: Limit run time for java/lang/invoke/LFCaching tests Reviewed-by: redestad, iignatyev ! test/jdk/java/lang/invoke/LFCaching/LambdaFormTestCase.java Changeset: 49b2789a Author: Alexey Ushakov Date: 2021-08-26 07:28:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/49b2789a49e4e476dfcdf0a65e061a40264a4683 8262751: RenderPipelineState assertion error in J2DDemo Reviewed-by: jdv ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLPaints.h ! src/java.desktop/macosx/native/libawt_lwawt/java2d/metal/MTLPaints.m Changeset: 9166ba37 Author: Tobias Hartmann Date: 2021-08-26 08:34:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/9166ba37b631aa7ae641488f6167cdbd7fcdff00 8272973: Incorrect compile command used by TestIllegalArrayCopyBeforeInfiniteLoop Reviewed-by: chagedorn, jiefu, neliasso ! test/hotspot/jtreg/compiler/arraycopy/TestIllegalArrayCopyBeforeInfiniteLoop.java Changeset: b94fd32f Author: Magnus Ihse Bursie Date: 2021-08-26 10:00:21 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b94fd32f08bbb0012874eb918a4a1fe2d06eb943 8272859: Javadoc external links should only have feature version number in URL Reviewed-by: iris ! make/conf/javadoc.conf Changeset: 11c9fd82 Author: Albert Mingkun Yang Date: 2021-08-26 10:06:38 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/11c9fd8298030200727a0e682fd9afb69ca8eb81 8272975: ParallelGC: add documentation to heap memory layout Co-authored-by: Thomas Schatzl Reviewed-by: tschatzl, kbarrett ! src/hotspot/share/gc/parallel/parallelScavengeHeap.hpp Changeset: e43a907f Author: Prasanta Sadhukhan Date: 2021-08-26 12:04:10 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/e43a907f20f99fa1f788fcbe2e99631dd01578d4 8271315: Redo: Nimbus JTree renderer properties persist across L&F changes Reviewed-by: aivanov ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusIcon.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf ! src/java.desktop/share/classes/javax/swing/plaf/synth/SynthLabelUI.java + test/jdk/javax/swing/plaf/nimbus/NimbusJTreeSelTextColor.java + test/jdk/javax/swing/plaf/nimbus/NimbusPropertiesDoNotImplUIResource.java Changeset: c4205305 Author: Alexey Ushakov Date: 2021-08-26 12:56:03 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c4205305496f73f49e58e64dd303154fca5bfafd 8272481: [macos] javax/swing/JFrame/NSTexturedJFrame/NSTexturedJFrame.java fails Reviewed-by: serb, jdv ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformView.java ! src/java.desktop/macosx/classes/sun/lwawt/macosx/CPlatformWindow.java ! test/jdk/ProblemList.txt Changeset: 845e1cea Author: Ivan Walulya Date: 2021-08-26 13:41:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/845e1cea8dcf0e902a2b6d3bf87749108c21c320 8272983: G1 Add marking details to eager reclaim logging Reviewed-by: tschatzl, ayang ! src/hotspot/share/gc/g1/g1CollectedHeap.cpp Changeset: fe7d7088 Author: Naoto Sato Date: 2021-08-26 16:21:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/fe7d70886cc9985478c5810eff0790648a9aae41 8272473: Parsing epoch seconds at a DST transition with a non-UTC parser is wrong Reviewed-by: joehw, rriggs, iris, lancea, scolebourne ! src/java.base/share/classes/java/time/format/Parsed.java ! test/jdk/java/time/test/java/time/format/TestDateTimeParsing.java Changeset: d732c309 Author: Andrey Turbanov Committer: Sergey Bylokhov Date: 2021-08-26 20:47:02 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/d732c3091fea0a7c6d6767227de89002564504e5 8272863: Replace usages of Collections.sort with List.sort call in public java modules Reviewed-by: serb, dfuchs, naoto ! src/java.base/share/classes/java/net/CookieManager.java ! src/java.base/share/classes/java/time/format/DateTimeTextProvider.java ! src/java.base/share/classes/sun/net/www/protocol/file/FileURLConnection.java ! src/java.base/share/classes/sun/security/provider/certpath/PKIX.java ! src/java.base/windows/classes/java/lang/ProcessEnvironment.java ! src/java.desktop/share/classes/javax/swing/plaf/basic/BasicTreeUI.java ! src/java.desktop/share/classes/javax/swing/plaf/nimbus/NimbusStyle.java ! src/java.desktop/share/classes/sun/awt/shell/ShellFolder.java ! src/java.desktop/unix/classes/sun/font/XRGlyphCache.java ! src/java.desktop/windows/classes/sun/awt/shell/Win32ShellFolder2.java Changeset: b16a04eb Author: Yasumasa Suenaga Date: 2021-08-27 05:06:52 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/b16a04ebf749a93d89fb51b96baceff36fe1d730 8271186: Add UL option to replace newline char Reviewed-by: iklam, dholmes ! src/hotspot/share/logging/logConfiguration.cpp ! src/hotspot/share/logging/logFileOutput.cpp ! src/hotspot/share/logging/logFileStreamOutput.cpp ! src/hotspot/share/logging/logFileStreamOutput.hpp ! src/java.base/share/man/java.1 + test/hotspot/jtreg/runtime/logging/FoldMultilinesTest.java Changeset: 76baace2 Author: Bradford Wetmore Date: 2021-08-27 05:11:25 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/76baace2f07cb7b5d5fd20abd1612085bdba4292 8273045: Fix misc javadoc bugs in the java.security and javax.net.ssl code Reviewed-by: xuelei ! src/java.base/share/classes/java/security/AuthProvider.java ! src/java.base/share/classes/javax/net/ssl/SNIHostName.java ! src/java.base/share/classes/javax/net/ssl/SNIMatcher.java ! src/java.base/share/classes/javax/net/ssl/SNIServerName.java ! src/java.base/share/classes/javax/net/ssl/SSLContextSpi.java ! src/java.base/share/classes/javax/net/ssl/SSLEngine.java ! src/java.base/share/classes/javax/net/ssl/SSLEngineResult.java ! src/java.base/share/classes/javax/net/ssl/SSLServerSocket.java ! src/java.base/share/classes/javax/net/ssl/SSLSession.java ! src/java.base/share/classes/javax/net/ssl/X509ExtendedTrustManager.java Changeset: c925c7f3 Author: Tobias Hartmann Date: 2021-08-27 05:38:24 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/c925c7f3e8e1470d0a157ca3387d11137366706f 8273020: LibraryCallKit::sharpen_unsafe_type does not handle narrow oop array Reviewed-by: chagedorn ! src/hotspot/share/opto/library_call.cpp Changeset: 46684a4e Author: Lin Zang Committer: Serguei Spitsyn Date: 2021-08-27 09:02:23 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/46684a4efa165d97c0ef8f56248ee82003acdb7b 8262386: resourcehogs/serviceability/sa/TestHeapDumpForLargeArray.java timed out Reviewed-by: cjplummer, sspitsyn ! src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/HeapHprofBinWriter.java ! test/hotspot/jtreg/ProblemList.txt Changeset: ebd62bc0 Author: Aleksey Shipilev Date: 2021-08-27 09:35:26 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/ebd62bc0433c56f3520b9e41621f18a1b736022b 8272846: Move some runtime/Metaspace/elastic/ tests out of tier1 Reviewed-by: mseledtsov, stuefe ! test/hotspot/jtreg/TEST.groups Changeset: a49a0c58 Author: Kim Barrett Date: 2021-08-27 10:32:46 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a49a0c58662bef48d02246193d86cc89fb9d030b 8273062: Generation::refs_discovery_is_xxx functions are unused Reviewed-by: ayang ! src/hotspot/share/gc/shared/generation.hpp Changeset: a64a49dd Author: duke Date: 2021-08-27 11:00:37 +0000 URL: https://git.openjdk.java.net/panama-foreign/commit/a64a49dd8754c170af77075306b0be6e4922b93c Automatic merge of jdk:master into master From psandoz at openjdk.java.net Fri Aug 27 17:19:45 2021 From: psandoz at openjdk.java.net (Paul Sandoz) Date: Fri, 27 Aug 2021 17:19:45 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v2] In-Reply-To: References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Thu, 26 Aug 2021 20:54:19 GMT, Jatin Bhateja wrote: >> - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. >> - Handles casting for both predicated/non-predicated targets. >> >> Following is the performance data for new JMH benchmark included with the patch. >> >> System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) >> Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio >> -- | -- | -- | -- | -- | -- | -- >> microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56144.479 | 48677.988 | 0.867012908 >> microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 52357.222 | 113713.843 | 2.171884578 >> microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 46976.122 | 44040.585 | 0.937510018 >> microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 64291.206 | 125241.322 | 1.948031928 >> microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 63500.39 | 57353.881 | 0.903205177 >> microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68406.484 | 129829.223 | 1.897908143 >> microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 73194.15 | 129671.204 | 1.771606119 >> microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72413.82 | 129555.214 | 1.789095148 >> microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 64238.202 | 126321.452 | 1.966453731 >> microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 68179.69 | 57691.751 | 0.846172093 >> microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63548.106 | 122347.947 | 1.925280779 >> microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 55993.494 | 49020.628 | 0.875470068 >> microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 56366.012 | 48907.786 | 0.867682212 >> microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74174.816 | 63532.575 | 0.856524875 >> microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 68350.908 | 64608.882 | 0.945252724 >> microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 69808.173 | 129450.203 | 1.854370304 >> microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 72577.142 | 129282.92 | 1.781317319 >> microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68758.915 | 58392.958 | 0.849241993 >> microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 62663.689 | 58091.934 | 0.927042996 >> microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 64319.673 | 58479.2 | 0.909196165 >> microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 68764.768 | 131602.165 | 1.91380221 >> microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 63122.811 | 131626.603 | 2.085246219 >> microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 68457.314 | 58924.963 | 0.86075482 >> microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 55950.597 | 111919.098 | 2.000319997 >> microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 54465.523 | 48667.357 | 0.893544289 >> microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 47341.838 | 44144.299 | 0.932458495 >> microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 71861.612 | 125784.021 | 1.75036459 >> microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72313.591 | 130789.753 | 1.808646911 >> >> >> PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8272971: Optimizing IR for mask-casting over non-predicated targets. Java changes look good, there is a simplification i think we should make before integrating. src/jdk.incubator.vector/share/classes/jdk/incubator/vector/Byte128Vector.java line 655: > 653: species.maskType(), species.elementType(), VLENGTH, > 654: this, species, > 655: Byte128Mask::defaultMaskCast); We can inline defaultMaskCheck and remove it e.g.: (m, s) -> s.maskFactory(m.toArray()).check(s); ------------- Marked as reviewed by psandoz (Committer). PR: https://git.openjdk.java.net/panama-vector/pull/113 From mail at smogura.eu Fri Aug 27 18:16:58 2021 From: mail at smogura.eu (Rado Smogura) Date: Fri, 27 Aug 2021 20:16:58 +0200 Subject: [External] : Re: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> <14e30959-d990-2180-f23d-a05c88ec7899@smogura.eu> Message-ID: Hi all, I experimented a little bit, and I wonder if this is reasonable, the outcome on graphs is as expected, and operations looks like properly ordered (but this is my private opinion). https://github.com/rsmogura/panama-vector/commit/755b62823aaed0cddf78e8ccfc60c063bb40779a Kind regards, Rado On 19.08.2021 22:26, Rado Smogura wrote: > I think I answered this question quite simply... it will not work. > > On 19.08.2021 18:39, Rado Smogura wrote: >> Hi all, >> >> >> I hope you have a good day. >> >> >> As still optimizing loops would be good approach, I thought about >> optimizing a mixed access with this approach: >> >> >> 1. When mixed access is detected set flag "raw / byte array" mixed >> access. >> >> 2. Bail out and restart compilation (will happen during first phases, >> and only for few methods). >> >> 3. Pass a flag to compiler. >> >> 4. Modify find_alias_type / flatten_alias_type, so that if byte array >> will be queried for alias, raw ptr and raw alias will be used. >> >> >> Kind regards, >> >> Rado >> >> On 18.08.2021 09:17, Rado Smogura wrote: >>> Hi Vladimir, >>> >>> >>> Thank you for answer. >>> >>> >>> In fact, it is was an attempt to confirm that memory flow can be a >>> cause why loop opts do not work. That's very fair point. I'll think >>> about it and maybe I'll be able to come out idea how this can be >>> generalized. >>> >>> >>> Kind regards, >>> >>> Rado >>> >>> On 16.08.2021 15:41, Vladimir Ivanov wrote: >>>>> I wonder what do you think about something like this [1] - it's >>>>> virtually small single class change >>>> >>>> Very interesting experiment, Rado! It's encouraging to hear that >>>> loop opts immediately benefit from it. >>>> >>>> From a architectural perspective, a separate pass to optimize >>>> memory graph brings excessive complexity: >>>> >>>> ? (1) yet another pass over the graph and susceptible to pass >>>> ordering issues; >>>> >>>> ? (2) separate from GVN: you either have to duplicate GVN-based >>>> memory optimizations or run new pass with IGVN in a loop until it >>>> stabilizes. >>>> >>>> IMO the problem you noticed illustrates a general weakness in GVN >>>> implementation and that's the place where it should be fixed >>>> (ideally). >>>> >>>> Best regards, >>>> Vladimir Ivanov >>>> >>>>> >>>>> This change tries to find unique memory for load node. I >>>>> implemented it as separate phase, as optimization may not run in >>>>> Ideal method. I think it's ligher than phi split out. >>>>> >>>>> Loops has been transformed. RCE started. >>>>> >>>>> Kind regards, >>>>> Rado >>>>> >>>>> [1] - >>>>> https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 >>>>> >>>>> >>>>> [2] - >>>>> https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation >>>>> >>>>> (full test case) >>>>> >>>>> ------------------------------------------------------------------------ >>>>> >>>>> *From:* Rados?aw Smogura on behalf of Rados?aw Smogura >>>>> >>>>> *Sent:* Friday, August 6, 2021 22:43 >>>>> *To:* Rados?aw Smogura ; Paul Sandoz >>>>> ; Vladimir Ivanov >>>>> >>>>> *Cc:* panama-dev at openjdk.java.net >>>>> *Subject:* Re: Issues with loop unrolling: better pinned node >>>>> Hi all, >>>>> >>>>> Now when I checked it again. it works as expected, and it's the >>>>> same code. >>>>> >>>>> In draft code I check if the buffer is direct by using type >>>>> checking to unswitch loop, as unswitching over ByteBuffer.hb did >>>>> not work (the graph was quite similar). However, I thought that >>>>> this unswitch actually helped to build correct loops, and any kind >>>>> of improvement around it would be rather for the purpose of >>>>> better-looking code. >>>>> >>>>> But it looks like that sometimes (but only sometimes) loop still >>>>> can not be correctly built, or maybe the full optimization kicks >>>>> in very, very late. >>>>> >>>>> Kind regards, >>>>> Rado >>>>> ------------------------------------------------------------------------ >>>>> >>>>> *From:* panama-dev on behalf of >>>>> Rados?aw Smogura >>>>> *Sent:* Friday, August 6, 2021 20:22 >>>>> *To:* Paul Sandoz >>>>> *Cc:* panama-dev at openjdk.java.net >>>>> *Subject:* Re: Issues with loop unrolling: better pinned node >>>>> Yes, >>>>> >>>>> The normal case looks, good. It's all about polluted cases [1] >>>>> >>>>> BR, >>>>> Rado >>>>> >>>>> [1] https://github.com/openjdk/panama-vector/pull/109 >>>>> >>>>> [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109]>>>> > >>>>> >>>>> (Draft) Perofrmance improvements for polluted cases by rsmogura ? >>>>> Pull Request #109 ? >>>>> openjdk/panama-vector >>>>> >>>>> >>>>> Hi all, I would like to submit this piece of work, for byte >>>>> buffers and polluted cases. It resolves some performance issues >>>>> related to mem barriers when in scope are both on- and off-heap >>>>> buffer. T... >>>>> github.com >>>>> >>>>> [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector]>>>> > >>>>> >>>>> Comparing >>>>> openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? >>>>> openjdk/panama-vector >>>>> >>>>> >>>>> Panama vector. Contribute to openjdk/panama-vector development by >>>>> creating an account on GitHub. >>>>> github.com >>>>> >>>>> ________________________________ >>>>> From: Paul Sandoz >>>>> Sent: Friday, August 6, 2021 20:04 >>>>> To: Rados?aw Smogura >>>>> Cc: panama-dev at openjdk.java.net >>>>> Subject: Re: Issues with loop unrolling: better pinned node >>>>> >>>>> I am confused as to the case under test. In your initial email of >>>>> this thread were you also referring implicitly to polluted cases? >>>>> >>>>> Paul. >>>>> >>>>>> On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura >>>>>> wrote: >>>>>> >>>>>> Hi Paul, >>>>>> >>>>>> There's a performance improvement, but. I still can't unroll >>>>>> polluted cases (I cherry-picked loop unrolling). The graph still >>>>>> has few nodes taking buffer limit from phi, and on IR I don't see >>>>>> vectors nodes cascading. >>>>>> >>>>>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f >>>>>> 1 -prof perfasm >>>>>> -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" >>>>>> JOBS=12 >>>>>> Benchmark???????????????????????????????????? (size) Mode Cnt?? >>>>>> Score?? Error? Units >>>>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024 avgt 30? >>>>>> 40.472 ? 1.055? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 >>>>>> avgt????????? NaN??????????? --- >>>>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024 avgt 30? >>>>>> 79.251 ? 0.786? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 >>>>>> avgt????????? NaN??????????? --- >>>>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024 avgt 30? >>>>>> 83.627 ? 2.140? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 >>>>>> avgt????????? NaN??????????? --- >>>>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024 avgt 30? >>>>>> 85.561 ? 1.156? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 >>>>>> avgt????????? NaN >>>>>> >>>>>> make test TEST='micro:ByteBufferVectorAccess.p' MICRO="OPTIONS=-f >>>>>> 1 -prof perfasm" >>>>>> Benchmark???????????????????????????????????? (size) Mode Cnt??? >>>>>> Score?? Error? Units >>>>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024 avgt 10?? >>>>>> 49.326 ? 0.843? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 >>>>>> avgt?????????? NaN??????????? --- >>>>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024 avgt 10? >>>>>> 100.291 ? 1.271? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 >>>>>> avgt?????????? NaN??????????? --- >>>>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024 avgt 10? >>>>>> 101.494 ? 1.027? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 >>>>>> avgt?????????? NaN??????????? --- >>>>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024 avgt 10?? >>>>>> 94.606 ? 1.522? ns/op >>>>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 >>>>>> avgt?????????? NaN >>>>>> >>>>>> >>>>>> BR, >>>>>> Rado >>>>>> From: Paul Sandoz >>>>>> Sent: Friday, August 6, 2021 18:04 >>>>>> To: Rados?aw Smogura >>>>>> Cc: panama-dev at openjdk.java.net >>>>>> Subject: Re: Issues with loop unrolling: better pinned node >>>>>> >>>>>> Hi Rado, >>>>>> >>>>>> It?s good you are looking at the IR >>>>>> >>>>>> Out of curiosity, what happens if you turn off bounds checking [*]? >>>>>> >>>>>> Paul. >>>>>> >>>>>> [*] >>>>>> -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 >>>>>> >>>>>> > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura >>>>>> wrote: >>>>>> > >>>>>> > Hi all, >>>>>> > >>>>>> > I've found that even if we get rid of barriers, the loop can't >>>>>> get unrolled, and not needed code is inside it. >>>>>> > >>>>>> > I've found this graph, I wonder if it's most optimal, in a >>>>>> partiucalry Load of ByteBuffer index / hb is from phi, could it >>>>>> be attached to initial memory? >>>>>> > >>>>>> > Here's a picture >>>>>> https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>> > >>>>>> [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p]>>>> >>>>> >>>>> >>>>> >>>>> > >>>>> >>>>>> > >>>>>> bb_issues.png>>>> >>>>> >>>>> >>>>> >>>>> > >>>>> >>>>>> > drive.google.com >>>>>> > >>>>>> > >>>>>> > And sample code >>>>>> > >>>>>> > protected void copyMemory(ByteBuffer in, ByteBuffer out) { >>>>>> >? var limit = SPECIES.loopBound(in.limit()); >>>>>> >? for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { >>>>>> >??? final var v = ByteVector.fromByteBuffer(SPECIES, in, i, >>>>>> ByteOrder.nativeOrder()); >>>>>> >??? v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); >>>>>> >? } >>>>>> > } >>>>>> > >>>>>> > Kind regards, >>>>>> > Rado >>>>> From paul.sandoz at oracle.com Fri Aug 27 19:20:54 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Fri, 27 Aug 2021 19:20:54 +0000 Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: References: Message-ID: Hi Joshua, Thank you for exploring this area. I am impressed at the level of knowledge you have of HotSpot. Instead of immediately diving into code I would first prefer to discuss the design to determine if this is the best way to support your use-case. I would like to explore if there are underlying primitives from which we can compose to support this use-case. If possible I would like to leverage the existing mask load/store primitives we have, and if necessary make some changes, rather than add more. We already have general mask accepting scatter/gather store/load. (I have always been a bit uncertain whether we have the right signatures for these methods, and whether they are necessary if we can use shuffles.) To use the scatter store method today for your use-case we would have to: - compute an int[] array from the set lanes of the mask, M say - computing the ?prefix" mask from the set lanes of M, PM - store the vector using the int[] array and PM. Another alternative is to: - compute a ?compression? shuffle, S, from the set lanes of the mask, M - apply S to the vector, produce a compressed vector CV - computing the ?prefix" mask from the set lanes of M, PM - store CV using M In either case the loop index value is increased by the true count of M. The primitive I am searching for might be a way to create a shuffle from a mask. Let?s say we could write: Int[] a = ... IntVector v = ... VectorMask m = ? // The new primitive, create a shuffle from the mask that partitions vector elements // according to the set and unset mask lane elements. VectorShuffle s = m.toPartitioningShuffle(); // Partition the elements IntVector cv = v.rearrange(s); // This method is likely not optimal, yet! // Another method could be added that is prefix(int length) VectorMask pm = m.species().indexInRange(0, m.trueCount()); // Use existing masked store cv.intoArray(a, offset, pm); // Increase offset by number of stores offset += m.trueCount(); Is it possible for C2 to detect the kind of shuffle pattern and masking to sufficiently optimize? Experts please chime in! I think this is worth exploring further, the more we can optimize the primitives, and then potentially optimize patterns of those, the more flexible we are and can avoid adding more specific functionality. Paul. > On Aug 27, 2021, at 2:54 AM, Joshua Zhu wrote: > > Hi, > > I want to propose a new VectorAPI "Selective Store/Load" and share my > implementation. Currently Alibaba's internal databases are in the > process of applying VectorAPI and they have requirements on "Selective > Store" for acceleration. > > My proposed VectorAPI is declared as below [1]: > > int selectiveIntoArray($type$[] a, int offset, VectorMask<$Boxtype$> m); > > The active elements (with their respective bit set in mask) are > contiguously stored into the array "a". Assume N is the true count of > mask, the elements starting from a[offset+N] till a[offset+laneCount] > are left unchanged. The return value represents the number of elements > store into the array and "offset + return value" is the new offset of > the next iteration. > ![image](https://user-images.githubusercontent.com/70769035/131108509-3dcb61f3-e8d0-4b4e-9b49-a72c077aaba6.png) > This API will be used like the following manner [2]: > > tld.conflict_cnt = 0; > for (int i = 0; i < ARRAY_LENGTH; i += INT_PREFERRED_SPECIES.length()) { > IntVector av = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input1, i); > IntVector bv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input2, i); > IntVector cv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_index, i); > VectorMask mask = av.compare(VectorOperators.NE, bv); > tld.conflict_cnt += cv.selectiveIntoArray(tld.conflict_array, tld.conflict_cnt, mask); > } > > My patch includes the following changes: >   * Selective Store VectorAPI for Long & Int >   * Assembler: add x86 instruction "VPCOMPRESSD" and "VPCOMPRESSQ" >   * Instruction selection: vselective_store; kmask_truecount (true count of kregister) >   * Add node "StoreVectorSelective" >   * Add a new parameter "is_selective" in inline_vector_mem_masked_operation() >     in order to distinguish Masked version or Selective version >   * jtreg cases >   * JMH benchmark > > TODO parts I will implement: >   * Selective Store for other types >   * Selective Load >   * Some potential optimization. Such as: when mask is allTrue, SelectiveIntoArray() -> IntoArray() > > Test: >   * Passed VectorAPI jtreg cases. >   * Result of JMH benchmark to evaluate API's performance in Alibaba's real scenario. >       UseAVX=3; thread number = 8; conflict data percentage: 20% (that means 20% of mask bits are true) >       http://cr.openjdk.java.net/~jzhu/8273057/jmh_benchmark_result.pdf > > [1] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-13cc2d6ec18e487ddae05cda671bdb6bb7ffd42ff7bc51a2e00c8c5e622bd55dR4667 > [2] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-951d02bd72a931ac34bc85d1d4e656a14f8943e143fc9282b36b9c76c1893c0cR144 > [3] failed to inline (intrinsic) by https://github.com/openjdk/panama-vector/blob/60aa8ca6dc0b3f1a3ee517db167f9660012858cd/src/hotspot/cpu/x86/x86.ad#L1769 > > Best Regards, > Joshua > > ------------- > > Commit messages: > - 8273057: [vector] New VectorAPI "SelectiveStore" > > Changes: https://git.openjdk.java.net/panama-vector/pull/115/files > Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=115&range=00 > Issue: https://bugs.openjdk.java.net/browse/JDK-8273057 > Stats: 1432 lines in 90 files changed: 1423 ins; 0 del; 9 mod > Patch: https://git.openjdk.java.net/panama-vector/pull/115.diff > Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/115/head:pull/115 > > PR: https://git.openjdk.java.net/panama-vector/pull/115 From john.r.rose at oracle.com Fri Aug 27 19:29:45 2021 From: john.r.rose at oracle.com (John Rose) Date: Fri, 27 Aug 2021 19:29:45 +0000 Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: References: Message-ID: <0A62FA43-000C-4033-96DD-EB153826D2DF@oracle.com> I think I would rather see a vector-to-vector compress operation, than a vector-to-memory operation that also includes compression. Isn?t that the real underlying primitive? > On Aug 27, 2021, at 2:54 AM, Joshua Zhu wrote: > > Hi, > > I want to propose a new VectorAPI "Selective Store/Load" and share my > implementation. Currently Alibaba's internal databases are in the > process of applying VectorAPI and they have requirements on "Selective > Store" for acceleration. > > My proposed VectorAPI is declared as below [1]: > > int selectiveIntoArray($type$[] a, int offset, VectorMask<$Boxtype$> m); > > The active elements (with their respective bit set in mask) are > contiguously stored into the array "a". Assume N is the true count of > mask, the elements starting from a[offset+N] till a[offset+laneCount] > are left unchanged. The return value represents the number of elements > store into the array and "offset + return value" is the new offset of > the next iteration. > ![image](https://user-images.githubusercontent.com/70769035/131108509-3dcb61f3-e8d0-4b4e-9b49-a72c077aaba6.png) > This API will be used like the following manner [2]: > > tld.conflict_cnt = 0; > for (int i = 0; i < ARRAY_LENGTH; i += INT_PREFERRED_SPECIES.length()) { > IntVector av = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input1, i); > IntVector bv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input2, i); > IntVector cv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_index, i); > VectorMask mask = av.compare(VectorOperators.NE, bv); > tld.conflict_cnt += cv.selectiveIntoArray(tld.conflict_array, tld.conflict_cnt, mask); > } > > My patch includes the following changes: >   * Selective Store VectorAPI for Long & Int >   * Assembler: add x86 instruction "VPCOMPRESSD" and "VPCOMPRESSQ" >   * Instruction selection: vselective_store; kmask_truecount (true count of kregister) >   * Add node "StoreVectorSelective" >   * Add a new parameter "is_selective" in inline_vector_mem_masked_operation() >     in order to distinguish Masked version or Selective version >   * jtreg cases >   * JMH benchmark > > TODO parts I will implement: >   * Selective Store for other types >   * Selective Load >   * Some potential optimization. Such as: when mask is allTrue, SelectiveIntoArray() -> IntoArray() > > Test: >   * Passed VectorAPI jtreg cases. >   * Result of JMH benchmark to evaluate API's performance in Alibaba's real scenario. >       UseAVX=3; thread number = 8; conflict data percentage: 20% (that means 20% of mask bits are true) >       http://cr.openjdk.java.net/~jzhu/8273057/jmh_benchmark_result.pdf > > [1] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-13cc2d6ec18e487ddae05cda671bdb6bb7ffd42ff7bc51a2e00c8c5e622bd55dR4667 > [2] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-951d02bd72a931ac34bc85d1d4e656a14f8943e143fc9282b36b9c76c1893c0cR144 > [3] failed to inline (intrinsic) by https://github.com/openjdk/panama-vector/blob/60aa8ca6dc0b3f1a3ee517db167f9660012858cd/src/hotspot/cpu/x86/x86.ad#L1769 > > Best Regards, > Joshua > > ------------- > > Commit messages: > - 8273057: [vector] New VectorAPI "SelectiveStore" > > Changes: https://git.openjdk.java.net/panama-vector/pull/115/files > Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=115&range=00 > Issue: https://bugs.openjdk.java.net/browse/JDK-8273057 > Stats: 1432 lines in 90 files changed: 1423 ins; 0 del; 9 mod > Patch: https://git.openjdk.java.net/panama-vector/pull/115.diff > Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/115/head:pull/115 > > PR: https://git.openjdk.java.net/panama-vector/pull/115 From kartikohri13 at gmail.com Sun Aug 29 18:36:46 2021 From: kartikohri13 at gmail.com (Kartik Ohri) Date: Mon, 30 Aug 2021 00:06:46 +0530 Subject: Arrays.mismatch intrinsic and Vector API comparision Message-ID: Hi! I have started experimenting with the Vector API recently. Currently, I am playing with the API and trying to gauge its potential by comparing its performance with vectorized intrinsics implemented inside the JDK. I know that Arrays.mismatch has a vectorized intrinsic so I started with it. I was able to come up with a simple implementation for it using the Vector API. The results of the JMH benchmark look quite promising, the Vector API is able to come quite close to the intrinsic. This is awesome!! The benchmark code is available here and the complete benchmark logs are here . I also did another run to check the assembly generated which is also available here . It would be nice to get a sanity check on the benchmark before I proceed further. Both versions perform more or less the same (difference is less than 5%, in some cases the Vector API even outperforms the intrinsic). There is one outlier where the Vector API is almost 35% slower than the intrinsic (when prefix is 1 and size is 10000). except for when the prefix is 1 i.e. both input arrays are equal. I see that the assembly emitted by Vector API contains a *vpcmpeqb* but the JDK intrinsic does not. Looking at the implementation of the intrinsic in the JDK, The AVX 512 version uses *vpcmpeqb* but the AVX2 version does not (my machine does not have AVX 512 so it makes that it was not emitted in the case of the intrinsic). Secondly, from the assembly it seems that the Vector API version was unrolled but the intrinsic was not. If I am right, in general loop unrolling is better so the API seems to be doing the right thing. Hence, I am not sure why this particular case is an outlier. Further, Is analysing/comparing intrinsics within the JDK to the Vector API useful? Also, any other suggestions regarding contributing to the Project are welcome. Regards, Kartik From njian at openjdk.java.net Mon Aug 30 03:57:07 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Mon, 30 Aug 2021 03:57:07 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v2] In-Reply-To: References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Thu, 26 Aug 2021 20:54:19 GMT, Jatin Bhateja wrote: >> - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. >> - Handles casting for both predicated/non-predicated targets. >> >> Following is the performance data for new JMH benchmark included with the patch. >> >> System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) >> Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio >> -- | -- | -- | -- | -- | -- | -- >> microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56144.479 | 48677.988 | 0.867012908 >> microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 52357.222 | 113713.843 | 2.171884578 >> microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 46976.122 | 44040.585 | 0.937510018 >> microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 64291.206 | 125241.322 | 1.948031928 >> microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 63500.39 | 57353.881 | 0.903205177 >> microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68406.484 | 129829.223 | 1.897908143 >> microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 73194.15 | 129671.204 | 1.771606119 >> microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72413.82 | 129555.214 | 1.789095148 >> microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 64238.202 | 126321.452 | 1.966453731 >> microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 68179.69 | 57691.751 | 0.846172093 >> microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63548.106 | 122347.947 | 1.925280779 >> microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 55993.494 | 49020.628 | 0.875470068 >> microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 56366.012 | 48907.786 | 0.867682212 >> microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74174.816 | 63532.575 | 0.856524875 >> microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 68350.908 | 64608.882 | 0.945252724 >> microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 69808.173 | 129450.203 | 1.854370304 >> microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 72577.142 | 129282.92 | 1.781317319 >> microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68758.915 | 58392.958 | 0.849241993 >> microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 62663.689 | 58091.934 | 0.927042996 >> microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 64319.673 | 58479.2 | 0.909196165 >> microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 68764.768 | 131602.165 | 1.91380221 >> microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 63122.811 | 131626.603 | 2.085246219 >> microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 68457.314 | 58924.963 | 0.86075482 >> microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 55950.597 | 111919.098 | 2.000319997 >> microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 54465.523 | 48667.357 | 0.893544289 >> microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 47341.838 | 44144.299 | 0.932458495 >> microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 71861.612 | 125784.021 | 1.75036459 >> microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72313.591 | 130789.753 | 1.808646911 >> >> >> PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. > > Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: > > 8272971: Optimizing IR for mask-casting over non-predicated targets. src/hotspot/share/opto/vectorIntrinsics.cpp line 2320: > 2318: if (is_mask && (type2aelembytes(elem_bt_from) != type2aelembytes(elem_bt_to))) { > 2319: return false; // elem size mismatch > 2320: } Since Arm SVE has different mask representation than AVX-512 for different types, I think this change will break existing assertion in VectorMaskCastNode constructor (https://github.com/openjdk/panama-vector/blob/vectorIntrinsics%2Bmask/src/hotspot/share/opto/vectornode.hpp#L1427)? test/micro/org/openjdk/bench/jdk/incubator/vector/MaskCastOperationsBenchmark.java line 33: > 31: @OutputTimeUnit(TimeUnit.MILLISECONDS) > 32: @State(Scope.Thread) > 33: public class MaskCastOperationsBenchmark { Add jvmArgs "--add-modules=jdk.incubator.vector" like other benchmarks? ------------- PR: https://git.openjdk.java.net/panama-vector/pull/113 From jbhateja at openjdk.java.net Mon Aug 30 06:27:19 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 30 Aug 2021 06:27:19 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v2] In-Reply-To: References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Mon, 30 Aug 2021 03:51:45 GMT, Ningsheng Jian wrote: >> Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: >> >> 8272971: Optimizing IR for mask-casting over non-predicated targets. > > src/hotspot/share/opto/vectorIntrinsics.cpp line 2320: > >> 2318: if (is_mask && (type2aelembytes(elem_bt_from) != type2aelembytes(elem_bt_to))) { >> 2319: return false; // elem size mismatch >> 2320: } > > Since Arm SVE has different mask representation than AVX-512 for different types, I think this change will break existing assertion in VectorMaskCastNode constructor (https://github.com/openjdk/panama-vector/blob/vectorIntrinsics%2Bmask/src/hotspot/share/opto/vectornode.hpp#L1427)? Hi @nsjian, Optimization handles casting operation b/w all compatible mask species i.e. having same vector lengths. And we see around 2X speedup over AVX512. IR fragment created for non-predicated targets uses existing VectorCast[B/S/I/L] nodes with appropriate insertion of VectorMaskCast for floating point types but they operate over regular vector operands, should be ok for AARCH64 NEON. Do you plan to extend the SVE backend to handle VectorMaskCast operations for various compatible species? Alternatively as an interim solution I can add a target specific matcher routine Matcher::supports_predicate_reg_cast() and re-write above check as follows. if (is_mask && dst_type->isa_vectmask() && src_type->isa_vectmask() && !Matcher::supports_predicate_reg_cast()) { return false; // elem size mismatch } ------------- PR: https://git.openjdk.java.net/panama-vector/pull/113 From njian at openjdk.java.net Mon Aug 30 07:40:11 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Mon, 30 Aug 2021 07:40:11 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v2] In-Reply-To: References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Mon, 30 Aug 2021 06:23:05 GMT, Jatin Bhateja wrote: > Optimization handles casting operation b/w all compatible mask species i.e. having same vector lengths. > And we see around 2X speedup over AVX512. IR fragment created for non-predicated targets uses existing VectorCast[B/S/I/L] nodes with appropriate insertion of VectorMaskCast for floating point types but they operate over regular vector operands, should be ok for AARCH64 NEON. > Do you plan to extend the SVE backend to handle VectorMaskCast operations for various compatible species? Yes. Currently we don't have different sized mask types conversion support for SVE backend. We can handle that in a follow-up patch. It's unfortunate that existing vector api cases cannot trigger this failure, but your JMH tests did hit that assertion of element size mismatch on SVE system. > Alternatively as an interim solution I can add a target specific matcher routine Matcher::supports_predicate_reg_cast() and re-write above check as follows. > > ``` > if (is_mask && dst_type->isa_vectmask() && src_type->isa_vectmask() && !Matcher::supports_predicate_reg_cast()) { > return false; // elem size mismatch > } > ``` I think you can also leave it to us to add the SVE backend code and simply fix (remove?) the assertion in https://github.com/openjdk/panama-vector/blob/vectorIntrinsics%2Bmask/src/hotspot/share/opto/vectornode.hpp#L1427 ------------- PR: https://git.openjdk.java.net/panama-vector/pull/113 From jzhu at openjdk.java.net Mon Aug 30 09:04:00 2021 From: jzhu at openjdk.java.net (Joshua Zhu) Date: Mon, 30 Aug 2021 09:04:00 GMT Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: References: Message-ID: On Fri, 27 Aug 2021 09:47:10 GMT, Joshua Zhu wrote: > Hi, > > I want to propose a new VectorAPI "Selective Store/Load" and share my > implementation. Currently Alibaba's internal databases are in the > process of applying VectorAPI and they have requirements on "Selective > Store" for acceleration. > > My proposed VectorAPI is declared as below [1]: > > int selectiveIntoArray($type$[] a, int offset, VectorMask<$Boxtype$> m); > > The active elements (with their respective bit set in mask) are > contiguously stored into the array "a". Assume N is the true count of > mask, the elements starting from a[offset+N] till a[offset+laneCount] > are left unchanged. The return value represents the number of elements > store into the array and "offset + return value" is the new offset of > the next iteration. > ![image](https://user-images.githubusercontent.com/70769035/131108509-3dcb61f3-e8d0-4b4e-9b49-a72c077aaba6.png) > This API will be used like the following manner [2]: > > tld.conflict_cnt = 0; > for (int i = 0; i < ARRAY_LENGTH; i += INT_PREFERRED_SPECIES.length()) { > IntVector av = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input1, i); > IntVector bv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_input2, i); > IntVector cv = IntVector.fromArray(INT_PREFERRED_SPECIES, tld.int_index, i); > VectorMask mask = av.compare(VectorOperators.NE, bv); > tld.conflict_cnt += cv.selectiveIntoArray(tld.conflict_array, tld.conflict_cnt, mask); > } > > My patch includes the following changes: >   * Selective Store VectorAPI for Long & Int >   * Assembler: add x86 instruction "VPCOMPRESSD" and "VPCOMPRESSQ" >   * Instruction selection: vselective_store; kmask_truecount (true count of kregister) >   * Add node "StoreVectorSelective" >   * Add a new parameter "is_selective" in inline_vector_mem_masked_operation() >     in order to distinguish Masked version or Selective version >   * jtreg cases >   * JMH benchmark > > TODO parts I will implement: >   * Selective Store for other types >   * Selective Load >   * Some potential optimization. Such as: when mask is allTrue, SelectiveIntoArray() -> IntoArray() > > Test: >   * Passed VectorAPI jtreg cases. >   * Result of JMH benchmark to evaluate API's performance in Alibaba's real scenario. >       UseAVX=3; thread number = 8; conflict data percentage: 20% (that means 20% of mask bits are true) >       http://cr.openjdk.java.net/~jzhu/8273057/jmh_benchmark_result.pdf > > [1] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-13cc2d6ec18e487ddae05cda671bdb6bb7ffd42ff7bc51a2e00c8c5e622bd55dR4667 > [2] https://github.com/JoshuaZhuwj/panama-vector/commit/69623f7d6a1eae532576359328b96162d8e16837#diff-951d02bd72a931ac34bc85d1d4e656a14f8943e143fc9282b36b9c76c1893c0cR144 > [3] failed to inline (intrinsic) by https://github.com/openjdk/panama-vector/blob/60aa8ca6dc0b3f1a3ee517db167f9660012858cd/src/hotspot/cpu/x86/x86.ad#L1769 > > Best Regards, > Joshua Hi Paul, Thanks a lot for your quick reply and share of design thinking. > We already have general mask accepting scatter/gather store/load. (I have always been a bit uncertain whether we have the right signatures for these methods, and whether they are necessary if we can use shuffles.) > > To use the scatter store method today for your use-case we would have to: > > - compute an int[] array from the set lanes of the mask, M say > - computing the ?prefix" mask from the set lanes of M, PM > - store the vector using the int[] array and PM. > > Another alternative is to: > > - compute a ?compression? shuffle, S, from the set lanes of the mask, M > - apply S to the vector, produce a compressed vector CV > - computing the ?prefix" mask from the set lanes of M, PM > - store CV using M In my opinion, no matter the first scatter store way or the second shuffle way, the key to resolve this use case is similar: how to generate "compression" shuffle or "compression" index array according to the set lanes of the mask. (The "prefix" mask could be computed by true count of mask.) But when compose existing primitives, how much performance is affected is also important compared to native instruction support or scalar version. When I help database developers to apply VectorAPI, they usually care:   *how much performance they could gain;   *VectorAPI's ease of use to reduce code complexity and ensure portability;   *whether intrinsics are inlined in their scenarios (fail cases bring performance degradation). Four vectorized data movement primitives: selective load, selective store, gather, and scatter are critical SIMD operations for in-memory databases. Currently gather and scatter are supported in VectorAPI. That's why I help them implement selective ops and try to propose "Selective Store/Load" in VectorAPI. > The primitive I am searching for might be a way to create a shuffle from a mask. What I know for creating shuffle from mask is to leverage a precomputed, cache resident table. Take four bits mask as example, mask_index | mask | index_array 0 | 0000 | 1 | 0001 | 3 2 | 0010 | 2 3 | 0011 | 2, 3 4 | 0100 | 1 5 | 0101 | 1, 3 ... 14 | 1110 | 0, 1, 2 15 | 1111 | 0, 1, 2, 3 The index_array could be treated as index map or converted into shuffle. > Let?s say we could write: > > Int[] a = ... > IntVector v = ... > VectorMask m = ? > > // The new primitive, create a shuffle from the mask that partitions vector elements > // according to the set and unset mask lane elements. > VectorShuffle s = m.toPartitioningShuffle(); > // Partition the elements > IntVector cv = v.rearrange(s); > > // This method is likely not optimal, yet! > // Another method could be added that is prefix(int length) > VectorMask pm = m.species().indexInRange(0, m.trueCount()); > > // Use existing masked store > cv.intoArray(a, offset, pm); > // Increase offset by number of stores > offset += m.trueCount(); > > Is it possible for C2 to detect the kind of shuffle pattern and masking to sufficiently optimize? Experts please chime in! I think the pattern will be too complicated and the optimization may be not reliable. Thanks, Joshua ------------- PR: https://git.openjdk.java.net/panama-vector/pull/115 From jbhateja at openjdk.java.net Mon Aug 30 10:42:25 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 30 Aug 2021 10:42:25 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v3] In-Reply-To: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: > - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. > - Handles casting for both predicated/non-predicated targets. > > Following is the performance data for new JMH benchmark included with the patch. > > System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) > Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio > -- | -- | -- | -- | -- | -- | -- > microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56144.479 | 48677.988 | 0.867012908 > microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 52357.222 | 113713.843 | 2.171884578 > microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 46976.122 | 44040.585 | 0.937510018 > microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 64291.206 | 125241.322 | 1.948031928 > microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 63500.39 | 57353.881 | 0.903205177 > microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68406.484 | 129829.223 | 1.897908143 > microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 73194.15 | 129671.204 | 1.771606119 > microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72413.82 | 129555.214 | 1.789095148 > microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 64238.202 | 126321.452 | 1.966453731 > microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 68179.69 | 57691.751 | 0.846172093 > microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63548.106 | 122347.947 | 1.925280779 > microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 55993.494 | 49020.628 | 0.875470068 > microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 56366.012 | 48907.786 | 0.867682212 > microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74174.816 | 63532.575 | 0.856524875 > microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 68350.908 | 64608.882 | 0.945252724 > microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 69808.173 | 129450.203 | 1.854370304 > microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 72577.142 | 129282.92 | 1.781317319 > microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68758.915 | 58392.958 | 0.849241993 > microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 62663.689 | 58091.934 | 0.927042996 > microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 64319.673 | 58479.2 | 0.909196165 > microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 68764.768 | 131602.165 | 1.91380221 > microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 63122.811 | 131626.603 | 2.085246219 > microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 68457.314 | 58924.963 | 0.86075482 > microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 55950.597 | 111919.098 | 2.000319997 > microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 54465.523 | 48667.357 | 0.893544289 > microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 47341.838 | 44144.299 | 0.932458495 > microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 71861.612 | 125784.021 | 1.75036459 > microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72313.591 | 130789.753 | 1.808646911 > > > PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. Jatin Bhateja has updated the pull request incrementally with one additional commit since the last revision: 8272971: Review comments resolution. ------------- Changes: - all: https://git.openjdk.java.net/panama-vector/pull/113/files - new: https://git.openjdk.java.net/panama-vector/pull/113/files/3b18e774..c2a38042 Webrevs: - full: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=113&range=02 - incr: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=113&range=01-02 Stats: 33 lines in 33 files changed: 1 ins; 1 del; 31 mod Patch: https://git.openjdk.java.net/panama-vector/pull/113.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/113/head:pull/113 PR: https://git.openjdk.java.net/panama-vector/pull/113 From jbhateja at openjdk.java.net Mon Aug 30 10:42:25 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 30 Aug 2021 10:42:25 GMT Subject: [vectorIntrinsics+mask] RFR: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species [v3] In-Reply-To: References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Mon, 30 Aug 2021 07:36:56 GMT, Ningsheng Jian wrote: >> Hi @nsjian, >> Optimization handles casting operation b/w all compatible mask species i.e. having same vector lengths. >> And we see around 2X speedup over AVX512. IR fragment created for non-predicated targets uses existing VectorCast[B/S/I/L] nodes with appropriate insertion of VectorMaskCast for floating point types but they operate over regular vector operands, should be ok for AARCH64 NEON. >> Do you plan to extend the SVE backend to handle VectorMaskCast operations for various compatible species? >> Alternatively as an interim solution I can add a target specific matcher routine Matcher::supports_predicate_reg_cast() and re-write above check as follows. >> >> >> if (is_mask && dst_type->isa_vectmask() && src_type->isa_vectmask() && !Matcher::supports_predicate_reg_cast()) { >> return false; // elem size mismatch >> } > >> Optimization handles casting operation b/w all compatible mask species i.e. having same vector lengths. >> And we see around 2X speedup over AVX512. IR fragment created for non-predicated targets uses existing VectorCast[B/S/I/L] nodes with appropriate insertion of VectorMaskCast for floating point types but they operate over regular vector operands, should be ok for AARCH64 NEON. >> Do you plan to extend the SVE backend to handle VectorMaskCast operations for various compatible species? > > Yes. Currently we don't have different sized mask types conversion support for SVE backend. We can handle that in a follow-up patch. It's unfortunate that existing vector api cases cannot trigger this failure, but your JMH tests did hit that assertion of element size mismatch on SVE system. > >> Alternatively as an interim solution I can add a target specific matcher routine Matcher::supports_predicate_reg_cast() and re-write above check as follows. >> >> ``` >> if (is_mask && dst_type->isa_vectmask() && src_type->isa_vectmask() && !Matcher::supports_predicate_reg_cast()) { >> return false; // elem size mismatch >> } >> ``` > > I think you can also leave it to us to add the SVE backend code and simply fix (remove?) the assertion in https://github.com/openjdk/panama-vector/blob/vectorIntrinsics%2Bmask/src/hotspot/share/opto/vectornode.hpp#L1427 @nsjian , removed assertion as suggested. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/113 From jzhu at openjdk.java.net Mon Aug 30 11:42:59 2021 From: jzhu at openjdk.java.net (Joshua Zhu) Date: Mon, 30 Aug 2021 11:42:59 GMT Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: <0A62FA43-000C-4033-96DD-EB153826D2DF@oracle.com> References: <0A62FA43-000C-4033-96DD-EB153826D2DF@oracle.com> Message-ID: On Fri, 27 Aug 2021 19:31:08 GMT, John Rose wrote: > I think I would rather see a vector-to-vector compress operation, than a vector-to-memory operation that also includes compression. Isn?t that the real underlying primitive? Agree. John, thanks a lot for your review comments. This will make the primitive more friendly. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/115 From jbhateja at openjdk.java.net Mon Aug 30 14:25:45 2021 From: jbhateja at openjdk.java.net (Jatin Bhateja) Date: Mon, 30 Aug 2021 14:25:45 GMT Subject: [vectorIntrinsics+mask] Integrated: 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species In-Reply-To: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> References: <2US2hiv4PYpAgU7GH2Xfid5DZ-Np1NjHOTmybPuv3Zk=.cde18006-e2e7-4597-a37c-3af974f666f1@github.com> Message-ID: On Thu, 26 Aug 2021 06:18:45 GMT, Jatin Bhateja wrote: > - Patch intrinsifies VectorMask.cast operation if source and destination mask species are compatible i.e. have same vector length. > - Handles casting for both predicated/non-predicated targets. > > Following is the performance data for new JMH benchmark included with the patch. > > System: Intel(R) Xeon(R) Platinum 8280 CPU @ 2.70GHz (28C 2S Cascadelake Server) > Benchmark | Baseline AVX512 (ops/ms) | Withopt AVX512 (ops/ms) | Gain ratio | Baseline AVX2 (ops/ms) | Withopt AVX2 (ops/ms) | Gain ratio > -- | -- | -- | -- | -- | -- | -- > microMaskCastByte128ToInteger512 | 54516.035 | 112778.756 | 2.068726311 | 56144.479 | 48677.988 | 0.867012908 > microMaskCastByte128ToShort256 | 55216.805 | 114020.66 | 2.064963013 | 52357.222 | 113713.843 | 2.171884578 > microMaskCastByte256ToShort512 | 47392.839 | 90946.115 | 1.918984322 | 46976.122 | 44040.585 | 0.937510018 > microMaskCastByte64ToInteger256 | 62578.981 | 128643.386 | 2.055696401 | 64291.206 | 125241.322 | 1.948031928 > microMaskCastByte64ToLong512 | 65725.522 | 123135.03 | 1.873473595 | 63500.39 | 57353.881 | 0.903205177 > microMaskCastByte64ToShort128 | 62440.621 | 121789.41 | 1.950483644 | 68406.484 | 129829.223 | 1.897908143 > microMaskCastInteger128ToLong256 | 68458.06 | 130204.293 | 1.901957096 | 73194.15 | 129671.204 | 1.771606119 > microMaskCastInteger128ToShort64 | 67889.419 | 126591.52 | 1.864672314 | 72413.82 | 129555.214 | 1.789095148 > microMaskCastInteger256ToByte64 | 60895.223 | 130321.893 | 2.140100431 | 64238.202 | 126321.452 | 1.966453731 > microMaskCastInteger256ToLong512 | 65975.311 | 129705.935 | 1.965976864 | 68179.69 | 57691.751 | 0.846172093 > microMaskCastInteger256ToShort128 | 67545.659 | 125688.394 | 1.860791587 | 63548.106 | 122347.947 | 1.925280779 > microMaskCastInteger512ToByte128 | 51766.31 | 115913.374 | 2.239166245 | 55993.494 | 49020.628 | 0.875470068 > microMaskCastInteger512ToShort256 | 52156.663 | 109821.213 | 2.105602749 | 56366.012 | 48907.786 | 0.867682212 > microMaskCastInteger64ToLong128 | 73578.517 | 63373.966 | 0.861310727 | 74174.816 | 63532.575 | 0.856524875 > microMaskCastLong128ToInteger64 | 74027.908 | 63708.687 | 0.860603639 | 68350.908 | 64608.882 | 0.945252724 > microMaskCastLong256ToInteger128 | 71876.726 | 123125.286 | 1.713006321 | 69808.173 | 129450.203 | 1.854370304 > microMaskCastLong256ToShort64 | 72947.678 | 127544.459 | 1.748437545 | 72577.142 | 129282.92 | 1.781317319 > microMaskCastLong512ToByte64 | 66746.009 | 126422.173 | 1.894078386 | 68758.915 | 58392.958 | 0.849241993 > microMaskCastLong512ToInteger256 | 66989.512 | 120517.044 | 1.799043468 | 62663.689 | 58091.934 | 0.927042996 > microMaskCastLong512ToShort128 | 66560.838 | 126906.819 | 1.906628925 | 64319.673 | 58479.2 | 0.909196165 > microMaskCastShort128ToByte64 | 62698.789 | 126292.593 | 2.014274837 | 68764.768 | 131602.165 | 1.91380221 > microMaskCastShort128ToInteger256 | 62545.978 | 130594.425 | 2.087974786 | 63122.811 | 131626.603 | 2.085246219 > microMaskCastShort128ToLong512 | 65828.219 | 125557.859 | 1.90735616 | 68457.314 | 58924.963 | 0.86075482 > microMaskCastShort256ToByte128 | 51423.139 | 116624.494 | 2.267938058 | 55950.597 | 111919.098 | 2.000319997 > microMaskCastShort256ToInteger512 | 51563.845 | 110798.412 | 2.148761637 | 54465.523 | 48667.357 | 0.893544289 > microMaskCastShort512ToByte256 | 47761.772 | 91753.708 | 1.921070014 | 47341.838 | 44144.299 | 0.932458495 > microMaskCastShort64ToInteger128 | 69075.232 | 129302.738 | 1.871911744 | 71861.612 | 125784.021 | 1.75036459 > microMaskCastShort64ToLong256 | 68596.655 | 130142.777 | 1.897217539 | 72313.591 | 130789.753 | 1.808646911 > > > PS: Around 2x gains is seen in all cases for fast path (C2 inline expansion) and slight degradation over AVX2 on slow path (interpreted) in cases where target do not support 512 bit vector due to additional call overhead. This pull request has now been integrated. Changeset: d5eb1297 Author: Jatin Bhateja URL: https://git.openjdk.java.net/panama-vector/commit/d5eb1297b9181b77a9d06952186e59cae7a3cd79 Stats: 572 lines in 35 files changed: 251 ins; 129 del; 192 mod 8272971: Intrinsification of VectorMask.cast operation for all compatible vector species Reviewed-by: sviswanathan, psandoz ------------- PR: https://git.openjdk.java.net/panama-vector/pull/113 From mail at smogura.eu Mon Aug 30 15:12:59 2021 From: mail at smogura.eu (Rado Smogura) Date: Mon, 30 Aug 2021 17:12:59 +0200 Subject: [External] : Re: Issues with loop unrolling: better pinned node In-Reply-To: References: <9F21B2BF-E94F-4332-A5A4-DEDA05D1802C@oracle.com> <19C617EE-6745-4DA3-A5AE-674E92F7DAA4@oracle.com> <14e30959-d990-2180-f23d-a05c88ec7899@smogura.eu> Message-ID: Hi all, I added one missing thing. I want to build something like this. Would it make sense? ?? STORE ?????????????????????????????? addr ???????????????????????????????? ? ???????????????????????????????? ? ???????? reset_memory()????????? ? ??????????? ???? ?????????????????????????? ??????????? ???? ? CheckCastPP (-> BOT)?? ? ??????????? ???? ?????????????????????????? ??????????? ??????????? ? ??????????? ??????????? ? ??????????? ??????? ??? ? ??????????? ??????? ??? ? ??????????? ?? ????????????????????????????????????? ??????????? ?? ???????????? StoreVector??????????? ? ??????????? ?? ????????????????????????????????????? ??????????? ?????? ??????????????????????????? ? ??????????? ?????? ??????????????????????????? ? ?????????????????????????????????????????????????????????????????? ?????????? ? BOT? RAW byte[]????????????????????????? ? ?????????? ? MergeMem??????????????????????????????????????? ? ?????????????????????????????????????????????????????????????????? ??? LOAD ???????????? ? ???????????? ? ???????????? ??????????? ???????????? ????????? ? ???????????? ? ??????????????????????????????????????????????????????????????? ???????????? ? ? LoadVector (BOT)??????????????????????????????????????????? ? ???????????? ? ??????????????????????????????????????????????????????????????? ???????????? ????????????????????????? ? ? ???????????? ????? addr base -> raw ????????????????????????? ???? addr base -> byte[] ???????????? ????????????????????????? ? ? ???????????? ??????????? ????????????????????????? ????????????????????????? ???????????? ??????????? ?DummyStoreV (raw)????? ? ?DummyStoreV (byte[])?? ? //No-op stores ???????????? ??????????? ????????????????????????? ????????????????????????? ???????????? ?????????????????? ??????????????????????? ? ???????????? ????? ?????????????????????????? ??????????? ???????????? ????? ?????????????????????????? ? ??????????????????????????????????????????????????????????????????? ?????????? ? BOT? RAW byte[]?????????????????????????? ? ?????????? ? MergeMem???????????????????????????????????????? ? ??????????????????????????????????????????????????????????????????? DummyStore is "virtual" node inserted after load, intended to emulate store, and prevent writes / reads to go on the side of load vector (it fact it more prevents store / load to see through mem-memrge). I did test it with following code. public static void copyMemoryBytes3(ByteBuffer in, ByteBuffer out, ByteBuffer out2,byte[] arr) { for (int i=0; i Hi all, > > > I experimented a little bit, and I wonder if this is reasonable, the > outcome on graphs is as expected, and operations looks like properly > ordered (but this is my private opinion). > > https://github.com/rsmogura/panama-vector/commit/755b62823aaed0cddf78e8ccfc60c063bb40779a > > > Kind regards, > > Rado > > On 19.08.2021 22:26, Rado Smogura wrote: >> I think I answered this question quite simply... it will not work. >> >> On 19.08.2021 18:39, Rado Smogura wrote: >>> Hi all, >>> >>> >>> I hope you have a good day. >>> >>> >>> As still optimizing loops would be good approach, I thought about >>> optimizing a mixed access with this approach: >>> >>> >>> 1. When mixed access is detected set flag "raw / byte array" mixed >>> access. >>> >>> 2. Bail out and restart compilation (will happen during first >>> phases, and only for few methods). >>> >>> 3. Pass a flag to compiler. >>> >>> 4. Modify find_alias_type / flatten_alias_type, so that if byte >>> array will be queried for alias, raw ptr and raw alias will be used. >>> >>> >>> Kind regards, >>> >>> Rado >>> >>> On 18.08.2021 09:17, Rado Smogura wrote: >>>> Hi Vladimir, >>>> >>>> >>>> Thank you for answer. >>>> >>>> >>>> In fact, it is was an attempt to confirm that memory flow can be a >>>> cause why loop opts do not work. That's very fair point. I'll think >>>> about it and maybe I'll be able to come out idea how this can be >>>> generalized. >>>> >>>> >>>> Kind regards, >>>> >>>> Rado >>>> >>>> On 16.08.2021 15:41, Vladimir Ivanov wrote: >>>>>> I wonder what do you think about something like this [1] - it's >>>>>> virtually small single class change >>>>> >>>>> Very interesting experiment, Rado! It's encouraging to hear that >>>>> loop opts immediately benefit from it. >>>>> >>>>> From a architectural perspective, a separate pass to optimize >>>>> memory graph brings excessive complexity: >>>>> >>>>> ? (1) yet another pass over the graph and susceptible to pass >>>>> ordering issues; >>>>> >>>>> ? (2) separate from GVN: you either have to duplicate GVN-based >>>>> memory optimizations or run new pass with IGVN in a loop until it >>>>> stabilizes. >>>>> >>>>> IMO the problem you noticed illustrates a general weakness in GVN >>>>> implementation and that's the place where it should be fixed >>>>> (ideally). >>>>> >>>>> Best regards, >>>>> Vladimir Ivanov >>>>> >>>>>> >>>>>> This change tries to find unique memory for load node. I >>>>>> implemented it as separate phase, as optimization may not run in >>>>>> Ideal method. I think it's ligher than phi split out. >>>>>> >>>>>> Loops has been transformed. RCE started. >>>>>> >>>>>> Kind regards, >>>>>> Rado >>>>>> >>>>>> [1] - >>>>>> https://github.com/rsmogura/panama-vector/commit/a44f515890d2c4df3fd0e0ced76545a7664926c3 >>>>>> >>>>>> >>>>>> [2] - >>>>>> https://github.com/rsmogura/panama-vector/tree/housekeeping-load-memory-optimiziation >>>>>> >>>>>> (full test case) >>>>>> >>>>>> ------------------------------------------------------------------------ >>>>>> >>>>>> *From:* Rados?aw Smogura on behalf of Rados?aw Smogura >>>>>> >>>>>> *Sent:* Friday, August 6, 2021 22:43 >>>>>> *To:* Rados?aw Smogura ; Paul Sandoz >>>>>> ; Vladimir Ivanov >>>>>> >>>>>> *Cc:* panama-dev at openjdk.java.net >>>>>> *Subject:* Re: Issues with loop unrolling: better pinned node >>>>>> Hi all, >>>>>> >>>>>> Now when I checked it again. it works as expected, and it's the >>>>>> same code. >>>>>> >>>>>> In draft code I check if the buffer is direct by using type >>>>>> checking to unswitch loop, as unswitching over ByteBuffer.hb did >>>>>> not work (the graph was quite similar). However, I thought that >>>>>> this unswitch actually helped to build correct loops, and any >>>>>> kind of improvement around it would be rather for the purpose of >>>>>> better-looking code. >>>>>> >>>>>> But it looks like that sometimes (but only sometimes) loop still >>>>>> can not be correctly built, or maybe the full optimization kicks >>>>>> in very, very late. >>>>>> >>>>>> Kind regards, >>>>>> Rado >>>>>> ------------------------------------------------------------------------ >>>>>> >>>>>> *From:* panama-dev on behalf >>>>>> of Rados?aw Smogura >>>>>> *Sent:* Friday, August 6, 2021 20:22 >>>>>> *To:* Paul Sandoz >>>>>> *Cc:* panama-dev at openjdk.java.net >>>>>> *Subject:* Re: Issues with loop unrolling: better pinned node >>>>>> Yes, >>>>>> >>>>>> The normal case looks, good. It's all about polluted cases [1] >>>>>> >>>>>> BR, >>>>>> Rado >>>>>> >>>>>> [1] https://github.com/openjdk/panama-vector/pull/109 >>>>>> >>>>>> >>>>>> [https://opengraph.githubassets.com/daf8e3b93dd4c25e04d1ce6ae2a91e1b725625bfd85b5027c61fb78ae3a6a361/openjdk/panama-vector/pull/109]>>>>> > >>>>>> >>>>>> (Draft) Perofrmance improvements for polluted cases by rsmogura ? >>>>>> Pull Request #109 ? >>>>>> openjdk/panama-vector >>>>>> >>>>>> >>>>>> Hi all, I would like to submit this piece of work, for byte >>>>>> buffers and polluted cases. It resolves some performance issues >>>>>> related to mem barriers when in scope are both on- and off-heap >>>>>> buffer. T... >>>>>> github.com >>>>>> >>>>>> [https://opengraph.githubassets.com/5fde12f89c012a2abef1542ed59c7272429fa7556f6e82a5e617a293d3a5bee1/openjdk/panama-vector]>>>>> > >>>>>> >>>>>> Comparing >>>>>> openjdk:vectorIntrinsics...rsmogura:vectors-polluted-cases ? >>>>>> openjdk/panama-vector >>>>>> >>>>>> >>>>>> Panama vector. Contribute to openjdk/panama-vector development by >>>>>> creating an account on GitHub. >>>>>> github.com >>>>>> >>>>>> ________________________________ >>>>>> From: Paul Sandoz >>>>>> Sent: Friday, August 6, 2021 20:04 >>>>>> To: Rados?aw Smogura >>>>>> Cc: panama-dev at openjdk.java.net >>>>>> Subject: Re: Issues with loop unrolling: better pinned node >>>>>> >>>>>> I am confused as to the case under test. In your initial email of >>>>>> this thread were you also referring implicitly to polluted cases? >>>>>> >>>>>> Paul. >>>>>> >>>>>>> On Aug 6, 2021, at 10:56 AM, Rados?aw Smogura >>>>>>> wrote: >>>>>>> >>>>>>> Hi Paul, >>>>>>> >>>>>>> There's a performance improvement, but. I still can't unroll >>>>>>> polluted cases (I cherry-picked loop unrolling). The graph still >>>>>>> has few nodes taking buffer limit from phi, and on IR I don't >>>>>>> see vectors nodes cascading. >>>>>>> >>>>>>> make test TEST='micro:ByteBufferVectorAccess.p' >>>>>>> MICRO="OPTIONS=-f 1 -prof perfasm >>>>>>> -jvmArgsPrepend=-Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0" >>>>>>> JOBS=12 >>>>>>> Benchmark???????????????????????????????????? (size) Mode Cnt?? >>>>>>> Score?? Error? Units >>>>>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024 avgt 30? >>>>>>> 40.472 ? 1.055? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 >>>>>>> avgt????????? NaN??????????? --- >>>>>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024 avgt 30? >>>>>>> 79.251 ? 0.786? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 >>>>>>> avgt????????? NaN??????????? --- >>>>>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024 avgt 30? >>>>>>> 83.627 ? 2.140? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 >>>>>>> avgt????????? NaN??????????? --- >>>>>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024 avgt 30? >>>>>>> 85.561 ? 1.156? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 >>>>>>> avgt????????? NaN >>>>>>> >>>>>>> make test TEST='micro:ByteBufferVectorAccess.p' >>>>>>> MICRO="OPTIONS=-f 1 -prof perfasm" >>>>>>> Benchmark???????????????????????????????????? (size) Mode Cnt??? >>>>>>> Score?? Error? Units >>>>>>> ByteBufferVectorAccess.pollutedBuffers2???????? 1024 avgt 10?? >>>>>>> 49.326 ? 0.843? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers2:?asm??? 1024 >>>>>>> avgt?????????? NaN??????????? --- >>>>>>> ByteBufferVectorAccess.pollutedBuffers3???????? 1024 avgt 10? >>>>>>> 100.291 ? 1.271? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers3:?asm??? 1024 >>>>>>> avgt?????????? NaN??????????? --- >>>>>>> ByteBufferVectorAccess.pollutedBuffers4???????? 1024 avgt 10? >>>>>>> 101.494 ? 1.027? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers4:?asm??? 1024 >>>>>>> avgt?????????? NaN??????????? --- >>>>>>> ByteBufferVectorAccess.pollutedBuffers5???????? 1024 avgt 10?? >>>>>>> 94.606 ? 1.522? ns/op >>>>>>> ByteBufferVectorAccess.pollutedBuffers5:?asm??? 1024 >>>>>>> avgt?????????? NaN >>>>>>> >>>>>>> >>>>>>> BR, >>>>>>> Rado >>>>>>> From: Paul Sandoz >>>>>>> Sent: Friday, August 6, 2021 18:04 >>>>>>> To: Rados?aw Smogura >>>>>>> Cc: panama-dev at openjdk.java.net >>>>>>> Subject: Re: Issues with loop unrolling: better pinned node >>>>>>> >>>>>>> Hi Rado, >>>>>>> >>>>>>> It?s good you are looking at the IR >>>>>>> >>>>>>> Out of curiosity, what happens if you turn off bounds checking [*]? >>>>>>> >>>>>>> Paul. >>>>>>> >>>>>>> [*] >>>>>>> -Djdk.incubator.vector.VECTOR_ACCESS_OOB_CHECK=0 >>>>>>> >>>>>>> > On Aug 6, 2021, at 8:39 AM, Rados?aw Smogura >>>>>>> wrote: >>>>>>> > >>>>>>> > Hi all, >>>>>>> > >>>>>>> > I've found that even if we get rid of barriers, the loop can't >>>>>>> get unrolled, and not needed code is inside it. >>>>>>> > >>>>>>> > I've found this graph, I wonder if it's most optimal, in a >>>>>>> partiucalry Load of ByteBuffer index / hb is from phi, could it >>>>>>> be attached to initial memory? >>>>>>> > >>>>>>> > Here's a picture >>>>>>> https://drive.google.com/file/d/1G7ZN0xHOVIVHmZ_5TTIUdm3F30okAzvO/view?usp=sharing >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> > >>>>>>> [https://lh6.googleusercontent.com/SKgGZgfVWFpG8w4mWqguLSU4DVfa1MKYPSQhxv8EoX04XzVz8U8Kc4zHP0iwdR26Suc=w1200-h630-p]>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> > >>>>>> >>>>>>> > >>>>>>> bb_issues.png>>>>> >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> > >>>>>> >>>>>>> > drive.google.com >>>>>>> > >>>>>>> > >>>>>>> > And sample code >>>>>>> > >>>>>>> > protected void copyMemory(ByteBuffer in, ByteBuffer out) { >>>>>>> >? var limit = SPECIES.loopBound(in.limit()); >>>>>>> >? for (int i=0; i < limit; i += SPECIES.vectorByteSize()) { >>>>>>> >??? final var v = ByteVector.fromByteBuffer(SPECIES, in, i, >>>>>>> ByteOrder.nativeOrder()); >>>>>>> >??? v.intoByteBuffer(out, i, ByteOrder.nativeOrder()); >>>>>>> >? } >>>>>>> > } >>>>>>> > >>>>>>> > Kind regards, >>>>>>> > Rado >>>>>> From njian at openjdk.java.net Tue Aug 31 07:47:43 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Tue, 31 Aug 2021 07:47:43 GMT Subject: [vectorIntrinsics+mask] RFR: 8273159: Remove LoadVectorMaskNode/StoreVectorMaskNode Message-ID: <9ELk1ezV6ccAGvsGlOd87FWLMT8RLkL7XJWXPwB1C_E=.9c5d050e-b287-45ae-8898-7d452c6d017f@github.com> Removed the nodes and related code. Try to generate the SVE ld1b/st1b extend/narrow instructions by matching specific rules. ------------- Commit messages: - 8273159: Remove LoadVectorMaskNode/StoreVectorMaskNode Changes: https://git.openjdk.java.net/panama-vector/pull/116/files Webrev: https://webrevs.openjdk.java.net/?repo=panama-vector&pr=116&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8273159 Stats: 308 lines in 12 files changed: 29 ins; 227 del; 52 mod Patch: https://git.openjdk.java.net/panama-vector/pull/116.diff Fetch: git fetch https://git.openjdk.java.net/panama-vector pull/116/head:pull/116 PR: https://git.openjdk.java.net/panama-vector/pull/116 From njian at openjdk.java.net Tue Aug 31 09:18:37 2021 From: njian at openjdk.java.net (Ningsheng Jian) Date: Tue, 31 Aug 2021 09:18:37 GMT Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: References: <0A62FA43-000C-4033-96DD-EB153826D2DF@oracle.com> Message-ID: On Mon, 30 Aug 2021 11:39:31 GMT, Joshua Zhu wrote: > > I think I would rather see a vector-to-vector compress operation, than a vector-to-memory operation that also includes compression. Isn?t that the real underlying primitive? > > Agree. John, thanks a lot for your review comments. This will make the primitive more friendly. Yes, if we have to introduce a new API, a vector-to-vector compress operation sounds more reasonable. Arm SVE instrctuion COMPACT could also do such work. ------------- PR: https://git.openjdk.java.net/panama-vector/pull/115 From paul.sandoz at oracle.com Tue Aug 31 16:44:24 2021 From: paul.sandoz at oracle.com (Paul Sandoz) Date: Tue, 31 Aug 2021 16:44:24 +0000 Subject: [vectorIntrinsics+mask] RFR: 8273057: [vector] New VectorAPI "SelectiveStore" In-Reply-To: References: <0A62FA43-000C-4033-96DD-EB153826D2DF@oracle.com> Message-ID: <052037EA-7C1F-4105-B14D-EC8212EC29C8@oracle.com> Yes, my suggestion is that a vector-to-vector compress might be a composition of mask -> partitioning shuffle -> rearrange, such that on supported architectures it reduces down to a single instruction. In combination with a store and prefix mask it may be possible to reduce further to single instruction accepting the source vector, mask, and a memory location. That may be wishful thinking, however we have made significant improvements to the optimization of shuffles and masking, which gives me some hope. I think we should give it some more thought (on the C2 heroics required to not, whether we can internally classify certain kinds of shuffle etc) before committing to a more specific/specialized operation, such as say: - Vector.compress(VectorMask<>); or perhaps - a new class of operators, rearrange operators, whose behaviors are documented with regards to mask and non-mask variants. (It?s tempting to create a special unary lanewise operator, whose non-mask variant returns the input. But, that would be a misuse.) Paul. > On Aug 31, 2021, at 2:18 AM, Ningsheng Jian wrote: > > On Mon, 30 Aug 2021 11:39:31 GMT, Joshua Zhu wrote: > >>> I think I would rather see a vector-to-vector compress operation, than a vector-to-memory operation that also includes compression. Isn?t that the real underlying primitive? >> >> Agree. John, thanks a lot for your review comments. This will make the primitive more friendly. > > Yes, if we have to introduce a new API, a vector-to-vector compress operation sounds more reasonable. Arm SVE instrctuion COMPACT could also do such work. > > ------------- > > PR: https://git.openjdk.java.net/panama-vector/pull/115