From: <fra...@us...> - 2009-09-15 20:23:52
|
Revision: 1907 http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=1907&view=rev Author: frankrimlinger Date: 2009-09-15 20:23:44 +0000 (Tue, 15 Sep 2009) Log Message: ----------- Moved MethodEntrySym, SuperLoopSym, and LoopSym into the rewriter.synthetic package. Extended these class from Instruction and implementing the new ComponentInstruction interface. Added superCpnSym field to MethodEntrySym so it can retrieve the component graph with the corresponding entrypoint. With this in place, ComponentChoiceGenerator now simply executes each ComponentInstruction, working backwards from the end of the component vector generated by the BackupAlg instance. Each component instruction executes by installing the corresponding choice generator. MethodEntrySym: MethodChoiceGenerator walks CpnGraph, starting at entrypoint corresponding to MethodEntrySym. Follows connectors, passing through a given omega no more than once per case. To "pass through" omega means that you automatically jump to the corresponding alpha and keep going. SuperLoopSym: BlowupChoiceGenerator walks LoopGraph starting at alpha. Follows connectors which remain in this graph. case must end at omega LoopSym: LoopChoiceGenerator walks linear path, starting at supplied entrypoint. The details to set all this up are quite idiosyncratic, which is why the Syms were all broken out as separate instructions. Completed coding of ComponentChoiceGenerator. Tested against baseline package code. The components are executed in the correct order. Completed coding of the ComponentInstruction execute() methods, so that the proper RewriteChoiceGenerator created with an Outbound choice corresponding entrypoint and loaded as the new choice generator. Previous testing of RewriteChoiceGenerator loaded the entrypoint from the current DefinitionManger. But now we just proceed with no DefinitionManger. Whatever gui monitoring is required will start more or less from scratch as requirements change dramatically. There are now two kinds of traversal logic on a collision course. The first is the logic of "unravelling predicate transformers", 1892-1896, and the logic of component choice generators, discussed in 1898 and summarized above. This can be thought of as local and global traversal logic, respectively. The global logic may be viewed as constraining the local choices to the admissible outbound edges. This constraint is introduced programmatically by creating RewriteChoiceGenerator.getDestinations(). For the test jig, this method just returned *all* the outgoing edges. But now the problem is bounced to the current choice generator, one of the above. The choice generator then must probe the graph in question to determine which edges and/or vertex connector destinations are appropriate, and return them. Incidentally, this functionality now obviates the need for the ucon and gstack formalism. For now this formalism will be left intact in the loop algorithm, because it was very hard to get right in the first place and it may once again be needed someday. It will be the job of the choice generator deliver the proper "glue" across connectors. TODO: before tuning the state logic, get the global traversal logic working. Specifically, this means implementing getDestinations() within the RewriteChoiceGenerator extensions. Modified Paths: -------------- branches/mango/Mango/Mango/src/mango/graph/data/graphic/LoopData.java branches/mango/Mango/Mango/src/mango/graph/data/supervertex/SuperLoopData.java branches/mango/Mango/Mango/src/mango/graph/data/ucon/MethodEntryData.java branches/mango/Mango/Mango/src/mango/graph/msg/Graph2DViewCreateRequestMsg.java branches/mango/Mango/Mango/src/mango/module/definition/loop/LoopDefinitionManager.java branches/mango/Mango/Mango/src/mango/module/definition/loop/msg/LoopDefinitionLocatorMsg.java branches/mango/Mango/Mango/src/mango/module/definition/loop/msg/LoopDefinitionRequestMsg.java branches/mango/Mango/Mango/src/mango/module/definition/method/MethodDefinitionManager.java branches/mango/Mango/Mango/src/mango/module/definition/method/msg/CreateMethodStubMsg.java branches/mango/Mango/Mango/src/mango/module/definition/method/msg/MethodDefinitionLocatorMsg.java branches/mango/Mango/Mango/src/mango/module/definition/method/msg/MethodDefinitionRequestMsg.java branches/mango/Mango/Mango/src/mango/module/definition/model/DefinitionManager.java branches/mango/Mango/Mango/src/mango/module/instance/loop/agent/LoopInstanceAgent.java branches/mango/Mango/Mango/src/mango/module/instance/loop/model/LoopInstanceManager.java branches/mango/Mango/Mango/src/mango/module/instance/loop/msg/CloseLoopInstanceMsg.java branches/mango/Mango/Mango/src/mango/module/instance/loop/sym/LoopInstanceSym.java branches/mango/Mango/Mango/src/mango/ruleAction/module/instance/BuildLoopInstanceManager.java branches/mango/Mango/Mango/src/mango/ruleAction/module/instance/InstantiateLoopERROR.java branches/mango/Mango/Mango/src/mango/ruleAction/module/instance/IsLoopDefinitionClosed.java branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/LoopSymReq.java branches/mango/Mango/Mango/src/mango/ruleRequirement/symbols/MethodEntrySymReq.java branches/mango/Mango/Mango/src/mango/worker/Mango.java branches/mango/Mango/Mango/src/mango/worker/engine/hash/Hitem.java branches/mango/Mango/Mango/src/mango/worker/engine/sym/InterpretableSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/BackupAlg.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/superVertex/SuperBlowUpSym.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/CpnVertex.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/vertex/LoopVertex.java branches/mango/Mango/Mango/src/mango/worker/msg/SelectTargetMsg.java branches/mango/Mango/Mango/src/mango/worker/workFlow/model/HitemUtil.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/BlowupChoiceGenerator.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/ComponentChoiceGenerator.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/LoopChoiceGenerator.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/MethodChoiceGenerator.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/RewriteChoiceGenerator.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/RewriteListener.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/synthetic/Graphic.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/synthetic/InvokeRewriter.java Added Paths: ----------- branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/synthetic/ComponentInstruction.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/synthetic/LoopSym.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/synthetic/MethodEntrySym.java branches/mango/Mango/javapathfinder-mango-bridge/mango/rewriter/synthetic/SuperLoopSym.java Removed Paths: ------------- branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/graphic/LoopSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/superVertex/SuperLoopSym.java branches/mango/Mango/Mango/src/mango/worker/mangoModel/sym/ucon/MethodEntrySym.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |