-
Bug
-
Resolution: Duplicate
-
P3
-
None
-
1.1
-
sparc
-
solaris_2.5
Name: szC45993 Date: 03/25/97
The following JCK tests fails on JDK1.1.1E for WinNT/Win95:
vm/instr/fstore_w/fstore_w001/fstore_w00101/fstore_w00101.html
vm/instr/fstore_w/fstore_w005/fstore_w00501/fstore_w00501.html
vm/instr/istore_w/istore_w001/istore_w00101/istore_w00101.html
vm/instr/istore_w/istore_w005/istore_w00501/istore_w00501.html
Note that tests work successfully on JDK1.0.2 and JDK1.1.
Two tests below shows that wide fstore can produce wrong results
or even crach VM.
The first test:
--------------------- fstore_w00101.jasm
package javasoft/sqe/tests/vm/fstore_w/fstore_w001/fstore_w00101;
public class fstore_w00101
extends java/lang/Object
{
// Compiled from fstore_w.java
// Compiler version 3.45;
public static Method main:"([Ljava/lang/String;)V"
stack 2 locals 1
{
aload_0;
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
invokestatic Method run:"([Ljava/lang/String;Ljava/io/PrintStream;)I";
bipush 95/*STATUS_TEMP*/;
iadd;
invokestatic Method java/lang/System.exit:"(I)V";
return;
}
public static Method run:"([Ljava/lang/String;Ljava/io/PrintStream;)I"
stack 20 locals 5
{
//================================================
ldc float 5;
dup;
fstore_w 4; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<
fstore 3;
//================================================
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
new class java/lang/StringBuffer;
dup;
invokespecial Method java/lang/StringBuffer.<init>:"()V";
//================================================
fload 3;
//================================================
invokevirtual Method java/lang/StringBuffer.append:"(F)Ljava/lang/StringBuffer;";
ldc String " - instead of 5.0";
invokevirtual Method java/lang/StringBuffer.append:"(Ljava/lang/String;)Ljava/lang/StringBuffer;";
invokevirtual Method java/lang/StringBuffer.toString:"()Ljava/lang/String;";
invokevirtual Method java/io/PrintStream.println:"(Ljava/lang/String;)V";
iconst_2;
ireturn;
}
public Method <init>:"()V"
stack 1 locals 1
{
aload_0;
invokenonvirtual Method java/lang/Object.<init>:"()V";
return;
}
} // end Class fstore_w00101
---------------------
shows that fstore_w instr damages the value which is loaded on
the stack top after the fstore_w perform. See result:
> jdk1.1.1e/win32/bin/java -verify javasoft.sqe.tests.vm.fstore_w.fstore_w001.fstore_w00101.fstore_w00101
9.45225E-39 - instead of 5.0
And the second test:
--------------------- fstore_w00101.jasm
package javasoft/sqe/tests/vm/fstore_w/fstore_w001/fstore_w00101;
public class fstore_w00101
extends java/lang/Object
{
// Compiled from fstore_w.java
// Compiler version 3.45;
public static Method main:"([Ljava/lang/String;)V"
stack 2 locals 1
{
aload_0;
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
invokestatic Method run:"([Ljava/lang/String;Ljava/io/PrintStream;)I";
bipush 95/*STATUS_TEMP*/;
iadd;
invokestatic Method java/lang/System.exit:"(I)V";
return;
}
public static Method run:"([Ljava/lang/String;Ljava/io/PrintStream;)I"
stack 20 locals 5
{
getstatic Field java/lang/System.out:"Ljava/io/PrintStream;";
new class java/lang/StringBuffer;
dup;
invokespecial Method java/lang/StringBuffer.<init>:"()V";
//================================================
ldc float 5;
dup;
fstore_w 4; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<
//================================================
invokevirtual Method java/lang/StringBuffer.append:"(F)Ljava/lang/StringBuffer;";
ldc String " - instead of 5.0";
invokevirtual Method java/lang/StringBuffer.append:"(Ljava/lang/String;)Ljava/lang/StringBuffer;";
invokevirtual Method java/lang/StringBuffer.toString:"()Ljava/lang/String;";
invokevirtual Method java/io/PrintStream.println:"(Ljava/lang/String;)V";
iconst_2;
ireturn;
}
public Method <init>:"()V"
stack 1 locals 1
{
aload_0;
invokenonvirtual Method java/lang/Object.<init>:"()V";
return;
}
} // end Class fstore_w00101
---------------------
shows that in some cases fstore_w instr crashes the jvm. See result:
> jdk1.1.1e/win32/bin/java -verify javasoft.sqe.tests.vm.fstore_w.fstore_w001.fstore_w00101.fstore_w00101
0xfffb1793 Segmentation violation
======================================================================