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/ [EMAIL PROTECTED] +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. _______________________________________________ kaffe mailing list [email protected] http://kaffe.org/cgi-bin/mailman/listinfo/kaffe
