RFR: 8262096: Vector API fails to work due to VectorShape initialization exception

Paul Sandoz psandoz at openjdk.java.net
Thu Feb 25 17:25:40 UTC 2021


On Thu, 25 Feb 2021 09:31:01 GMT, Jie Fu <jiefu at openjdk.org> wrote:

> Hi all,
> 
> Vector API fails to work when:
>  - case 1: MaxVectorSize is set to <=8, or
>  - case 2: C2 is disabled
> 
> The reason is that {max/preferred} VectorShape initialization fails in both cases.
> And the root cause is that VectorSupport_GetMaxLaneCount [1] returns unreasonable values (0 for case 1 and -1 for case 2).
> 
> Vector API should not depend on C2 to run.
> It should work even there is no JIT compiler since it's a Java-level api.
> So let's fix it.
> 
> Testing:
>   - jdk/incubator/vector with -XX:MaxVectorSize=default/8 on Linux/x64
> 
> Thanks.
> Best regards,
> Jie
> 
> [1] https://github.com/openjdk/jdk/blob/master/src/hotspot/share/prims/vectorSupport.cpp#L364

src/hotspot/share/prims/vectorSupport.cpp line 368:

> 366:   if (java_lang_Class::is_primitive(mirror)) {
> 367:     BasicType bt = java_lang_Class::primitive_type(mirror);
> 368:     int min_lane_count = 64 / type2aelembytes(bt);

I am uncertain of the units here. Is the numerator in bits and the denominator in bytes?

-------------

PR: https://git.openjdk.java.net/jdk/pull/2722


More information about the core-libs-dev mailing list