[foreign-jextract] RFR: MemorySegmentPool + Allocator [v8]

Radoslaw Smogura github.com+7535718+rsmogura at openjdk.java.net
Thu Apr 22 21:15:35 UTC 2021


On Thu, 22 Apr 2021 20:29:56 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

>> Radoslaw Smogura has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Tests better distribute sizes for pseudo random allocation - now much larger buffers gets allocated and used.
>>   
>>   I'm bit puzzled here, as it looks like, that allocatioin is very fast, only
>>   reading is extreme slow.
>>   
>>   For comparision when processing single allocation:
>>   Update only first byte: direct pool access - 33ns, malloc / free: 59ns
>>   Update very 1024th byte: 12980ns, vs malloc: 8400ns
>>   
>>   I think simillar results has been spot during test with StringLen.
>
> src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/MemorySegmentPool.java line 199:
> 
>> 197:     });
>> 198: 
>> 199:     return segmentEntry.memoryAddress.asSegment(1L << bitBound, resourceScope);
> 
> I wouldn't be surprised if this was the issue - the segment is created with a size that is determined by a long shift. If this segment gets scalarized, I wonder if the VM is able to see that the segment size is actually an int and not a long. Worth a shot.

I checked it, and I get same results. I'll shortly send an updated version

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

PR: https://git.openjdk.java.net/panama-foreign/pull/509


More information about the panama-dev mailing list