Name: id146280 Date: 07/27/2004
JVM Specification states:
1. Chapter 5.4.1 Verification
"The representation of a class or interface is verified (§4.9)
to ensure that its binary representation is structurally valid
(passes 2 and 3 of §4.9.1). Verification may cause additional
classes and interfaces to be loaded (§5.3) but need not cause
them to be prepared or verified."
Verification must detect the following error:
* If the representation of the class or interface does not
satisfy the static or structural constraints listed in
Section 4.8, "Constraints on Java Virtual Machine Code,"
verification throws a VerifyError."
2. Chapter 4.8.2 Structural Constraints
"If getfield or putfield is used to access a protected field
of a superclass, then the type of the class instance being
accessed must be the same as or a subclass of the current
class. If invokevirtual or invokespecial is used to access a
protected method of a superclass, then the type of the class
instance being accessed must be the same as or a subclass of
the current class."
3. Chapter 6 The Java Virtual Machine Instruction Set
(invokespecial)
"The named method is resolved (§5.4.3.3). Finally, if the
resolved method is protected (§4.6), and it is either a member
of the current class or a member of a superclass of the
current class, then the class of objectref must be either the
current class or a subclass of the current class."
But JDK 1.5.0-beta3-b59 passes (fails to throw VerifyError) incorrect
JCK 1.5 test vm/instr/invokespecial/invokespecial008/invokespecial00801m1/
invokespecial00801m1.html. invokespecial00801m1 tries to invoke protected
constructor of its superclass passing reference to superclass instance as
objectref to invokespecial.
Please see more detailed info in 5078932.
======================================================================
JVM Specification states:
1. Chapter 5.4.1 Verification
"The representation of a class or interface is verified (§4.9)
to ensure that its binary representation is structurally valid
(passes 2 and 3 of §4.9.1). Verification may cause additional
classes and interfaces to be loaded (§5.3) but need not cause
them to be prepared or verified."
Verification must detect the following error:
* If the representation of the class or interface does not
satisfy the static or structural constraints listed in
Section 4.8, "Constraints on Java Virtual Machine Code,"
verification throws a VerifyError."
2. Chapter 4.8.2 Structural Constraints
"If getfield or putfield is used to access a protected field
of a superclass, then the type of the class instance being
accessed must be the same as or a subclass of the current
class. If invokevirtual or invokespecial is used to access a
protected method of a superclass, then the type of the class
instance being accessed must be the same as or a subclass of
the current class."
3. Chapter 6 The Java Virtual Machine Instruction Set
(invokespecial)
"The named method is resolved (§5.4.3.3). Finally, if the
resolved method is protected (§4.6), and it is either a member
of the current class or a member of a superclass of the
current class, then the class of objectref must be either the
current class or a subclass of the current class."
But JDK 1.5.0-beta3-b59 passes (fails to throw VerifyError) incorrect
JCK 1.5 test vm/instr/invokespecial/invokespecial008/invokespecial00801m1/
invokespecial00801m1.html. invokespecial00801m1 tries to invoke protected
constructor of its superclass passing reference to superclass instance as
objectref to invokespecial.
Please see more detailed info in 5078932.
======================================================================