[kaffe] Verifier questions

Chris Gray chris.gray at kiffer.be
Thu Dec 21 01:11:10 PST 2006


Dear all,

I've been studying the Kaffe verifier and I'm coming across cases of "either I 
don't understand this or it's wrong". I'm posting these here in the hope that 
somebody who understands the verifier (Rob?) will read them ...

First, I see flags being tested in the 'status' field of a basic block which I 
only see being set in in the 'status' field of an instruction. Maybe 
somewhere flags are being copied from the first instruction of a bb to the bb 
itself, but if so I don't see it. Example: flag EXCEPTION_HANDLER is set for 
the instruction corresponding to handler_pc of an exception, but in 
verifyMethod3b() this flag is tested for a bb.

Second, I don't see how transfer of control from code guarded to an exception 
handler to the handler itself is taken care of. As I understand it, the 
successors to an instruction include all the exception handlers which cover 
that instruction; working with basic blocks this should normally mean that 
(i) both the start_pc and end_pc of the exception should open a bb, and (ii) 
after evaluating a bb the resulting local vars need to be merged with those 
of all relevant exception handlers, not just the successor blocks reachable 
by "normal" execution. Either the code is smarter than I am, or this is not 
happening.

All the best,

Chris

-- 
Chris Gray        /k/ Embedded Java Solutions      BE0503765045
Embedded & Mobile Java, OSGi    http://www.k-embedded-java.com/
chris.gray at kiffer.be                             +32 3 216 0369

Note: we will closed for all but urgent support activities from
Saturday 23 December 2006 to Monday 1 January 2007 inclusive.





More information about the kaffe mailing list