From shade at openjdk.org Tue Aug 15 19:18:53 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 19:18:53 GMT Subject: RFR: CODETOOLS-7903521: JOL: heapdumpstats should print array/class names properly Message-ID: <-Yem8H7bCguwY5CS0KbdlXg8lFMV-JFzdZi10i360Hw=.bbdb30f3-69e3-49a4-8bc8-fe3cc9f2ab02@github.com> Current "heapdumpstats" prints "Object[]" for all array types. It should print the actual type. Also, the printouts for the class names should be in more human-readable notation, not the JVM binary names. ------------- Commit messages: - Fix Changes: https://git.openjdk.org/jol/pull/45/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=45&range=00 Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903521 Stats: 141 lines in 3 files changed: 135 ins; 2 del; 4 mod Patch: https://git.openjdk.org/jol/pull/45.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/45/head:pull/45 PR: https://git.openjdk.org/jol/pull/45 From shade at openjdk.org Tue Aug 15 20:05:20 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:05:20 GMT Subject: RFR: CODETOOLS-7903521: JOL: heapdumpstats should print array/class names properly [v2] In-Reply-To: <-Yem8H7bCguwY5CS0KbdlXg8lFMV-JFzdZi10i360Hw=.bbdb30f3-69e3-49a4-8bc8-fe3cc9f2ab02@github.com> References: <-Yem8H7bCguwY5CS0KbdlXg8lFMV-JFzdZi10i360Hw=.bbdb30f3-69e3-49a4-8bc8-fe3cc9f2ab02@github.com> Message-ID: > Current "heapdumpstats" prints "Object[]" for all array types. It should print the actual type. Also, the printouts for the class names should be in more human-readable notation, not the JVM binary names. Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: Handle more special cases for extra safety ------------- Changes: - all: https://git.openjdk.org/jol/pull/45/files - new: https://git.openjdk.org/jol/pull/45/files/ed1d7d5d..0bdbffde Webrevs: - full: https://webrevs.openjdk.org/?repo=jol&pr=45&range=01 - incr: https://webrevs.openjdk.org/?repo=jol&pr=45&range=00-01 Stats: 13 lines in 2 files changed: 12 ins; 0 del; 1 mod Patch: https://git.openjdk.org/jol/pull/45.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/45/head:pull/45 PR: https://git.openjdk.org/jol/pull/45 From shade at openjdk.org Tue Aug 15 20:06:44 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:06:44 GMT Subject: RFR: CODETOOLS-7903522: JOL: Heap dump readers should print progress Message-ID: For large heap dumps, it would be convenient to see the read progress. ------------- Commit messages: - Fix Changes: https://git.openjdk.org/jol/pull/46/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=46&range=00 Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903522 Stats: 31 lines in 5 files changed: 18 ins; 7 del; 6 mod Patch: https://git.openjdk.org/jol/pull/46.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/46/head:pull/46 PR: https://git.openjdk.org/jol/pull/46 From duke at openjdk.org Tue Aug 15 20:19:13 2023 From: duke at openjdk.org (duke) Date: Tue, 15 Aug 2023 20:19:13 GMT Subject: git: openjdk/jol: 7903521: JOL: heapdumpstats should print array/class names properly Message-ID: <41324828-9a5a-4927-b9b4-09036b43fcb0@openjdk.org> Changeset: 0af30b8e Author: Aleksey Shipil?v Committer: GitHub Date: 2023-08-15 22:18:15 +0000 URL: https://git.openjdk.org/jol/commit/0af30b8e5d01f69f4c27dd2b539ed0061583b756 7903521: JOL: heapdumpstats should print array/class names properly ! jol-core/src/main/java/org/openjdk/jol/heap/HeapDumpReader.java ! jol-core/src/main/java/org/openjdk/jol/util/ClassUtils.java + jol-core/src/test/java/org/openjdk/jol/util/ClassUtilsTest.java From shade at openjdk.org Tue Aug 15 20:20:35 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:20:35 GMT Subject: Withdrawn: CODETOOLS-7903521: JOL: heapdumpstats should print array/class names properly In-Reply-To: <-Yem8H7bCguwY5CS0KbdlXg8lFMV-JFzdZi10i360Hw=.bbdb30f3-69e3-49a4-8bc8-fe3cc9f2ab02@github.com> References: <-Yem8H7bCguwY5CS0KbdlXg8lFMV-JFzdZi10i360Hw=.bbdb30f3-69e3-49a4-8bc8-fe3cc9f2ab02@github.com> Message-ID: On Tue, 15 Aug 2023 19:12:24 GMT, Aleksey Shipilev wrote: > Current "heapdumpstats" prints "Object[]" for all array types. It should print the actual type. Also, the printouts for the class names should be in more human-readable notation, not the JVM binary names. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jol/pull/45 From shade at openjdk.org Tue Aug 15 20:24:38 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:24:38 GMT Subject: RFR: CODETOOLS-7903522: JOL: Heap dump readers should print progress [v2] In-Reply-To: References: Message-ID: <0-MDkR9GuKdhoP-aER0QGx1yKoqp6PiVYzts1-cwEvU=.44f03e5e-d4f0-42f3-9554-dffb378906c5@github.com> > For large heap dumps, it would be convenient to see the read progress. Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains two commits: - Merge branch 'master' into CODETOOLS-7903522-heapdump-progress - Fix ------------- Changes: https://git.openjdk.org/jol/pull/46/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=46&range=01 Stats: 28 lines in 5 files changed: 17 ins; 5 del; 6 mod Patch: https://git.openjdk.org/jol/pull/46.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/46/head:pull/46 PR: https://git.openjdk.org/jol/pull/46 From shade at openjdk.org Tue Aug 15 20:30:44 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:30:44 GMT Subject: RFR: CODETOOLS-7903522: JOL: Heap dump readers should print progress [v3] In-Reply-To: References: Message-ID: > For large heap dumps, it would be convenient to see the read progress. Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: Also add flushes ------------- Changes: - all: https://git.openjdk.org/jol/pull/46/files - new: https://git.openjdk.org/jol/pull/46/files/2a81bb5c..ddad69bb Webrevs: - full: https://webrevs.openjdk.org/?repo=jol&pr=46&range=02 - incr: https://webrevs.openjdk.org/?repo=jol&pr=46&range=01-02 Stats: 2 lines in 1 file changed: 2 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jol/pull/46.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/46/head:pull/46 PR: https://git.openjdk.org/jol/pull/46 From duke at openjdk.org Tue Aug 15 20:42:15 2023 From: duke at openjdk.org (duke) Date: Tue, 15 Aug 2023 20:42:15 GMT Subject: git: openjdk/jol: 7903522: JOL: Heap dump readers should print progress Message-ID: <12685c54-e5ec-491c-be72-cce231d49e5d@openjdk.org> Changeset: a24b6fca Author: Aleksey Shipil?v Committer: GitHub Date: 2023-08-15 22:40:51 +0000 URL: https://git.openjdk.org/jol/commit/a24b6fca8b1531ad4d0b5b8ac68ac2e8bbd96c80 7903522: JOL: Heap dump readers should print progress ! jol-cli/src/main/java/org/openjdk/jol/operations/HeapDumpEstimates.java ! jol-cli/src/main/java/org/openjdk/jol/operations/HeapDumpStats.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectShapes.java ! jol-cli/src/main/java/org/openjdk/jol/operations/StringCompress.java ! jol-core/src/main/java/org/openjdk/jol/heap/HeapDumpReader.java From shade at openjdk.org Tue Aug 15 20:43:28 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:43:28 GMT Subject: Withdrawn: CODETOOLS-7903522: JOL: Heap dump readers should print progress In-Reply-To: References: Message-ID: On Tue, 15 Aug 2023 20:00:30 GMT, Aleksey Shipilev wrote: > For large heap dumps, it would be convenient to see the read progress. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jol/pull/46 From shade at openjdk.org Tue Aug 15 20:53:47 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:53:47 GMT Subject: RFR: 7903523: JOL: heapdumpstats should not assume JDK 8 Message-ID: There is a problem in heapdumpstats: it uses the "current VM model" for HotspotLayouter, but sets JVM version as 8. Which means it could actually fail if run on modern JDK. ------------- Commit messages: - Adjust - Fix - Fix Changes: https://git.openjdk.org/jol/pull/47/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=47&range=00 Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903523 Stats: 27 lines in 2 files changed: 23 ins; 2 del; 2 mod Patch: https://git.openjdk.org/jol/pull/47.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/47/head:pull/47 PR: https://git.openjdk.org/jol/pull/47 From shade at openjdk.org Tue Aug 15 20:59:53 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 20:59:53 GMT Subject: RFR: 7903523: JOL: heapdumpstats should not assume JDK 8 [v2] In-Reply-To: References: Message-ID: > There is a problem in heapdumpstats: it uses the "current VM model" for HotspotLayouter, but sets JVM version as 8. Which means it could actually fail if run on modern JDK. Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: More UX updates: print the newline where needed ------------- Changes: - all: https://git.openjdk.org/jol/pull/47/files - new: https://git.openjdk.org/jol/pull/47/files/bf9df26c..c26718b2 Webrevs: - full: https://webrevs.openjdk.org/?repo=jol&pr=47&range=01 - incr: https://webrevs.openjdk.org/?repo=jol&pr=47&range=00-01 Stats: 5 lines in 1 file changed: 5 ins; 0 del; 0 mod Patch: https://git.openjdk.org/jol/pull/47.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/47/head:pull/47 PR: https://git.openjdk.org/jol/pull/47 From duke at openjdk.org Tue Aug 15 21:06:21 2023 From: duke at openjdk.org (duke) Date: Tue, 15 Aug 2023 21:06:21 GMT Subject: git: openjdk/jol: 7903523: JOL: heapdumpstats should not assume JDK 8 Message-ID: <18b065ab-5cbe-4eaa-8915-296b8e099c78@openjdk.org> Changeset: 6e112075 Author: Aleksey Shipil?v Committer: GitHub Date: 2023-08-15 23:03:56 +0000 URL: https://git.openjdk.org/jol/commit/6e1120750a1767d840b9178ff3c8c62334cbaeaa 7903523: JOL: heapdumpstats should not assume JDK 8 ! jol-cli/src/main/java/org/openjdk/jol/operations/HeapDumpStats.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/ModelVM.java From shade at openjdk.org Tue Aug 15 21:06:32 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Tue, 15 Aug 2023 21:06:32 GMT Subject: Withdrawn: 7903523: JOL: heapdumpstats should not assume JDK 8 In-Reply-To: References: Message-ID: On Tue, 15 Aug 2023 20:48:33 GMT, Aleksey Shipilev wrote: > There is a problem in heapdumpstats: it uses the "current VM model" for HotspotLayouter, but sets JVM version as 8. Which means it could actually fail if run on modern JDK. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jol/pull/47 From shade at openjdk.org Wed Aug 16 08:18:02 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 16 Aug 2023 08:18:02 GMT Subject: RFR: 7903525: JOL: heapdumpstats usability improvements Message-ID: We need to be able to sort by column, have better descriptions, etc. Additionally, it does not have to read the large arrays for just the stats. ------------- Commit messages: - Fix Changes: https://git.openjdk.org/jol/pull/48/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=48&range=00 Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903525 Stats: 102 lines in 5 files changed: 45 ins; 16 del; 41 mod Patch: https://git.openjdk.org/jol/pull/48.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/48/head:pull/48 PR: https://git.openjdk.org/jol/pull/48 From duke at openjdk.org Wed Aug 16 08:31:05 2023 From: duke at openjdk.org (duke) Date: Wed, 16 Aug 2023 08:31:05 GMT Subject: git: openjdk/jol: 7903525: JOL: heapdumpstats usability improvements Message-ID: <2d409ec3-24ba-4e05-89e6-814899f2e746@openjdk.org> Changeset: 3e428c13 Author: Aleksey Shipil?v Committer: GitHub Date: 2023-08-16 10:30:23 +0000 URL: https://git.openjdk.org/jol/commit/3e428c1300aa76520ff5cfabf8cd1d5cfeb43ab4 7903525: JOL: heapdumpstats usability improvements ! jol-cli/src/main/java/org/openjdk/jol/operations/HeapDumpEstimates.java ! jol-cli/src/main/java/org/openjdk/jol/operations/HeapDumpStats.java ! jol-cli/src/main/java/org/openjdk/jol/operations/ObjectShapes.java ! jol-cli/src/main/java/org/openjdk/jol/operations/StringCompress.java ! jol-core/src/main/java/org/openjdk/jol/heap/HeapDumpReader.java From shade at openjdk.org Wed Aug 16 08:32:34 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 16 Aug 2023 08:32:34 GMT Subject: Withdrawn: 7903525: JOL: heapdumpstats usability improvements In-Reply-To: References: Message-ID: On Wed, 16 Aug 2023 08:12:25 GMT, Aleksey Shipilev wrote: > We need to be able to sort by column, have better descriptions, etc. Additionally, it does not have to read the large arrays for just the stats. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jol/pull/48 From shade at openjdk.org Wed Aug 23 11:36:00 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 23 Aug 2023 11:36:00 GMT Subject: RFR: 7903532: JOL: Hotspot layouter assumes array bases are aligned to 4 bytes Message-ID: This is actually not true in current VMs, due to [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457). This means HotspotLayouter underestimates the array sizes. This was not caught before, because we did not have good tests for arrays. ------------- Commit messages: - Fix Changes: https://git.openjdk.org/jol/pull/49/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=49&range=00 Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903532 Stats: 145 lines in 9 files changed: 92 ins; 29 del; 24 mod Patch: https://git.openjdk.org/jol/pull/49.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/49/head:pull/49 PR: https://git.openjdk.org/jol/pull/49 From shade at openjdk.org Wed Aug 23 12:05:23 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 23 Aug 2023 12:05:23 GMT Subject: RFR: 7903532: JOL: Hotspot layouter assumes array bases are aligned to 4 bytes [v2] In-Reply-To: References: Message-ID: > This is actually not true in current VMs, due to [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457). This means HotspotLayouter underestimates the array sizes. This was not caught before, because we did not have good tests for arrays. Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: More test configs ------------- Changes: - all: https://git.openjdk.org/jol/pull/49/files - new: https://git.openjdk.org/jol/pull/49/files/aab04534..ae3887a8 Webrevs: - full: https://webrevs.openjdk.org/?repo=jol&pr=49&range=01 - incr: https://webrevs.openjdk.org/?repo=jol&pr=49&range=00-01 Stats: 112 lines in 1 file changed: 96 ins; 0 del; 16 mod Patch: https://git.openjdk.org/jol/pull/49.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/49/head:pull/49 PR: https://git.openjdk.org/jol/pull/49 From shade at openjdk.org Wed Aug 23 13:57:09 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 23 Aug 2023 13:57:09 GMT Subject: RFR: 7903532: JOL: Hotspot layouter assumes array bases are aligned to 4 bytes [v3] In-Reply-To: References: Message-ID: > This is actually not true in current VMs, due to [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457). This means HotspotLayouter underestimates the array sizes. This was not caught before, because we did not have good tests for arrays. Aleksey Shipilev has updated the pull request incrementally with one additional commit since the last revision: Improve the failing test ------------- Changes: - all: https://git.openjdk.org/jol/pull/49/files - new: https://git.openjdk.org/jol/pull/49/files/ae3887a8..df6794b3 Webrevs: - full: https://webrevs.openjdk.org/?repo=jol&pr=49&range=02 - incr: https://webrevs.openjdk.org/?repo=jol&pr=49&range=01-02 Stats: 11 lines in 1 file changed: 6 ins; 2 del; 3 mod Patch: https://git.openjdk.org/jol/pull/49.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/49/head:pull/49 PR: https://git.openjdk.org/jol/pull/49 From duke at openjdk.org Wed Aug 23 14:33:38 2023 From: duke at openjdk.org (duke) Date: Wed, 23 Aug 2023 14:33:38 GMT Subject: git: openjdk/jol: 7903532: JOL: Hotspot layouter assumes array bases are aligned to 4 bytes Message-ID: <017d02f4-8f9a-4bbc-a17f-eaed17388ba5@openjdk.org> Changeset: 8c4d7be9 Author: Aleksey Shipil?v Committer: GitHub Date: 2023-08-23 16:31:08 +0000 URL: https://git.openjdk.org/jol/commit/8c4d7be996489676b9ff9caef83610b15c726019 7903532: JOL: Hotspot layouter assumes array bases are aligned to 4 bytes ! jol-core/pom.xml ! jol-core/src/main/java/org/openjdk/jol/datamodel/DataModel.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/Model32.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/Model64.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/Model64_Lilliput.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/ModelVM.java ! jol-core/src/main/java/org/openjdk/jol/info/ClassLayout.java ! jol-core/src/main/java/org/openjdk/jol/layouters/HotSpotLayouter.java ! jol-core/src/test/java/org/openjdk/jol/info/ClassLayoutArraysTest.java ! jol-core/src/test/java/org/openjdk/jol/layouters/HotspotLayouterRealTest.java From shade at openjdk.org Wed Aug 23 14:33:49 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 23 Aug 2023 14:33:49 GMT Subject: Withdrawn: 7903532: JOL: Hotspot layouter assumes array bases are aligned to 4 bytes In-Reply-To: References: Message-ID: On Wed, 23 Aug 2023 11:30:48 GMT, Aleksey Shipilev wrote: > This is actually not true in current VMs, due to [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457). This means HotspotLayouter underestimates the array sizes. This was not caught before, because we did not have good tests for arrays. This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jol/pull/49 From shade at openjdk.org Wed Aug 23 17:17:57 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 23 Aug 2023 17:17:57 GMT Subject: RFR: 7903535: JOL: Show array base improvements in heapdump-estimates Message-ID: This would help to ballpark the improvements from [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457). ------------- Commit messages: - Work Changes: https://git.openjdk.org/jol/pull/50/files Webrev: https://webrevs.openjdk.org/?repo=jol&pr=50&range=00 Issue: https://bugs.openjdk.org/browse/CODETOOLS-7903535 Stats: 314 lines in 8 files changed: 36 ins; 183 del; 95 mod Patch: https://git.openjdk.org/jol/pull/50.diff Fetch: git fetch https://git.openjdk.org/jol.git pull/50/head:pull/50 PR: https://git.openjdk.org/jol/pull/50 From duke at openjdk.org Wed Aug 23 17:54:41 2023 From: duke at openjdk.org (duke) Date: Wed, 23 Aug 2023 17:54:41 GMT Subject: git: openjdk/jol: 7903535: JOL: Show array base improvements in heapdump-estimates Message-ID: <980b089c-c908-42c4-98f4-254e9c8b8799@openjdk.org> Changeset: 8a0b91a9 Author: Aleksey Shipil?v Committer: GitHub Date: 2023-08-23 19:53:51 +0000 URL: https://git.openjdk.org/jol/commit/8a0b91a9a97ce06092bef2d9494d515695db7648 7903535: JOL: Show array base improvements in heapdump-estimates ! jol-cli/src/main/java/org/openjdk/jol/operations/EstimatedModels.java ! jol-cli/src/main/java/org/openjdk/jol/operations/HeapDumpEstimates.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/DataModel.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/Model32.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/Model64.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/Model64_Lilliput.java ! jol-core/src/main/java/org/openjdk/jol/datamodel/ModelVM.java ! jol-core/src/main/java/org/openjdk/jol/layouters/HotSpotLayouter.java From shade at openjdk.org Wed Aug 23 17:56:44 2023 From: shade at openjdk.org (Aleksey Shipilev) Date: Wed, 23 Aug 2023 17:56:44 GMT Subject: Withdrawn: 7903535: JOL: Show array base improvements in heapdump-estimates In-Reply-To: References: Message-ID: <0aBL2MI1jVVEgG9QwqK8fXfTHupEaYN_XPkmJbfhPxI=.abb9add6-9ebd-489b-88b0-2b1031c0ed08@github.com> On Wed, 23 Aug 2023 17:13:10 GMT, Aleksey Shipilev wrote: > This would help to ballpark the improvements from [JDK-8139457](https://bugs.openjdk.org/browse/JDK-8139457). This pull request has been closed without being integrated. ------------- PR: https://git.openjdk.org/jol/pull/50