RFR: 8342806: Desugar capturing lambda in StringNameTable

Claes Redestad redestad at openjdk.org
Tue Oct 22 10:02:30 UTC 2024


On Tue, 22 Oct 2024 09:53:48 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> - Desugar `computeIfAbsent` to `get` & `put` to avoid a capturing lambda. Since the map is a non-synchronized `HashMap` this is just as non-thread-safe as before.
>> - Salvage the microbenchmark added as a JBS comment to https://bugs.openjdk.org/browse/JDK-8268622 
>> - Microbenchmark show a modest reduction in allocations for tests stressing `StringNameTable` (Macbook M1):
>> 
>> 
>> Name                  Cnt         Base         Error          Test         Error   Unit  Change
>> testInternStringTable  10       55,731 ±       3,701        51,083 ±       2,062  ms/op   1,09x (p = 0,000*)
>>   :gc.alloc.rate.norm     54705366,956 ±  375197,844  53936224,624 ± 1421298,600   B/op   0,99x (p = 0,031 )
>> testSharedTable        10       47,997 ±       5,802        48,022 ±       4,968  ms/op   1,00x (p = 0,988 )
>>   :gc.alloc.rate.norm     56562680,368 ± 1535117,433  53403645,438 ±  218526,779   B/op   0,94x (p = 0,000*)
>> testStringTable        10       45,933 ±       2,542        44,094 ±       1,360  ms/op   1,04x (p = 0,009*)
>>   :gc.alloc.rate.norm     56244541,359 ± 1019940,919  53226602,956 ±  510018,314   B/op   0,95x (p = 0,000*)
>> testUnsharedTable      10       60,474 ±       1,912        59,068 ±       1,038  ms/op   1,02x (p = 0,008*)
>>   :gc.alloc.rate.norm     66970079,820 ± 1402704,512  67285851,746 ±  883540,307   B/op   1,00x (p = 0,377 )
>>   * = significant
>
> src/jdk.compiler/share/classes/com/sun/tools/javac/util/StringNameTable.java line 65:
> 
>> 63:     @Override
>> 64:     public Name fromString(String string) {
>> 65:         Name name = this.nameMap.get(string);
> 
> stylistic - do we need the `this.` qualifiers?

No, I just went along with pre-existing style here. If there's a preference to avoid redundant `this.` I can remove it.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/21631#discussion_r1810406409


More information about the compiler-dev mailing list