< prev index next >

src/jdk/nashorn/internal/ir/TryNode.java

Print this page




 105     }
 106 
 107     @Override
 108     public boolean isTerminal() {
 109         if (body.isTerminal()) {
 110             for (final Block catchBlock : getCatchBlocks()) {
 111                 if (!catchBlock.isTerminal()) {
 112                     return false;
 113                 }
 114             }
 115             return true;
 116         }
 117         return false;
 118     }
 119 
 120     /**
 121      * Assist in IR navigation.
 122      * @param visitor IR navigating visitor.
 123      */
 124     @Override
 125     public Node accept(final LexicalContext lc, NodeVisitor<? extends LexicalContext> visitor) {
 126         if (visitor.enterTryNode(this)) {
 127             // Need to do finallybody first for termination analysis. TODO still necessary?
 128             final Block newFinallyBody = finallyBody == null ? null : (Block)finallyBody.accept(visitor);
 129             final Block newBody        = (Block)body.accept(visitor);
 130             return visitor.leaveTryNode(
 131                 setBody(lc, newBody).
 132                 setFinallyBody(lc, newFinallyBody).
 133                 setCatchBlocks(lc, Node.accept(visitor, catchBlocks)).
 134                 setInlinedFinallies(lc, Node.accept(visitor, inlinedFinallies)));
 135         }
 136 
 137         return this;
 138     }
 139 
 140     @Override
 141     public void toString(final StringBuilder sb, final boolean printType) {
 142         sb.append("try ");
 143     }
 144 
 145     /**




 105     }
 106 
 107     @Override
 108     public boolean isTerminal() {
 109         if (body.isTerminal()) {
 110             for (final Block catchBlock : getCatchBlocks()) {
 111                 if (!catchBlock.isTerminal()) {
 112                     return false;
 113                 }
 114             }
 115             return true;
 116         }
 117         return false;
 118     }
 119 
 120     /**
 121      * Assist in IR navigation.
 122      * @param visitor IR navigating visitor.
 123      */
 124     @Override
 125     public Node accept(final LexicalContext lc, final NodeVisitor<? extends LexicalContext> visitor) {
 126         if (visitor.enterTryNode(this)) {
 127             // Need to do finallybody first for termination analysis. TODO still necessary?
 128             final Block newFinallyBody = finallyBody == null ? null : (Block)finallyBody.accept(visitor);
 129             final Block newBody        = (Block)body.accept(visitor);
 130             return visitor.leaveTryNode(
 131                 setBody(lc, newBody).
 132                 setFinallyBody(lc, newFinallyBody).
 133                 setCatchBlocks(lc, Node.accept(visitor, catchBlocks)).
 134                 setInlinedFinallies(lc, Node.accept(visitor, inlinedFinallies)));
 135         }
 136 
 137         return this;
 138     }
 139 
 140     @Override
 141     public void toString(final StringBuilder sb, final boolean printType) {
 142         sb.append("try ");
 143     }
 144 
 145     /**


< prev index next >