Hi,

Thank you for the reply. I have looked at model.py and I can make a FunctionGraph. However, I am still not sure how to use it.

space = FlowObjSpace()
graph = space.build_flow(test.is_perfect_number)
fun = FunctionGraph(test.is_perfect_number, graph.startblock)

That is how I create an instance of FunctionGraph, and I can still make the blocks into an iterator, but I still cannot see what is inside the blocks, i.e. what would be the code in the function graph.

Basically, all I want is a flowgraph of the code so that I can try to perform some static analysis on it (I want to bound the length of lists at compile time). I cannot figure out how to access the instructions in each basic block from the flowgraph.

Calling translate_as_module from pypy.translator.geninterplevel as described in http://codespeak.net/pypy/dist/pypy/doc/translation.html#example actually produces the SSA. I was hoping that I would be able to get the instructions of each block from the flowgraph like in the example.

Brian

On Wed, 12 Apr 2006, Christian Tismer wrote:

Brian C. Lum wrote:
 Dear Pypy developers:

I have gone through the source code for the FlowObjSpace in pypy.objspace.flow.objspace, but I am confused how to traverse through the blocks or obtain the information for each blocks in the graph. From my understanding:

space = FlowObjSpace()
graph = space.build_flow(func)

Once you have the graph, however, how do you know what instructions are in each block? I can iterate through the graph with iterblocks, but how do I get information from each block?

I want to analyze the information in each block to do code analysis for python. Can anyone help me with this?

First of all, flowing doesn't work for full CPython. You need
to use the RPython subset (see http://codespeak.net/pypy/dist/pypy/doc/coding-guide.html#restricted-python
)

Then, if you have a block, you can iterate over block.operations
which is a list, and so on. See pypy/objspace/flow/model.py

ciao - chris

_______________________________________________
[email protected]
http://codespeak.net/mailman/listinfo/pypy-dev

Reply via email to