[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


![image](https://user-images.githubusercontent.com/7457876/219112435-16565917-a048-4d83-a0e3-e1eba194ea12.png)

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