[kaffe] Re: flestmail - daily - 365/365 passed (100.0%) (0 errors, 0 failures)

Patrick Tullmann tullmann@cs.utah.edu
Tue, 17 Sep 2002 11:44:04 -0600


Tim wrote:
> [infinite exception dispatch loop]
>
> I'm pretty sure this is kjc's fault, try compiling the test with jikes 
> and comparing the byte code.  From what little i did with this it 
> looked like kjc might be inadvertently generating the infinite loop in 
> the exception handler.

I was reading the VM spec last night, and it says that the end of an
exception range is exclusive, vs. the start being inclusive.  Since
that's exactly what's happening (the exception is being re-tossed at
the very end of the coverage), I changed:
	if (pc < start_pc || pc > end_pc) {
	       continue;
	}
to:
	if (pc < start_pc || pc >= end_pc) {
	       continue;
	}
in the loop over the available exception handlers in
findExceptionBlockInMethod.  This "fixed" the problem.  However, that
comparison hasn't been touched since December `98.  I have a hard time
believing the interpreter has never encountered this situation
before...  (Perhaps the end_pc's were fixed up elsewhere at some
point?)

Hmm.... compiling it with kcj 'Version 2.1B released 17. July 2002' or
jikes 'Version 1.13 3/1/2001' doesn't make any difference...  Also,
Sun's JDK1.4 can complete either compiled version of the test just
fine.

So, I think that's the fix.  I'm still wary because I wonder why it
ever worked... :)

-Pat

----- ----- ---- ---  ---  --   -    -      -         -               -
Pat Tullmann                                       tullmann@cs.utah.edu
                   A closed mouth gathers no foot.