This patch rewrites some BigInteger and curve point operations used in EC calculations: - coefficient * 2^power is equivalent to coefficient << power - number mod 2^n is equivalent to number & (2^n-1) - pair of IntegerModuloP operations: t2 = t1+t1 t1 = t1+t2 is equivalent to t1=t1*3, which is now implemented more efficiently.
Benchmarked the code using not-yet-merged benchmark from #10544. Results on x64 before: Benchmark (messageLength) Mode Cnt Score Error Units Signatures.sign 64 thrpt 15 1578.907 ± 1.522 ops/s After: Benchmark (messageLength) Mode Cnt Score Error Units Signatures.sign 64 thrpt 15 1679.495 ± 3.883 ops/s Greatest part of the improvement is related to ECOperations changes; BigInteger modifications provide only marginal gains (1584 ops/s without ECOperations changes). Tier1-3 tests continue to pass. ------------- Commit messages: - Remove commented out code - Simplify multiplication - Simplify mod - Simplify math - Remove biginteger modulo operation Changes: https://git.openjdk.org/jdk/pull/10614/files Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10614&range=00 Issue: https://bugs.openjdk.org/browse/JDK-8294997 Stats: 50 lines in 6 files changed: 2 ins; 23 del; 25 mod Patch: https://git.openjdk.org/jdk/pull/10614.diff Fetch: git fetch https://git.openjdk.org/jdk pull/10614/head:pull/10614 PR: https://git.openjdk.org/jdk/pull/10614