verifier problem

Per Bothner
Sat Jan 26 11:27:00 GMT 2002

The attached problem, compiled by javac, causes a VerifyError when run
by gij.  The problem appears a rather basic problem in how subroutines
are handled.

The comments at the bottom of the attachment is my notes from debugging
a more complex program, so aren't directly relevant to this test case.

I think (without having analyzed it too carefully) that trying to test
or set the subroutine field of a 'state' in merge is wrong.  The
compile-time verifier has a corresponding 'merge_type_state" function,
and it does not set or test the sub-routine state.  Instead, that is
done when processing the 'jsr' opcode  Also, push pending block checks
for a transfer out of a subroutine.

I relatively recently had to implement a subroutine_nesting procedure
to check that we're finished with a subroutine.
	--Per Bothner
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
URL: <>

More information about the Java mailing list