Arrin,

The parameter types are available from the MethodGenerator. The register indexes are not. It makes for really ugly code if I have to special case things and calculate the indexes myself.

It is also true that my code is more than a little bit ugly already and it's hard to figure out all
the interactions.

Oh well. Much thanks.

-Bil

Hi Bil

I'm not really sure about what your using the LocalVariableTable for do you need to know about all local variables or only those that hold the parameters to the method? If you only need the parameters then I'd be extracting these from the signature, but if you need the types of all LocalVariables I can see why it would get complicated.

I/We have done something like this before though using ControlFlowGraph, InstructionContexts and some other classes in org.apache.bcel.verifier.structurals.* these let you perform a simulation of execution (recursively following different branches) during which you could inspect the Stack and record the types associated with various instructions encountered in for instance a HashMap. One problem I found is that the JustIce verifier found the descriptions about what was a legal subroutine vague and made it's own interpretation, therefore it sometimes comes up with errors (Exceptions) in what you expect to be legal code. The only way I have found to avoid this is to modify the Subroutines class and remove the throwing of exceptions, you could catch the exception but this leaves the Subrountines and ControlFlowGraph structures improperly initialized. (Still it's not such a nice solution if you know a better one let me know please)

I hope this helps

Bye Arrin
PS: We were interested in the types being put into multi dimensional arrays but I imagine you could capture the types going into LocalVaraibleInstructions in much the same way.




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to