RFR: 8253525: Implement getInstanceSize/sizeOf intrinsics [v3]
Vladimir Kozlov
kvn at openjdk.java.net
Mon Oct 19 18:17:18 UTC 2020
On Mon, 19 Oct 2020 06:57:24 GMT, Aleksey Shipilev <shade at openjdk.org> wrote:
>> This is fork off the SizeOf JEP, JDK-8249196. There is already the entry point in JDK that can use the intrinsic like
>> this: `Instrumentation.getInstanceSize`. Therefore, we can implement the C1/C2 intrinsic now, hook it up to
>> `Instrumentation`, and let the tools use that fast path today. With this patch, JOL is able to be close to
>> `deepSizeOf` implementation from SizeOf JEP.
>> Example performance improvements for sizing up a custom linked list:
>>
>> Benchmark (size) Mode Cnt Score Error Units
>>
>> # Default
>> LinkedChainBench.linkedChain 1 avgt 5 705.835 ± 8.051 ns/op
>> LinkedChainBench.linkedChain 10 avgt 5 3148.874 ± 37.856 ns/op
>> LinkedChainBench.linkedChain 100 avgt 5 28693.256 ± 142.254 ns/op
>> LinkedChainBench.linkedChain 1000 avgt 5 290161.590 ± 4594.631 ns/op
>>
>> # Instrumentation attached, no intrinsics
>> LinkedChainBench.linkedChain 1 avgt 5 159.659 ± 19.238 ns/op
>> LinkedChainBench.linkedChain 10 avgt 5 717.659 ± 22.540 ns/op
>> LinkedChainBench.linkedChain 100 avgt 5 7739.394 ± 111.683 ns/op
>> LinkedChainBench.linkedChain 1000 avgt 5 80724.238 ± 2887.794 ns/op
>>
>> # Instrumentation attached, new intrinsics
>> LinkedChainBench.linkedChain 1 avgt 5 95.254 ± 0.808 ns/op
>> LinkedChainBench.linkedChain 10 avgt 5 261.564 ± 8.524 ns/op
>> LinkedChainBench.linkedChain 100 avgt 5 3367.192 ± 21.128 ns/op
>> LinkedChainBench.linkedChain 1000 avgt 5 34148.851 ± 373.080 ns/op
>
> Aleksey Shipilev has refreshed the contents of this pull request, and previous commits have been removed. The
> incremental views will show differences compared to the previous content of the PR.
Always run graalunit testing with new intrinsics.
You need to adjust Graal test:
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot.test/src/org/graalvm/compiler/hotspot/test/CheckGraalIntrinsics.java
-------------
Changes requested by kvn (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/650
More information about the serviceability-dev
mailing list