From: <fra...@us...> - 2009-09-01 20:35:24
|
Revision: 1883 http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=1883&view=rev Author: frankrimlinger Date: 2009-09-01 20:35:17 +0000 (Tue, 01 Sep 2009) Log Message: ----------- Trip down memory lane. Back in 2002, if I had realized that the graphs I was building could be acted on by jpf, a lot of trouble could have been saved, but oh well. The first order of business is to reconstruct the graph of an innermost loop. Innermost loops are trivially embedded in the control flow, in the sense that they can be collapsed without creating new loops. The sequences of edges representing an innermost loop still exists as the Path.cass graphic of the corresponding LoopSym, but the Graph adapter code is missing. Probably was too funky to survive translation from C++. Reintroduced the corresponding SuperPathSym, which may now be accessed by opening the LoopSym of the innermost loop. The edge sequence generated by an innermost loop is now a SimpleLoopPath extending Path, which is now abstract. The reason Path is made abstract is so it can have the abstract method getEntryPoint(), which returns the first vertex and by indirection the content of the path. SimpleLoopPath does some munging of the path sequence before delivering the entryPoint, so that the GateSym's are all falsified along the edges. We no longer have to deny that we are leaving the loop, since there is no place else to go. Also, the entrypoint represents the underlying CodeSym, which is the "first instruction" of the loop, NOT the loop as a whole. Finally, the last vertex of a SimpleLoopPath interprets to the trivial state transformation. All of the these modifications are made so that when jpf traverses the Graph with entrypointSet {simpleLoopPath.getEntryPoint()}, it will specify the state transition of the loop body, which is the desired outcome. NB: A SuperPathSym is not to be confused with the existing SuperLoopSym. A SuperLoopSym is an intermediary created by "blowing up". In the case of ItsAWrap, we have an innermost loop, so there is nothing to blow up, so the graph corresponding SuperLoopSym coincides with that of the ambient MethodSym. The terminology is not great. Next: create and wire LoopDefinitionRequestMsg and MethodDefintionRequestMsg to create a JPFrewriter and fire it up. Modified Paths: -------------- branches/mango/Mango/Mango/src/mango/Resources/IconIndex.java branches/mango/Mango/Mango/src/mango/graph/data/graphic/CodeData.java branches/mango/Mango/Mango/src/mango/graph/data/graphic/VertexData.java branches/mango/Mango/Mango/src/mango/graph/data/ucon/UconData.java branches/mango/Mango/Mango/src/mango/graph/msg/MultiGraph3DViewCreateRequestMsg.java branches/mango/Mango/Mango/src/mango/module/definition/loop/LoopDefinitionManager.java branches/mango/Mango/Mango/src/mango/module/definition/method/msg/MethodDefinitionLocatorMsg.java branches/mango/Mango/Mango/src/mango/worker/Mango.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/BackupAlg.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/edge/BackupEdge.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/edge/Edge.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/edge/InstallResult.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/edge/Path.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/graph/LoopGraph.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/graphic/LoopSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/graphic/MethodSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/graphic/SourceLineSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/graphic/VertexSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/superVertex/SuperVertexSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/ucon/AlphaSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/vertex/BackupVertex.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/vertex/LoopVertex.java branches/mango/Mango/Mango/src/mango/worker/workFlow/model/HitemUtil.java Added Paths: ----------- branches/mango/Mango/Mango/src/mango/worker/mangoModel/edge/SimpleLoopPath.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/superVertex/SuperPathSym.java branches/mango/Mango/mangoUserHome/rkrug/itsAWrap/src/baseline/ItsAWrap.java Removed Paths: ------------- branches/mango/Mango/Mango/src/mango/graph/data/supervertex/SuperStrataData.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/graph/StrataGraph.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/superVertex/SuperStrataSym.java branches/mango/Mango/mangoUserHome/rkrug/itsAWrap/src/baseline/itsAWrap.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |