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