Re: RFR: 8345799: Update copyright year to 2024 for core-libs in files where it was missed [v3]

2024-12-11 Thread Hamlin Li
On Mon, 9 Dec 2024 15:42:57 GMT, Magnus Ihse Bursie  wrote:

>> Some files have been modified in 2024, but the copyright year has not been 
>> properly updated. This should be fixed. 
>> 
>> I have located these modified files using:
>> 
>> git log --since="Jan 1" --name-only --pretty=format: | sort -u > file.list
>> 
>> and then run a script to update the copyright year to 2024 on these files.
>> 
>> I have made a manual sampling of files in the list to verify that they have 
>> indeed been modified in 2024.
>
> Magnus Ihse Bursie has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Revert changes to binary files

Nice batch cleanup.

-

Marked as reviewed by mli (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/22640#pullrequestreview-2494928848


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v51]

2024-10-25 Thread Hamlin Li
On Thu, 24 Oct 2024 14:05:40 GMT, Roman Kennke  wrote:

>> This is the main body of the JEP 450: Compact Object Headers (Experimental).
>> 
>> It is also a follow-up to #20640, which now also includes (and supersedes) 
>> #20603 and #20605, plus the Tiny Class-Pointers parts that have been 
>> previously missing.
>> 
>> Main changes:
>>  - Introduction of the (experimental) flag UseCompactObjectHeaders. All 
>> changes in this PR are protected by this flag. The purpose of the flag is to 
>> provide a fallback, in case that users unexpectedly observe problems with 
>> the new implementation. The intention is that this flag will remain 
>> experimental and opt-in for at least one release, then make it on-by-default 
>> and diagnostic (?), and eventually deprecate and obsolete it. However, there 
>> are a few unknowns in that plan, specifically, we may want to further 
>> improve compact headers to 4 bytes, we are planning to enhance the Klass* 
>> encoding to support virtually unlimited number of Klasses, at which point we 
>> could also obsolete UseCompressedClassPointers.
>>  - The compressed Klass* can now be stored in the mark-word of objects. In 
>> order to be able to do this, we are add some changes to GC forwarding (see 
>> below) to protect the relevant (upper 22) bits of the mark-word. Significant 
>> parts of this PR deal with loading the compressed Klass* from the mark-word. 
>> This PR also changes some code paths (mostly in GCs) to be more careful when 
>> accessing Klass* (or mark-word or size) to be able to fetch it from the 
>> forwardee in case the object is forwarded.
>>  - Self-forwarding in GCs (which is used to deal with promotion failure) now 
>> uses a bit to indicate 'self-forwarding'. This is needed to preserve the 
>> crucial Klass* bits in the header. This also allows to get rid of 
>> preserved-header machinery in SerialGC and G1 (Parallel GC abuses 
>> preserved-marks to also find all other relevant oops).
>>  - Full GC forwarding now uses an encoding similar to compressed-oops. We 
>> have 40 bits for that, and can encode up to 8TB of heap. When exceeding 8TB, 
>> we turn off UseCompressedClassPointers (except in ZGC, which doesn't use the 
>> GC forwarding at all).
>>  - Instances can now have their base-offset (the offset where the field 
>> layouter starts to place fields) at offset 8 (instead of 12 or 16).
>>  - Arrays will now store their length at offset 8.
>>  - CDS can now write and read archives with the compressed header. However, 
>> it is not possible to read an archive that has been written with an opposite 
>> setting of UseCompactObjectHeaders. Some build machinery is added so that 
>> _co...
>
> Roman Kennke has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Conditionalize platform specific parts of 
> CompressedClassPointersEncodingScheme test

test/hotspot/jtreg/runtime/CompressedOops/CompressedClassPointersEncodingScheme.java
 line 107:

> 105: // the encoding range. We expect the encoding Base to start at 
> the class space start - but to enforce that,
> 106: // we choose a high address.
> 107: if (Platform.isAArch64() || Platform.isX64()) {

@rkennke please also enable riscv for this test 
`CompressedClassPointersEncodingScheme.java`, it passed in my environment. 
Thanks!

-

PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1815565554


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v43]

2024-10-17 Thread Hamlin Li
On Wed, 16 Oct 2024 13:42:42 GMT, Roman Kennke  wrote:

>> We're seeing failures in our nightly testing for tests 
>> runtime/cds/appcds/SharedBaseAddress.java and 
>> runtime/cds/SharedBaseAddress.java which I'm tracking in this bug 
>> [JDK-8340212](https://bugs.openjdk.org/browse/JDK-8340212)
>> 
>> This patch should problem list these two tests on aarch64 when 
>> UseCompactObjectHeaders is on (if possible to be that specific), or just 
>> plain problem list it until I have a fix for it.
>
>> We're seeing failures in our nightly testing for tests 
>> runtime/cds/appcds/SharedBaseAddress.java and 
>> runtime/cds/SharedBaseAddress.java which I'm tracking in this bug 
>> [JDK-8340212](https://bugs.openjdk.org/browse/JDK-8340212)
>> 
>> This patch should problem list these two tests on aarch64 when 
>> UseCompactObjectHeaders is on (if possible to be that specific), or just 
>> plain problem list it until I have a fix for it.
> 
> Thanks for pointing this out. I've problem-listed both tests on aarch64.

@rkennke Here is the [riscv 
implementation](https://github.com/rkennke/jdk/compare/JDK-8305895-v4...rivosinc:jdk-compact-2:compact-header-riscv?expand=1#diff-5808bc502bdf55f1ae7ba30504c8ee6eb92527f0c11670a35d6279d671b52c6bR271),
 could you help to include it in this pr? Thanks!

-

PR Comment: https://git.openjdk.org/jdk/pull/20677#issuecomment-2419103904


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v23]

2024-10-15 Thread Hamlin Li
On Thu, 19 Sep 2024 15:01:26 GMT, Hamlin Li  wrote:

>> Roman Kennke has updated the pull request incrementally with two additional 
>> commits since the last revision:
>> 
>>  - Merge remote-tracking branch 'lilliput/JEP-450-temporary-fix-branch-2' 
>> into JDK-8305895-v4
>>  - review feedback
>
> In both aarch64.ad and x86_64.ad, `MachUEPNode::format` might need some 
> change accordingly?

> AFAIK, @Hamlin-Li is working on the RISCV port. Not sure who would do s390. 
> If it's available before intergration, I'll include it, but I'll not wait for 
> it.

Thanks! We're having some internal (riscv specific) discussion & review, should 
be able to provide the patch soon.

-

PR Comment: https://git.openjdk.org/jdk/pull/20677#issuecomment-2413178574


Re: RFR: 8334305: Remove all code for nsk.share.Log verbose mode [v3]

2024-10-01 Thread Hamlin Li
On Tue, 1 Oct 2024 07:01:17 GMT, Ramkumar Sunderbabu  
wrote:

>> Cleaning up nsk.share.Log code after the verbose mode was set always true.
>> 
>> Tested all the vmTestbase/ tests.
>
> Ramkumar Sunderbabu has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Addressed review comments part2

Marked as reviewed by mli (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/21267#pullrequestreview-2339332109


Re: RFR: 8341168: Cleanup dead code after JDK-8322630 [v2]

2024-09-30 Thread Hamlin Li
On Mon, 30 Sep 2024 08:15:51 GMT, Axel Boldt-Christmas  
wrote:

>> [JDK-8322630](https://bugs.openjdk.org/browse/JDK-8322630) / #17495 removed 
>> the the concept of ICStubs, InlineCache buffers and related safepoints.
>> 
>> There are a handfull of references and auxiliary constructs still in the 
>> code, I propose we clean these out.
>> 
>> This removes the unused:
>>  * Experimental `InlineCacheBufferSize` option
>>  * `InlineCacheBuffer_lock` mutex
>>  * `Thread::_missed_ic_stub_refill_verifier` field
>>  * `VM_ICBufferFull` VM operation
>
> Axel Boldt-Christmas has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Add newline

Marked as reviewed by mli (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/21255#pullrequestreview-2336747914


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v23]

2024-09-19 Thread Hamlin Li
On Thu, 19 Sep 2024 12:08:46 GMT, Roman Kennke  wrote:

>> This is the main body of the JEP 450: Compact Object Headers (Experimental).
>> 
>> It is also a follow-up to #20640, which now also includes (and supersedes) 
>> #20603 and #20605, plus the Tiny Class-Pointers parts that have been 
>> previously missing.
>> 
>> Main changes:
>>  - Introduction of the (experimental) flag UseCompactObjectHeaders. All 
>> changes in this PR are protected by this flag. The purpose of the flag is to 
>> provide a fallback, in case that users unexpectedly observe problems with 
>> the new implementation. The intention is that this flag will remain 
>> experimental and opt-in for at least one release, then make it on-by-default 
>> and diagnostic (?), and eventually deprecate and obsolete it. However, there 
>> are a few unknowns in that plan, specifically, we may want to further 
>> improve compact headers to 4 bytes, we are planning to enhance the Klass* 
>> encoding to support virtually unlimited number of Klasses, at which point we 
>> could also obsolete UseCompressedClassPointers.
>>  - The compressed Klass* can now be stored in the mark-word of objects. In 
>> order to be able to do this, we are add some changes to GC forwarding (see 
>> below) to protect the relevant (upper 22) bits of the mark-word. Significant 
>> parts of this PR deal with loading the compressed Klass* from the mark-word. 
>> This PR also changes some code paths (mostly in GCs) to be more careful when 
>> accessing Klass* (or mark-word or size) to be able to fetch it from the 
>> forwardee in case the object is forwarded.
>>  - Self-forwarding in GCs (which is used to deal with promotion failure) now 
>> uses a bit to indicate 'self-forwarding'. This is needed to preserve the 
>> crucial Klass* bits in the header. This also allows to get rid of 
>> preserved-header machinery in SerialGC and G1 (Parallel GC abuses 
>> preserved-marks to also find all other relevant oops).
>>  - Full GC forwarding now uses an encoding similar to compressed-oops. We 
>> have 40 bits for that, and can encode up to 8TB of heap. When exceeding 8TB, 
>> we turn off UseCompressedClassPointers (except in ZGC, which doesn't use the 
>> GC forwarding at all).
>>  - Instances can now have their base-offset (the offset where the field 
>> layouter starts to place fields) at offset 8 (instead of 12 or 16).
>>  - Arrays will now store their length at offset 8.
>>  - CDS can now write and read archives with the compressed header. However, 
>> it is not possible to read an archive that has been written with an opposite 
>> setting of UseCompactObjectHeaders. Some build machinery is added so that 
>> _co...
>
> Roman Kennke has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - Merge remote-tracking branch 'lilliput/JEP-450-temporary-fix-branch-2' 
> into JDK-8305895-v4
>  - review feedback

In both aarch64.ad and x86_64.ad, `MachUEPNode::format` might need some change 
accordingly?

-

PR Comment: https://git.openjdk.org/jdk/pull/20677#issuecomment-2361266175


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v21]

2024-09-19 Thread Hamlin Li
On Wed, 18 Sep 2024 13:23:44 GMT, Roman Kennke  wrote:

>> This is the main body of the JEP 450: Compact Object Headers (Experimental).
>> 
>> It is also a follow-up to #20640, which now also includes (and supersedes) 
>> #20603 and #20605, plus the Tiny Class-Pointers parts that have been 
>> previously missing.
>> 
>> Main changes:
>>  - Introduction of the (experimental) flag UseCompactObjectHeaders. All 
>> changes in this PR are protected by this flag. The purpose of the flag is to 
>> provide a fallback, in case that users unexpectedly observe problems with 
>> the new implementation. The intention is that this flag will remain 
>> experimental and opt-in for at least one release, then make it on-by-default 
>> and diagnostic (?), and eventually deprecate and obsolete it. However, there 
>> are a few unknowns in that plan, specifically, we may want to further 
>> improve compact headers to 4 bytes, we are planning to enhance the Klass* 
>> encoding to support virtually unlimited number of Klasses, at which point we 
>> could also obsolete UseCompressedClassPointers.
>>  - The compressed Klass* can now be stored in the mark-word of objects. In 
>> order to be able to do this, we are add some changes to GC forwarding (see 
>> below) to protect the relevant (upper 22) bits of the mark-word. Significant 
>> parts of this PR deal with loading the compressed Klass* from the mark-word. 
>> This PR also changes some code paths (mostly in GCs) to be more careful when 
>> accessing Klass* (or mark-word or size) to be able to fetch it from the 
>> forwardee in case the object is forwarded.
>>  - Self-forwarding in GCs (which is used to deal with promotion failure) now 
>> uses a bit to indicate 'self-forwarding'. This is needed to preserve the 
>> crucial Klass* bits in the header. This also allows to get rid of 
>> preserved-header machinery in SerialGC and G1 (Parallel GC abuses 
>> preserved-marks to also find all other relevant oops).
>>  - Full GC forwarding now uses an encoding similar to compressed-oops. We 
>> have 40 bits for that, and can encode up to 8TB of heap. When exceeding 8TB, 
>> we turn off UseCompressedClassPointers (except in ZGC, which doesn't use the 
>> GC forwarding at all).
>>  - Instances can now have their base-offset (the offset where the field 
>> layouter starts to place fields) at offset 8 (instead of 12 or 16).
>>  - Arrays will now store their length at offset 8.
>>  - CDS can now write and read archives with the compressed header. However, 
>> it is not possible to read an archive that has been written with an opposite 
>> setting of UseCompactObjectHeaders. Some build machinery is added so that 
>> _co...
>
> Roman Kennke has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   JVMCI support

src/hotspot/cpu/aarch64/c1_LIRAssembler_aarch64.cpp line 2529:

> 2527: }
> 2528: __ decode_klass_not_null(result);
> 2529:   } else {

Could this if/else block be replaced with a simple call of load_klass(...)?

src/hotspot/cpu/x86/c1_LIRAssembler_x86.cpp line 3522:

> 3520:   {
> 3521: __ movptr(result, Address(obj, oopDesc::klass_offset_in_bytes()));
> 3522:   }

Could this if/else block be replaced with a simple call of load_klass(...)?

-

PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1766587136
PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1766582255


Re: RFR: 8340213: jcmd VM.events ignores max argument [v2]

2024-09-17 Thread Hamlin Li
On Mon, 16 Sep 2024 19:54:38 GMT, Leonid Mesnik  wrote:

>> The inner  'int max;' declaration hide previous max.
>
> Leonid Mesnik has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - typo fixed.
>  - check added.

Marked as reviewed by mli (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/21024#pullrequestreview-2308619911


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v6]

2024-09-10 Thread Hamlin Li
On Mon, 9 Sep 2024 14:08:53 GMT, Roman Kennke  wrote:

>> Yes, I'm interested in it. Thanks for raising the discussion. :)
>
> If anybody is doing it, please send me a patch, or we can do it as a 
> follow-up PR.

Thanks. I'll send it to you if I finish it in time, otherwise I will do it in a 
separate pr.

-

PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1751544394


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v6]

2024-08-27 Thread Hamlin Li
On Tue, 27 Aug 2024 05:37:30 GMT, Fei Yang  wrote:

>> src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp line 170:
>> 
>>> 168:   mv(tmp1, (int32_t)(intptr_t)markWord::prototype().value());
>>> 169:   sd(tmp1, Address(obj, oopDesc::mark_offset_in_bytes()));
>>> 170: // Todo UseCompactObjectHeaders
>> 
>> Can I ask, will this pr fullly support riscv?
>
> @Hamlin-Li : AFAIK, porting to linux-riscv platform has NOT been started yet. 
> To avoid duplicate work, please let me know if anyone is interested or has 
> been working on it :-)

Yes, I'm interested in it. Thanks for raising the discussion. :)

-

PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1732312058


Re: RFR: 8305895: Implement JEP 450: Compact Object Headers (Experimental) [v6]

2024-08-23 Thread Hamlin Li
On Thu, 22 Aug 2024 20:08:43 GMT, Roman Kennke  wrote:

>> This is the main body of the JEP 450: Compact Object Headers (Experimental).
>> 
>> It is also a follow-up to #20640, which now also includes (and supersedes) 
>> #20603 and #20605, plus the Tiny Class-Pointers parts that have been 
>> previously missing.
>> 
>> Main changes:
>>  - Introduction of the (experimental) flag UseCompactObjectHeaders. All 
>> changes in this PR are protected by this flag. The purpose of the flag is to 
>> provide a fallback, in case that users unexpectedly observe problems with 
>> the new implementation. The intention is that this flag will remain 
>> experimental and opt-in for at least one release, then make it on-by-default 
>> and diagnostic (?), and eventually deprecate and obsolete it. However, there 
>> are a few unknowns in that plan, specifically, we may want to further 
>> improve compact headers to 4 bytes, we are planning to enhance the Klass* 
>> encoding to support virtually unlimited number of Klasses, at which point we 
>> could also obsolete UseCompressedClassPointers.
>>  - The compressed Klass* can now be stored in the mark-word of objects. In 
>> order to be able to do this, we are add some changes to GC forwarding (see 
>> below) to protect the relevant (upper 22) bits of the mark-word. Significant 
>> parts of this PR deal with loading the compressed Klass* from the mark-word. 
>> This PR also changes some code paths (mostly in GCs) to be more careful when 
>> accessing Klass* (or mark-word or size) to be able to fetch it from the 
>> forwardee in case the object is forwarded.
>>  - Self-forwarding in GCs (which is used to deal with promotion failure) now 
>> uses a bit to indicate 'self-forwarding'. This is needed to preserve the 
>> crucial Klass* bits in the header. This also allows to get rid of 
>> preserved-header machinery in SerialGC and G1 (Parallel GC abuses 
>> preserved-marks to also find all other relevant oops).
>>  - Full GC forwarding now uses an encoding similar to compressed-oops. We 
>> have 40 bits for that, and can encode up to 8TB of heap. When exceeding 8TB, 
>> we turn off UseCompressedClassPointers (except in ZGC, which doesn't use the 
>> GC forwarding at all).
>>  - Instances can now have their base-offset (the offset where the field 
>> layouter starts to place fields) at offset 8 (instead of 12 or 16).
>>  - Arrays will now store their length at offset 8.
>>  - CDS can now write and read archives with the compressed header. However, 
>> it is not possible to read an archive that has been written with an opposite 
>> setting of UseCompactObjectHeaders. Some build machinery is added so that 
>> _co...
>
> Roman Kennke has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Fix bit counts in GCForwarding

src/hotspot/cpu/riscv/c1_MacroAssembler_riscv.cpp line 170:

> 168:   mv(tmp1, (int32_t)(intptr_t)markWord::prototype().value());
> 169:   sd(tmp1, Address(obj, oopDesc::mark_offset_in_bytes()));
> 170: // Todo UseCompactObjectHeaders

Can I ask, will this pr fullly support riscv?

src/hotspot/share/oops/oop.inline.hpp line 94:

> 92: 
> 93: void oopDesc::init_mark() {
> 94:   if (UseCompactObjectHeaders) {

Seems only `set_mark(prototype_mark());` is fine for both cases?

-

PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1729383247
PR Review Comment: https://git.openjdk.org/jdk/pull/20677#discussion_r1728833750


Re: RFR: 8318126: Refresh manpages

2023-10-16 Thread Hamlin Li
On Mon, 16 Oct 2023 01:18:52 GMT, David Holmes  wrote:

> The open nroff manpage files are out of sync with their closed markdown 
> sources and need to be refreshed.
> 
> The changes to apply are coming from:
> 
> - [JDK-8288158](https://bugs.openjdk.org/browse/JDK-8288158): Add an anchor 
> to each subcommand option on jfr html page
> - [JDK-8273131](https://bugs.openjdk.org/browse/JDK-8273131): Update the java 
> manpage markdown source for JFR filename expansion
> - [JDK-8221633](https://bugs.openjdk.org/browse/JDK-8221633): 
> StartFlightRecording: consider moving mention of multiple comma-separated 
> parameters to the front
> - [JDK-8308662](https://bugs.openjdk.org/browse/JDK-8308662): Update the 
> "java" tool specification for CompileOnly
> - [JDK-8317565](https://bugs.openjdk.org/browse/JDK-8317565): Update Manpage 
> for obsoletion of UseSHM
> - [JDK-8310460](https://bugs.openjdk.org/browse/JDK-8310460): Remove jdeps 
> -profile option
> 
> There are also some simple line break changes, likely due to using different 
> versions of the pandoc tool.
> 
> Thanks

Marked as reviewed by mli (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/16196#pullrequestreview-1679368261


Re: RFR: 8312777: notifyJvmtiMount before notifyJvmtiUnmount

2023-10-15 Thread Hamlin Li
On Sat, 14 Oct 2023 18:07:45 GMT, Alan Bateman  wrote:

> JVMTI is notified after a virtual thread unmounts. Right not, this 
> notification is done after the virtual thread has finished parking or 
> yielding so it's possible for the virtual to continue, and be mounted on a 
> different carrier, before the unmount notification has completed on the 
> original carrier. If this happens it means the the JVMTI mount and unmount 
> notifications will race and it's possible they could be unbalanced. The 
> unmount notification needs to move to after the unmount and before the 
> virtual thread state is changed.
> 
> While in the area, I've removed @ChangesCurrentThread from VirtualThread.run. 
> This annotation was in place to workaround an issue with the notifyJvmtiXXX 
> instrinsics, fixed recently by JDK-8316130.
> 
> Testing: tier1-6.

LGTM.

-

Marked as reviewed by mli (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/16194#pullrequestreview-1678813750


Re: RFR: 8311000: missing @since info in jdk.management

2023-06-29 Thread Hamlin Li
On Thu, 29 Jun 2023 11:48:43 GMT, Kevin Walls  wrote:

> Simple addition of a doc tag.  
> 
> src/share/classes/com/sun/management/GarbageCollectionNotificationInfo.java 
> is introduced in jdk7 by
> 7036199: Adding a notification to the implementation of 
> GarbageCollectorMXBeans

Marked as reviewed by mli (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/14708#pullrequestreview-1506600934


Re: RFR: 8310988: Missing @since tags in java.management.rmi

2023-06-29 Thread Hamlin Li
On Thu, 29 Jun 2023 16:08:15 GMT, Kevin Walls  wrote:

> Simple doc tag addition.
> 
> These are files which describe an interface that has been with us since 1.5.  
> The files themselves were previously generated at build time, but have been 
> in the repo since jdk15.  But the API is since 1.5.
> 
> The other file mentioned in the bug is not a public class and has no javadoc 
> generated, ignoring that one.

Marked as reviewed by mli (Reviewer).

-

PR Review: https://git.openjdk.org/jdk/pull/14714#pullrequestreview-1506598416