[foreign-memaccess+abi] RFR: Deduplicate layouts and simplify value layout implementations [v2]
Per Minborg
pminborg at openjdk.org
Wed Feb 15 17:57:04 UTC 2023
On Wed, 15 Feb 2023 16:34:34 GMT, Per Minborg <pminborg at openjdk.org> wrote:
>> This PR proposes adding deduplication of the immutable value layout where one provides a value that is equal to the one already at hand. For example, `JAVA_INT.withBitAlignment(32)` will return the same object. There is no general caching mechanism that guarantees a layout will never repeat.
>>
>> Another part of this PR relates to simplifying value layouts so they only have a single constructor. This will reduce size slightly. Related to this is the replacement of certain magic numbers which are now represented by constants.
>
> Per Minborg has updated the pull request incrementally with two additional commits since the last revision:
>
> - Rollback changes in constructor
> - Rollback changes not related to dedup
Running a large number of tests and collecting deduplication information reveals the following:
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep SAVED ORDER | wc -l
grep: ORDER: No such file or directory
0
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep "SAVED ORDER" | wc -l
9254
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep "CREATED ORDER" | wc -l
842
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep "SAVED NAME" | wc -l
0
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep "CREATED NAME" | wc -l
34294
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep "SAVED BIT ALIGNMENT" | wc -l
488
pminborg at pminborg-mac minborg-panama % cat /Users/pminborg/dev/minborg-panama/build/macosx-aarch64/test-support/jtreg_open_test_jdk_java_foreign/java/foreign/*.jtr | grep "CREATED BIT ALIGNMENT" | wc -l
969

NOTE: This is for the total number of objects and not retained objects.
So, this indicates deduplicating name would provide next to zero benefit whereas deduplicating byte order has a much better potential.
-------------
PR: https://git.openjdk.org/panama-foreign/pull/795
More information about the panama-dev
mailing list