Groups | Blog | Home
all groups > dotnet clr > april 2005 >

dotnet clr : Bytecode verifier vs. Exception Handling



George
4/26/2005 3:37:09 AM
Hello,

Please someone help me in the following verification question:

I know that verifier shall simulate all possible control flow paths through
the bytecode. So, the verifier shall have a flow graph.

In this graph, I'm wondering, what is the succesor of an "endfinally"
instruction. Where does the verifier consider that the control goes after
simulating an "endfinally" instruction?

For example, in case the control is at a "leave t" instruction, the verifier
- I suppose - has a look into the exception handling array and if there are
no "finally" blocks to simulate, it gives the control to the targeted
intruction, i.e. the instruction with label "t".

So, my question is: "in the (directed) flow graph considered by the
verifier, what are the edges exiting an endfinally node?"

Any suggestion could be helpful to me.

Thanks.
George
red
5/12/2005 5:14:50 PM

[quoted text, click to view]
Matt Grice [MSFT]
5/19/2005 11:50:32 AM
finallys can execute in two ways: normal and exceptional path.
In the exceptional path, the endfinally has no successors, at least not in
the current function.

In the normal path the finally executes on all leaves from the try and
continues to the target address. You could say that the finally's
successors are all targets of a leave instruction from within the try
region.


[quoted text, click to view]

AddThis Social Bookmark Button