|
Duplicate :
|
|
|
Relates :
|
|
|
Relates :
|
|
|
Relates :
|
Name: ks84122 Date: 08/31/2004
The hotspot compiler produces wrong results for a test program with a
simple loop, in interpreted mode the "correct" result emitted as
0.11111111111111, when the method is compiled, the emitted result
becomes 1. The problem is reproducible with C2 on Solaris as well
as Linux X86
Solaris:
java version "1.4.2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2-b28)
Java HotSpot(TM) Server VM (build 1.4.2-b28, mixed mode)
Linux:
java version "1.4.2_06-ea"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-ea-b01)
Java HotSpot(TM) Client VM (build 1.4.2_06-ea-b01, mixed mode)
test case (reproducible with the latest 1.5 build ):
cd /java/jle_build/sko/hp/loop_bug
export CLASSPATH=./:./ArciMath.jar
java CompilerBug
(Incident Review ID: 301400)
======================================================================
import be.arci.math.BigDecimal;
import be.arci.math.MathContext;
public class CompilerBug
{
public static void main(String[] argv)
{
junk();
}
public static void junk()
{
BigDecimal one = BigDecimal.ONE;
BigDecimal nine = new BigDecimal(9);
MathContext context = new MathContext(16, MathContext.SCIENTIFIC);
for (int i = 0; i < 10000000; ++i)
System.out.println(one.divide(nine, context));
}
}
|