From: bdemsky Date: Tue, 24 Apr 2007 23:54:53 +0000 (+0000) Subject: simplified algorithm X-Git-Tag: preEdgeChange~614 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=1f72a6db1fccfe3a8686fb7abf2161df52986c8d;p=IRC.git simplified algorithm --- diff --git a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysisAlgorithm b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysisAlgorithm index 9bd2b6e6..78d9c960 100644 --- a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysisAlgorithm +++ b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysisAlgorithm @@ -2,31 +2,47 @@ Task Analysis: Algorithm: -1. Obtain the flags for each class in the program(Incase, a class has a super class, the super's flags, if any, are included - in the list of flags for the class) -2. Create a new flagstate for the StartupObject class with the initialstate flag set to true. Append this flagstate to the - queue, QMAIN. -3. For each class that has only externs, add all the possible runtime transitions(flagstates) to QMAIN. -4. Pop the head of QMAIN and use this flagstate FS to evaluate which task triggers on this. -5. Add all runtime transitions from FS to QMAIN and ADJLIST(as edges from FS) ensuring that the new states don't exist in QMAIN. -6. Iterate through the list of tasks using FS. -7. If a task is triggered, - a. If FS satisfies more than one parameter of the task, throw an error stating that this is an illegal operation. - b. If 7a is not true, then add FS to the ADJLIST for that particular class. Before adding, ensure that the flagstate - doesn't already exist in the ADJLIST. Keep track of the temp (as TEMP) whose flags form the triggering flagstate. -8. Search through the FFANS in this task: +1. Obtain the flags for each class in the program(Incase, a class has +a super class, the super's flags, if any, are included in the list of +flags for the class) + +2. Create a new flagstate for the StartupObject class with the +initialstate flag set to true. Append this flagstate to the queue, +QMAIN. + +3. Pop the head of QMAIN and use this flagstate FS to evaluate which +task triggers on this. + +4. Add all runtime transitions (external flag changes) from FS to +QMAIN and ADJLIST(as edges from FS) ensuring that the new states don't +exist in QMAIN. + +5. Iterate through the list of tasks using FS. + +6. If a task is triggered, + + a. If FS satisfies more than one parameter of the task, throw +an error stating that this is an illegal operation. + + b. If 6a is not true, then add a transition for this task to +FS using step 7. Before performing step 7, make sure that the task +doesn't already exist as a transition to FS. Keep track of the temp +(as TEMP) whose flags form the triggering flagstate. + +7. Search through the FFANS in this task: + a. For NewObject node, - i. If the new object is of a class which has only externs, create a new flagstate with all flags set to false and - push into QMAIN ensuring that it doesn't already exist in QMAIN and ADJLIST. - ii. If the new object is of a class which has both types of flags, create the new flagstate and append to QMAIN and - ADJLIST ensuring that the state doesn't already exist. - iii.If new object is of a class which has no externs, then create the new flagstate and append to QMAIN and ADJLIST - ensuring that the state doesn't already exist. - b. For the task exit node, apply the flag changes to the tempflag pairs corresponding to TEMP and create the new flagstate. - Add this state alongwith the task as an Edge to FS in the ADJLIST. - i. If the class has no external flags, append the new flagstate to QMAIN ensuring that it doesn't already exist. - ii. If the class has both types of flags, create the possible runtime states from the base state obtained in 6b; - Also add the Runtime edges to the base state in ADJLIST. Append the states to QMAIN ensuring that they are not there - already. - c. For the PRE node, throw an error stating that this type of node isn't supported anymore in Bristlecone. -9. Repeat steps 4-8 until QMAIN is empty. + + i. If the new object is of a class which has both +types of flags, create the new flagstate and append to QMAIN. Set its +set of transitions to the empty set. + + b. For the task exit node, apply the flag changes to the +tempflag pairs corresponding to TEMP and create the new flagstate. +Add this state along with the task as an Edge to FS in the FS +transition set. Add the state to QMAIN. + + c. For the PRE node, throw an error stating that this type of +node isn't supported anymore in Bristlecone. + +8. Repeat steps 3-7 until QMAIN is empty.