< prev index next >

src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/ir/ForNode.java

Print this page




 257         return Node.replaceInLexicalContext(lc, this, new ForNode(this, init, test, body, modify, flags, controlFlowEscapes, conversion, iterator));
 258     }
 259 
 260     @Override
 261     public ForNode setControlFlowEscapes(final LexicalContext lc, final boolean controlFlowEscapes) {
 262         if (this.controlFlowEscapes == controlFlowEscapes) {
 263             return this;
 264         }
 265         return Node.replaceInLexicalContext(lc, this, new ForNode(this, init, test, body, modify, flags, controlFlowEscapes, conversion, iterator));
 266     }
 267 
 268     @Override
 269     JoinPredecessor setLocalVariableConversionChanged(final LexicalContext lc, final LocalVariableConversion conversion) {
 270         return Node.replaceInLexicalContext(lc, this, new ForNode(this, init, test, body, modify, flags, controlFlowEscapes, conversion, iterator));
 271     }
 272 
 273     @Override
 274     public boolean hasPerIterationScope() {
 275         return (flags & PER_ITERATION_SCOPE) != 0;
 276     }










 277 }


 257         return Node.replaceInLexicalContext(lc, this, new ForNode(this, init, test, body, modify, flags, controlFlowEscapes, conversion, iterator));
 258     }
 259 
 260     @Override
 261     public ForNode setControlFlowEscapes(final LexicalContext lc, final boolean controlFlowEscapes) {
 262         if (this.controlFlowEscapes == controlFlowEscapes) {
 263             return this;
 264         }
 265         return Node.replaceInLexicalContext(lc, this, new ForNode(this, init, test, body, modify, flags, controlFlowEscapes, conversion, iterator));
 266     }
 267 
 268     @Override
 269     JoinPredecessor setLocalVariableConversionChanged(final LexicalContext lc, final LocalVariableConversion conversion) {
 270         return Node.replaceInLexicalContext(lc, this, new ForNode(this, init, test, body, modify, flags, controlFlowEscapes, conversion, iterator));
 271     }
 272 
 273     @Override
 274     public boolean hasPerIterationScope() {
 275         return (flags & PER_ITERATION_SCOPE) != 0;
 276     }
 277 
 278     /**
 279      * Returns true if this for-node needs the scope creator of its containing block to create
 280      * per-iteration scope. This is only true for for-in loops with lexical declarations.
 281      *
 282      * @return true if the containing block's scope object creator is required in codegen
 283      */
 284     public boolean needsScopeCreator() {
 285         return isForIn() && hasPerIterationScope();
 286     }
 287 }
< prev index next >