Hello,

I'd like to request a review for:

JBS: https://bugs.openjdk.java.net/browse/JDK-8243114

Webrev: http://cr.openjdk.java.net/~stooke/webrevs/jdk-8243114-jdk/00/00/

This change implements the given intrinsics on Windows.

The Windows toolchain has no 128 bit integer types, and no inline asm (on x64 and Arm).  In addition, 'long' is 4 bytes, not 8, as it is with gcc.  This patch had to change some of the linux implementation to account for these limitations.

My gratitude for Andrew Haley for doing the heavy lifting at the core of this patch.

The patch, if accepted, will be offered to 11u as a potential backport.  The changes apply cleanly modulo some line number changes.

As for the speedup, this test case:

BigInteger base = BigInteger.ONE.shiftLeft(1024);
long count = LongStream.rangeClosed(2, 100_000)
    .mapToObj(n -> BigInteger.valueOf(n).add(base))
    .filter(i -> i.isProbablePrime(50))
    .count();

goes from 1 minute 20 seconds down to about 35 seconds om my VM, over multiple runs.  As is the case on other platforms where the intrinsics are supported, they will be enabled by default on Windows.

Thank you for your time,

-Simon Tooke


Principle Software Engineer,

Red Hat Canada



Reply via email to