Re: RFR: 8248862: Implement Enhanced Pseudo-Random Number Generators [v17]

2021-02-13 Thread Andrey Turbanov
On Thu, 11 Feb 2021 16:02:03 GMT, Jim Laskey  wrote:

>> This PR is to introduce a new random number API for the JDK. The primary API 
>> is found in RandomGenerator and RandomGeneratorFactory. Further description 
>> can be found in the JEP https://openjdk.java.net/jeps/356 .
>> 
>> javadoc can be found at 
>> http://cr.openjdk.java.net/~jlaskey/prng/doc/api/java.base/java/util/random/package-summary.html
>> 
>> old PR:  https://github.com/openjdk/jdk/pull/1273
>
> Jim Laskey has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Added table of available algorithms.

src/java.base/share/classes/jdk/internal/util/random/RandomSupport.java line 
149:

> 147:  */
> 148: public static void checkJumpDistance(double distance) {
> 149: if (!(distance > 0.0 && distance < Float.POSITIVE_INFINITY

I wounder if this usage of `Float.POSITIVE_INFINITY` intentional here? Looks a 
bit suspicious for comparison with `double` argument

src/java.base/share/classes/jdk/internal/util/random/RandomSupport.java line 
1548:

> 1546:  * @return a stream of (pseudo)randomly chosen {@code int} 
> values
> 1547:  */
> 1548: 

Is `@Override` intentionally omitted?

src/java.base/share/classes/jdk/internal/util/random/RandomSupport.java line 
1943:

> 1941: 
> 1942: // IllegalArgumentException messages
> 1943: static final String BadLogDistance  = "logDistance must be 
> non-negative";

seems unused

test/jdk/java/util/Random/RandomTestBsi1999.java line 227:

> 225: static int checkRunStats(int[] stats) {
> 226:int runFailure = 0;
> 227:runFailure |= ((2267 <= stats[1]) || (stats[1] <= 2733)) ? 0 
> : 1;

1. confusing formatting.
2. This condition is always `true`. Looks like `&&` should be used instead of 
`||`

-

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


Re: RFR: 8248862: Implement Enhanced Pseudo-Random Number Generators [v17]

2021-02-13 Thread Andrey Turbanov
On Thu, 11 Feb 2021 16:02:03 GMT, Jim Laskey  wrote:

>> This PR is to introduce a new random number API for the JDK. The primary API 
>> is found in RandomGenerator and RandomGeneratorFactory. Further description 
>> can be found in the JEP https://openjdk.java.net/jeps/356 .
>> 
>> javadoc can be found at 
>> http://cr.openjdk.java.net/~jlaskey/prng/doc/api/java.base/java/util/random/package-summary.html
>> 
>> old PR:  https://github.com/openjdk/jdk/pull/1273
>
> Jim Laskey has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Added table of available algorithms.

src/java.base/share/classes/jdk/internal/util/random/RandomSupport.java line 
115:

> 113: static final String BAD_BOUND = "bound must be positive";
> 114: static final String BAD_FLOATING_BOUND = "bound must be finite and 
> positive";
> 115: static final String BAD_RANGE = "bound must be greater than origin";

Unused fields in Random class now can be cleaned up: 
`java.util.Random#BadRange`, `java.util.Random#BadSize`

-

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


Re: RFR: 8248862: Implement Enhanced Pseudo-Random Number Generators [v17]

2021-02-13 Thread Andrey Turbanov
On Thu, 11 Feb 2021 16:02:03 GMT, Jim Laskey  wrote:

>> This PR is to introduce a new random number API for the JDK. The primary API 
>> is found in RandomGenerator and RandomGeneratorFactory. Further description 
>> can be found in the JEP https://openjdk.java.net/jeps/356 .
>> 
>> javadoc can be found at 
>> http://cr.openjdk.java.net/~jlaskey/prng/doc/api/java.base/java/util/random/package-summary.html
>> 
>> old PR:  https://github.com/openjdk/jdk/pull/1273
>
> Jim Laskey has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Added table of available algorithms.

src/java.base/share/classes/java/util/Random.java line 29:

> 27: 
> 28: import java.io.*;
> 29: import java.math.BigInteger;

This import is not actually used

-

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


Thread safety of SunFontManager.platformFontMap

2021-02-13 Thread Andrey Turbanov
Hello.
I recently found suspicious field (with SpotBugs help) in class SunFontManager:

static HashMap platformFontMap;

This HashMap is accessed (read and write) in a method
sun.font.SunFontManager#findFontFromPlatformMap. As I see there is no
synchronization when this HashMap is accessed.
This method can be called from client code with this simple stack trace:

  at 
sun.font.SunFontManager.findFontFromPlatformMap(SunFontManager.java:1508)
  at sun.font.SunFontManager.findFont2D(SunFontManager.java:2069)
  at java.awt.Font.getFont2D(Font.java:500)
  at java.awt.Font.getPSName(Font.java:1416)

I wonder if this unsynchronized access is expected. Looks like it can
break things when accessed from multiple threads simultaneously.
Do I miss something? Is it done this way, because Font objects are
supposed to be accessed from a single thread only?

Andrey Turbanov


Re: RFR: 8080272 Refactor I/O stream copying to use InputStream.transferTo/readAllBytes and Files.copy [v8]

2021-02-13 Thread Andrey Turbanov
On Sat, 13 Feb 2021 10:20:29 GMT, Andrey Turbanov 
 wrote:

>> ## tools/jpackage/share/jdk/jpackage/tests/UnicodeArgsTest.java
>> 
>> make test 
>> TEST="jtreg:tools/jpackage/share/jdk/jpackage/tests/UnicodeArgsTest.java"
>> 
>> STDOUT:
>> [00:56:54.598] Parsing [--jpt-run=jdk.jpackage.tests.UnicodeArgsTest]...
>> [00:56:54.650] jdk.jpackage.tests.UnicodeArgsTest.test8246042 -> [public 
>> void jdk.jpackage.tests.UnicodeArgsTest.test8246042(boolean)]
>> [00:56:54.682] Create: UnicodeArgsTest.test8246042(true)
>> [00:56:54.684] Create: UnicodeArgsTest.test8246042(false)
>> [00:56:54.688] [ RUN  ] UnicodeArgsTest.test8246042(false)
>> [00:56:54.693] TRACE: Test string code points: [0x00e9]
>> [00:56:54.875] TRACE: exec: Execute tool provider [javac -d 
>> .\test8246042.9782d070\jar-workdir 
>> F:\Projects\official_openjdk\test\jdk\tools\jpackage\apps\image\Hello.java](4)...
>> [00:56:55.996] TRACE: exec: Done. Exit code: 0
>> [00:56:55.997] TRACE: assertEquals(0): Check command tool provider 
>> [javac -d .\test8246042.9782d070\jar-workdir 
>> F:\Projects\official_openjdk\test\jdk\tools\jpackage\apps\image\Hello.java](4)
>>  exited with 0 code
>> [00:56:56.014] TRACE: exec: Execute tool provider [jar -c -f 
>> .\test8246042.9782d070\input\hello.jar -C .\test8246042.9782d070\jar-workdir 
>> .](7)...
>> [00:56:56.188] TRACE: exec: Done. Exit code: 0
>> [00:56:56.188] TRACE: assertEquals(0): Check command tool provider [jar 
>> -c -f .\test8246042.9782d070\input\hello.jar -C 
>> .\test8246042.9782d070\jar-workdir .](7) exited with 0 code
>> [00:56:56.196] TRACE: exec: Execute tool provider [jpackage --input 
>> .\test8246042.9782d070\input --dest .\test8246042.9782d070\output --name 
>> 8246042UnicodeArgsTest --type app-image --main-jar hello.jar --main-class 
>> Hello --win-console --arguments ? --verbose](17)...
>> [00:56:56.225] Creating app package: 8246042UnicodeArgsTest in 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_tools_jpackage_share_jdk_jpackage_tests_UnicodeArgsTest_java\scratch\0.\test8246042.9782d070\output
>> [00:57:07.680] Command:
>> jlink --output 
>> .\test8246042.9782d070\output\8246042UnicodeArgsTest\runtime --module-path 
>> f:\\projects\\official_openjdk\\build\\windows-x86_64-server-release\\images\\jdk\\jmods
>>  --add-modules 
>> jdk.management.jfr,java.rmi,jdk.jdi,jdk.charsets,java.xml,jdk.xml.dom,java.datatransfer,jdk.jstatd,jdk.httpserver,java.desktop,java.security.sasl,jdk.zipfs,java.base,jdk.crypto.ec,jdk.javadoc,jdk.management.agent,jdk.jshell,jdk.editpad,java.sql.rowset,jdk.jsobject,jdk.sctp,java.smartcardio,jdk.jlink,jdk.unsupported,java.security.jgss,java.compiler,jdk.nio.mapmode,jdk.dynalink,jdk.unsupported.desktop,jdk.accessibility,jdk.security.jgss,java.sql,jdk.incubator.vector,java.xml.crypto,java.logging,java.transaction.xa,jdk.jfr,jdk.crypto.cryptoki,jdk.net,java.naming,jdk.internal.ed,java.prefs,java.net.http,jdk.compiler,jdk.naming.rmi,jdk.internal.opt,jdk.jconsole,jdk.attach,jdk.crypto.mscapi,jdk.internal.le,java.management,jdk.jdwp.agent,jdk.internal.jvmstat,jdk.incubator.foreign,java.instr
 
ument,jdk.management,jdk.security.auth,java.scripting,jdk.jdeps,jdk.jartool,java.management.rmi,jdk.jpackage,jdk.naming.dns,jdk.localedata
 --strip-native-commands --strip-debug --no-man-pages --no-header-files
>> [00:57:07.680] Output:
>> WARNING: Using incubator modules: jdk.incubator.vector, 
>> jdk.incubator.foreign
>> 
>> [00:57:07.681] Returned: 0
>> 
>> [00:57:07.685] Using default package resource java48.ico [icon] (add 
>> 8246042UnicodeArgsTest.ico to the resource-dir to customize).
>> [00:57:07.707] Warning: Windows Defender may prevent jpackage from 
>> functioning. If there is an issue, it can be addressed by either disabling 
>> realtime monitoring, or adding an exclusion for the directory 
>> "f:\projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_tools_jpackage_share_jdk_jpackage_tests_UnicodeArgsTest_java\tmp\jdk.jpackage16485063537873697224".
>> [00:57:07.712] Using default package resource WinLauncher.template 
>> [Template for creating executable properties file] (add 
>> 8246042UnicodeArgsTest.properties to the resource-dir to customize).
>> [00:57:07.746] Succeeded in building Windows Application Image package
>> [00:57:07.748] TRACE: exec: Done. Exit code: 0
>> [00:57:07.748] TRACE: assertEquals(0): Check command tool provider 
>> [jpackage --input .\test8246042.9782d070\input --dest 
>> .\test8246042.9782d070\output --name 8246042UnicodeArgsTest --type app-image 
>> --main-jar hello.jar --main-class Hello --win-console --arguments ? 
>> --verbose](17) exited with 0 code
>> [00:57:07.766] TRACE: assertStringListEquals(): Check there is only one 
>> file with [.jpackage.xml] name in the package
>> [00:57:07.768] TRACE: assertStringListEquals(1

Re: RFR: 8080272 Refactor I/O stream copying to use InputStream.transferTo/readAllBytes and Files.copy [v8]

2021-02-13 Thread Andrey Turbanov
On Fri, 12 Feb 2021 22:12:29 GMT, Andrey Turbanov 
 wrote:

>> ## java/security/AccessController/DoPrivAccompliceTest.java
>> 
>> make test 
>> TEST="jtreg:java/security/AccessController/DoPrivAccompliceTest.java"
>> 
>> STDOUT:
>> Adding DoPrivAccomplice.class to 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivAccomplice.jar
>> 
>> Created jar file 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivAccomplice.jar
>> Adding DoPrivTest.class to 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivTest.jar
>> 
>> Created jar file 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivTest.jar
>> Created policy for 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivAccomplice.jar
>> Command line: 
>> [f:\projects\official_openjdk\build\windows-x86_64-server-release\images\jdk\bin\java.exe
>>  -cp 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\classes\0\java\security\AccessController\DoPrivAccompliceTest.d;F:\Projects\official_openjdk\test\jdk\java\security\AccessController;F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\classes\0\test\lib;F:\Projects\official_openjdk\test\lib;C:\Programs\jtreg-4.2.0-tip\jtreg\lib\javatest.jar;C:\Programs\jtreg-4.2.0-tip\jtreg\lib\jtreg.jar
>>  -Xmx512m -XX:MaxRAMPercentage=6 
>> -Djava.io.tmpdir=f:\projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\tmp
>>  -ea -esa -Djava.security.manager 
>> -Djava.security.policy=F:\Projects\official_openjdk\build\
 
windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\java.policy
 -classpath 
F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivAccomplice.jar;F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivTest.jar
 DoPrivTest ]
>> [2021-02-12T21:42:29.297091800Z] Gathering output for process 12712
>> [2021-02-12T21:42:29.544092Z] Waiting for completion for process 12712
>> [2021-02-12T21:42:29.544092Z] Waiting for completion finished for 
>> process 12712
>> Output and diagnostic info for process 12712 was saved into 
>> 'pid-12712-output.log'
>> [2021-02-12T21:42:29.547092500Z] Waiting for completion for process 12712
>> [2021-02-12T21:42:29.547092500Z] Waiting for completion finished for 
>> process 12712
>> Created policy for 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivTest.jar
>> Command line: 
>> [f:\projects\official_openjdk\build\windows-x86_64-server-release\images\jdk\bin\java.exe
>>  -cp 
>> F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\classes\0\java\security\AccessController\DoPrivAccompliceTest.d;F:\Projects\official_openjdk\test\jdk\java\security\AccessController;F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\classes\0\test\lib;F:\Projects\official_openjdk\test\lib;C:\Programs\jtreg-4.2.0-tip\jtreg\lib\javatest.jar;C:\Programs\jtreg-4.2.0-tip\jtreg\lib\jtreg.jar
>>  -Xmx512m -XX:MaxRAMPercentage=6 
>> -Djava.io.tmpdir=f:\projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\tmp
>>  -ea -esa -Djava.security.manager 
>> -Djava.security.policy=F:\Projects\official_openjdk\build\
 
windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\java.policy
 -classpath 
F:\Projects\official_openjdk\build\windows-x86_64-server-release\test-support\jtreg_test_jdk_java_security_AccessController_DoPrivAccompliceTest_java\scratch\0.\DoPrivAccomplice.jar;F:\Projects\official_openjdk\build\windows-x86_64-serve