159 } 160 161 /** 162 * Set the test for this for node 163 * 164 * @param lc lexical context 165 * @param test new test 166 * @return same or new node depending on if test was changed 167 */ 168 public abstract LoopNode setTest(final LexicalContext lc, final JoinPredecessorExpression test); 169 170 /** 171 * Set the control flow escapes flag for this node. 172 * TODO - integrate this with Lowering in a better way 173 * 174 * @param lc lexical context 175 * @param controlFlowEscapes control flow escapes value 176 * @return new loop node if changed otherwise the same 177 */ 178 public abstract LoopNode setControlFlowEscapes(final LexicalContext lc, final boolean controlFlowEscapes); 179 } | 159 } 160 161 /** 162 * Set the test for this for node 163 * 164 * @param lc lexical context 165 * @param test new test 166 * @return same or new node depending on if test was changed 167 */ 168 public abstract LoopNode setTest(final LexicalContext lc, final JoinPredecessorExpression test); 169 170 /** 171 * Set the control flow escapes flag for this node. 172 * TODO - integrate this with Lowering in a better way 173 * 174 * @param lc lexical context 175 * @param controlFlowEscapes control flow escapes value 176 * @return new loop node if changed otherwise the same 177 */ 178 public abstract LoopNode setControlFlowEscapes(final LexicalContext lc, final boolean controlFlowEscapes); 179 180 /** 181 * Does this loop have a LET declaration and hence require a per-iteration scope? 182 * @return true if a per-iteration scope is required. 183 */ 184 public abstract boolean hasPerIterationScope(); 185 } |