On Tue, 18 Nov 2025 12:26:41 GMT, Maurizio Cimadamore <[email protected]>
wrote:
>> Igor Rudenko has updated the pull request incrementally with one additional
>> commit since the last revision:
>>
>> improvements according to reviewer comments
>
> The fundamental issue here is that `checkIndex` takes a bi-function for the
> exception generation. This forces client to resort to _instance_ methods if
> they want to embed more of their state description into the generated
> message. And this requires allocation -- which fundamentally is against the
> performance goals of the check bound routines in AbstractMemorySegmentImpl.
>
> It would be better if Preconditions had more primitive, non-throwing variants
> which just returned true/false. Then we could easily implement whatever logic
> we wanted on top. Maybe we should look there first, and then come back to
> improve messages in the FFM API?
@mcimadamore
I measured some benchmarks
**master**:
Benchmark (asTypeCompiled)
(polluteProfile) Mode Cnt Score Error Units
LoopOverNonConstant.BB_get N/A
N/A avgt 30 0.893 ± 0.004 ns/op
LoopOverNonConstant.BB_loop N/A
N/A avgt 30 0.243 ± 0.002 ms/op
LoopOverNonConstant.segment_get N/A
N/A avgt 30 0.997 ± 0.006 ns/op
LoopOverNonConstant.segment_loop N/A
N/A avgt 30 0.236 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_instance N/A
N/A avgt 30 0.237 ± 0.007 ms/op
LoopOverNonConstant.segment_loop_instance_index N/A
N/A avgt 30 0.233 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_instance_unaligned N/A
N/A avgt 30 0.231 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_nested N/A
N/A avgt 30 0.232 ± 0.002 ms/op
LoopOverNonConstant.segment_loop_nested_unaligned N/A
N/A avgt 30 0.231 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_readonly N/A
N/A avgt 30 0.229 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_slice N/A
N/A avgt 30 0.230 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_unaligned N/A
N/A avgt 30 0.229 ± 0.001 ms/op
LoopOverNonConstant.unsafe_get N/A
N/A avgt 30 0.452 ± 0.007 ns/op
LoopOverNonConstant.unsafe_loop N/A
N/A avgt 30 0.230 ± 0.002 ms/op
**1095cf6**:
Benchmark (asTypeCompiled)
(polluteProfile) Mode Cnt Score Error Units
LoopOverNonConstant.BB_get N/A
N/A avgt 30 0.802 ± 0.007 ns/op
LoopOverNonConstant.BB_loop N/A
N/A avgt 30 0.223 ± 0.001 ms/op
LoopOverNonConstant.segment_get N/A
N/A avgt 30 0.932 ± 0.007 ns/op
LoopOverNonConstant.segment_loop N/A
N/A avgt 30 0.226 ± 0.002 ms/op
LoopOverNonConstant.segment_loop_instance N/A
N/A avgt 30 0.226 ± 0.002 ms/op
LoopOverNonConstant.segment_loop_instance_index N/A
N/A avgt 30 0.228 ± 0.004 ms/op
LoopOverNonConstant.segment_loop_instance_unaligned N/A
N/A avgt 30 0.226 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_nested N/A
N/A avgt 30 0.224 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_nested_unaligned N/A
N/A avgt 30 0.223 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_readonly N/A
N/A avgt 30 0.225 ± 0.001 ms/op
LoopOverNonConstant.segment_loop_slice N/A
N/A avgt 30 0.226 ± 0.002 ms/op
LoopOverNonConstant.segment_loop_unaligned N/A
N/A avgt 30 0.224 ± 0.001 ms/op
LoopOverNonConstant.unsafe_get N/A
N/A avgt 30 0.434 ± 0.007 ns/op
LoopOverNonConstant.unsafe_loop N/A
N/A avgt 30 0.223 ± 0.001 ms/op
<img width="1670" height="1322" alt="Screenshot 2025-11-18 at 17 03 32"
src="https://github.com/user-attachments/assets/9f117a08-0e1d-4858-960e-36b19142ae92"
/>
-------------
PR Comment: https://git.openjdk.org/jdk/pull/28124#issuecomment-3548049574