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