-
Bug
-
Resolution: Fixed
-
P3
-
1.2.0
-
1.2fcs
-
sparc
-
solaris_2.5.1, solaris_2.6
-
Verified
Name: szC45993 Date: 05/08/98
In the following test, class invokeinterface02004a implements
an interface method as private.
When resolving a reference to such class with "new" instruction
IllegalAccessError is thrown, even if no other access
to this class is intended, as if such class was illegal itself.
No place in the spec prescribes that such class as invokeinterface02004a
is illegal, so resolving a reference to such class must pass
without exceptions.
However, for example, jvm must detect illegal (nonpublic) method
implementation as *RUNTIME EXCEPTION* IllegalAccessError under the
execution of the invokeinterface instruction for such implementation.
SOURCE:
--------------------- invokeinterface02501.jasm
// Ident: %Z%%M% %I% %E%
// Copyright %G% Sun Microsystems, Inc. All Rights Reserved
package javasoft/sqe/tests/vm/invokeinterface/invokeinterface020/invokeinterface02004;
public interface invokeinterface02004i {
public abstract Method f1:"(IF)I";
} // end invokeinterface02004i
public class invokeinterface02004a implements invokeinterface02004i {
//#############################################################################
private /*public*/ Method f1:"(IF)I"
//#############################################################################
stack 1 locals 3
{
iconst_2;
ireturn;
}
public Method <init>:"()V"
stack 1 locals 1
{
aload_0;
invokenonvirtual Method java/lang/Object.<init>:"()V";
return;
}
public Method p:"()V"
stack 3 locals 1
{
new class invokeinterface02004a;
dup;
invokenonvirtual Method invokeinterface02004a.<init>:"()V";
iconst_1;
fconst_1;
//#############################################################################
// invokeinterface InterfaceMethod invokeinterface02004i.f1:"(IF)I", 3;
//#############################################################################
return;
}
} // end Class invokeinterface02004a
public class invokeinterface02004 {
public static Method run:"([Ljava/lang/String;Ljava/io/PrintStream;)I"
stack 6 locals 4
{
try t1;
new class invokeinterface02004a;
dup;
invokenonvirtual Method invokeinterface02004a.<init>:"()V";
invokevirtual Method invokeinterface02004a.p:"()V";
iconst_2; // no exception - test failed
ireturn;
endtry t1;
catch t1 java/lang/IllegalAccessError;
iconst_0; // passed
ireturn;
}
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;
}
} // end Class invokeinterface02004
======================================================================
Hook 5(hook5): test
======================================================================
- duplicates
-
JDK-4170001 JVM segmentation fault in Java3D FourByFour test cases
- Closed
-
JDK-4168130 (jit) AbstractMethodError instead of IllegalAccessError
- Closed