Adding an intrinsic to the interpreter
Aleksey Shipilev
aleksey.shipilev at oracle.com
Mon Sep 14 11:55:26 UTC 2015
Hi Paul,
Not saying we should actually care about the interpreter performance.
I would speculate the real trouble is calling multiple native getLong-s
in getLongUnaligned? If so, would re-implementing these Unsafe methods
in unsafe.cpp help performance? That will do a single native call into C
function that you want, and it seems to match your definition of
"interpreter intrinsic" below.
-Aleksey
On 09/14/2015 01:15 PM, Paul Sandoz wrote:
> Hi,
>
> Any pointers/guidance for adding an intrinsic to the interpreter
> would be much appreciated. Initially a quick hack might be sufficient
> for verification purposes.
>
> The context is adding array comparison and mismatch methods:
>
> http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8033148-Arrays-lexico-compare/webrev/
>
> This approach is designed such that one method [1],
> vectorizedMismatch, can be made intrinsic in C2 (e.g. to leverage AVX
> instructions on x86) and then other functionality is built on top of
> that. That method utilises Unsafe.getLongUnaligned to view array
> components as long values.
>
> When run in the interpreter a modified Array.equals can be 3x to 20x
> slower than the unmodified version (depending on the array component
> type). Some slow down is acceptable but perhaps not quite that much.
> I suspect that is due to the overhead of making a native call to
> Unsafe.getLong which is wrapped in Unsafe.getLongUnaligned.
>
> How difficult would it be to add an interpreter intrinsic supporting
> getLong/Unaligned? perhaps it does not need to be asm-based if one
> can defer to a C++ function e.g. somehow wire up to bytes.cpp
> functionality for the address of base + offset?
>
> Thanks, Paul.
>
> [1]
> http://cr.openjdk.java.net/~psandoz/jdk9/JDK-8033148-Arrays-lexico-compare/webrev/src/java.base/share/classes/java/util/ArraysSupport.java.html
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20150914/6abe29db/signature.asc>
More information about the hotspot-compiler-dev
mailing list