-
Bug
-
Resolution: Not an Issue
-
P3
-
None
-
1.2.0
-
sparc
-
solaris_2.5
Name: szC45993 Date: 12/12/97
The Java Virtual Machine, chapter 5 Constant Pool Resolution,
introduction, says:
"Constant pool resolution is normally initiated by the execution of
a Java Virtual Machine instruction that references the constant pool."
The JCK test below uses invalid interface (Common00202i.jasm with
verification stage error: invalid field name) to determine the moment of the
interface resolution. This test shows that verification exception is not thrown
from the try block that contains instruction initiating interface resolution
(see ClassInterf01102.java for beginning):
novo7% setenv CLASSPATH /export/home/JAVA/workdir/classes:/export/home/JAVA/sqe_my/harness_release/classes
novo7% /export/ld14/java/dest/jdk1.2Z/solaris/bin/java -verify javasoft.sqe.tests.vm.constantpool.Common002.Common00202.Common00202
java.lang.ClassFormatError: javasoft/sqe/tests/vm/constantpool/Common002/Common00202/Common00202i (Illegal Field name "f^l^d")
novo7%
SOURCES:
--------------------- ClassInterf01102.java
//File: @(#)Common00202.java 1.1 97/12/11
//Copyright 12/11/97 Sun Microsystems, Inc. All Rights Reserved
package javasoft.sqe.tests.vm.constantpool.Common002.Common00202;
import java.io.PrintStream;
public class Common00202 {
public static int run(String argv[], PrintStream out) {
try {
((Common00202i) new Common00202n()).mtd();
out.println("test Common00202 failed to reject bad classfile Common00202i");
} catch (Throwable e) {
out.println("test Common00202 exception:"+e.toString()+" while loading bad classfile Common00202i");
return 0;
}
return 2;
}
public static void main(String args[]) {
System.exit(run(args, System.out) + 95/*STATUS_TEMP*/);
}
}
--------------------- Common00202i.jasm
//File: @(#)Common00202i.jasm 1.1 97/12/11
//Copyright 12/11/97 Sun Microsystems, Inc. All Rights Reserved
package javasoft/sqe/tests/vm/constantpool/Common002/Common00202;
abstract interface Common00202i
{
// Compiled from "Common00202i.java"
// Compiler version 3.45;
public static final Field "f^l^d":I = int 333;
public abstract Method mtd:"()V";
} // end Class Common00202i
--------------------- Common00202n.jasm
//File: @(#)Common00202n.jasm 1.1 97/12/11
//Copyright 12/11/97 Sun Microsystems, Inc. All Rights Reserved
package javasoft/sqe/tests/vm/constantpool/Common002/Common00202;
public super class Common00202n
implements Common00202i
{
// Compiled from "Common00202n.java"
// Compiler version 3.45;
public static Field field:"Ljavasoft/sqe/tests/vm/constantpool/Common002/Common00202/Common00202n;";
public Method "<init>":"()V"
stack 1 locals 1
{
aload_0;
invokespecial Method java/lang/Object."<init>":"()V";
return;
}
public Method mtd:"()V"
stack 2 locals 1
{
new class Common00202n;
dup;
invokespecial Method "<init>":"()V";
putstatic Field field:"Ljavasoft/sqe/tests/vm/constantpool/Common002/Common00202/Common00202n;";
return;
}
} // end Class Common00202n
---------------------
Hook 5(hook5): test
======================================================================