verifier problem

Per Bothner per@bothner.com
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
per@bothner.com   http://www.bothner.com/per/
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: foo.java
URL: <http://gcc.gnu.org/pipermail/java/attachments/20020126/541a212f/attachment.ksh>


More information about the Java mailing list