From: <fra...@us...> - 2009-09-11 04:30:39
|
Revision: 1903 http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=1903&view=rev Author: frankrimlinger Date: 2009-09-11 04:30:32 +0000 (Fri, 11 Sep 2009) Log Message: ----------- Generalized SuperCpnGraphCreateRequestMsg to FowardFlowRequestMsg, which can generate the forward flow from any SuperVertex. This is very handy for visualization of subgraphs. To find the targetable methods, walk the forward flow of the entrypoints graph. The structure of this graph is like so: PackageSym ... SuperVertexClassSym MethodSym Now for each individual MethodSym, walk its foward flow, structure like so SuperCpnSym .... SuperLoopSym SuperBlowUpSym LoopSym...LoopSym .... Walk until you get to SuperCpnSym with no outgoing edge to a SuperCpnSym. This is a *terminal* SuperCpnSym. The job of the target selection algorithm is to pick the SuperCpnSym *closest* to some prescribed class or method. Exactly what this means is TBD, but assuming you have picked the target SuperCpnSym, you now do the component survey for jpf like so: Let F denote the forward flow of the target SuperCpnSym. The correspondence with 1899 is like so ComponentChoiceGenerator performs breadth-first backward flow on F, from leaves to the target SuperCpnSym, skipping the intermediary SuperBlowUpSym. PathChoiceGenerator applied to LoopSym graphs BlowUpChoiceGeneragor applied to SuperLoopSym graphs MethodChoiceGenerator applied to SuperCpnSym graph. The terminology leaves much to be desired, but for now not going to change it. Now that the facts on the ground are understood, its time to write the target selection algorithm and the component survey/ComponentChoiceGenerator. Then test this mechanism to make sure you can traverse tricky examples correctly. Then punch in the other choice generators. Finally, you can start working on the internal structure of vertex execution, this is 1892 and companion document. Wrote the class loopTests.MutualCorecursion to clarify what happens in the case of mutual corecursion. In this case, there is still a single SuperCpnSym, but the most dependent SuperLoopSym has multiple entry points, one for each method of the system. The fact that the SuperCpnSym professes allegiance to a particular one of the two methods is just an artifact. Just don't make unnecessary assumptions about graphs and everything will be fine. Modified Paths: -------------- branches/mango/Mango/Mango/src/mango/graph/agent/GraphViewAgent.java branches/mango/Mango/Mango/src/mango/gumboModel/action/MangoActionManager.java branches/mango/Mango/Mango/src/mango/worker/Worker.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/graphic/PackageSym.java Added Paths: ----------- branches/mango/Mango/Mango/src/mango/graph/msg/ForwardFlowRequestMsg.java branches/mango/Mango/mangoUserHome/frank/loopTests/src/loopTests/MutualCorecursion.java Removed Paths: ------------- branches/mango/Mango/Mango/src/mango/graph/msg/SuperCpnGraphCreateRequestMsg.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |