On Nov 30, 2012, at 10:48 AM, Krystal Mo <krystal...@oracle.com> wrote:

> Hi all,
> 
> Could I get a couple of review for this small change, please?
> And could someone from the JDK side sponsor this change?
> 
> Bug: https://jbs.oracle.com/bugs/browse/JDK-8004066
> Webrev: http://cr.openjdk.java.net/~kmo/8004066/webrev.00/

Looks good to me.  -- Chris

> 
> The DivModTest introduced in JDK-6282196 [1] checks the contents of the 
> exception message, but that message isn't specified in JavaDoc and thus may 
> vary between VM implementations (or even in the same VM).
> 
> The issue has affected HotSpot Server VM in nightlies, and the Shark VM. As 
> OpenJDK library code may receive broader adoption in the future, this issue 
> may affect other VM implementations in the future as well.
> 
> (Details:
> The HotSpot Server Compiler may recompile hot throw sites to throw a 
> preallocated exception object, with null exception message, leading to a NPE 
> in the test;
> The bytecode interpreter in Zero/Shark VM throws the ArithmeticException with 
> "/ by long zero" for ldiv, which is different from normal HotSpot behavior 
> (which is expected by the test) where the exception message is "/ by zero".)
> 
> This change relaxes the test so that it's more lenient and less sensitive to 
> the error message produced by the VM.
> I don't think there's a good/reliable way of verifying whether an 
> ArithmeticException came from "division by zero", checking the type should be 
> enough for now.
> 
> Tested with the failing nightly test case and jprt.
> 
> $ java -Xcomp -showversion -XX:DefaultMaxRAMFraction=8 -XX:-TieredCompilation 
> -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions 
> -XX:+IgnoreUnrecognizedVMOptions -XX:+AggressiveOpts 
> -XX:+IgnoreUnrecognizedVMOptions -XX:-UseCompressedOops DivModTests
> java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b65)
> Java HotSpot(TM) 64-Bit Server VM (build 25.0-b11-internal-fastdebug, 
> compiled mode)
> 
> Exception in thread "main" java.lang.NullPointerException
>    at DivModTests.resultEquals(DivModTests.java:390)
>    at DivModTests.testIntFloorMod(DivModTests.java:126)
>    at DivModTests.testIntFloorDivMod(DivModTests.java:103)
>    at DivModTests.testIntFloorDivMod(DivModTests.java:68)
>    at DivModTests.main(DivModTests.java:45)
> 
> 
> Description from the bug report:
> ~/jdk/test/java/lang/Math$ java -Xint -showversion DivModTests
> java version "1.8.0-ea"
> Java(TM) SE Runtime Environment (build 1.8.0-ea-b65)
> OpenJDK 64-Bit Shark VM (build 25.0-b11-internal, interpreted mode)
> 
> FAIL: long Math.floorDiv(4, 0) = java.lang.ArithmeticException: / by long 
> zero; expected java.lang.ArithmeticException: / by zero
> FAIL: long StrictMath.floorDiv(4, 0) = java.lang.ArithmeticException: / by 
> long zero; expected java.lang.ArithmeticException: / by zero
> FAIL: long Math.floorMod(4, 0) = java.lang.ArithmeticException: / by long 
> zero; expected java.lang.ArithmeticException: / by zero
> FAIL: long StrictMath.floorMod(4, 0) = java.lang.ArithmeticException: / by 
> long zero; expected java.lang.ArithmeticException: / by zero
> Exception in thread "main" java.lang.RuntimeException: 4 errors found in 
> DivMod methods.
> at DivModTests.main(DivModTests.java:49)
> 
> Regards,
> Kris
> 
> [1]: https://jbs.oracle.com/bugs/browse/JDK-6282196

Reply via email to