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

Fri, 16 Aug 2013 18:51:53 +0200

author
lagergren
date
Fri, 16 Aug 2013 18:51:53 +0200
changeset 505
36fb36217e1d
parent 430
2c007a8bb0e7
child 952
6d5471a497fb
child 963
e2497b11a021
permissions
-rw-r--r--

8023017: SUB missing for widest op == number for BinaryNode
Reviewed-by: sundar, jlaskey

     1 /*
     2  * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     8  * particular file as subject to the "Classpath" exception as provided
     9  * by Oracle in the LICENSE file that accompanied this code.
    10  *
    11  * This code is distributed in the hope that it will be useful, but WITHOUT
    12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14  * version 2 for more details (a copy is included in the LICENSE file that
    15  * accompanied this code).
    16  *
    17  * You should have received a copy of the GNU General Public License version
    18  * 2 along with this work; if not, write to the Free Software Foundation,
    19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20  *
    21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22  * or visit www.oracle.com if you need additional information or have any
    23  * questions.
    24  */
    26 package jdk.nashorn.internal.ir;
    28 import java.util.List;
    29 import jdk.nashorn.internal.codegen.Label;
    31 /**
    32  * This class represents a node from which control flow can execute
    33  * a {@code break} statement
    34  */
    35 public interface BreakableNode extends LexicalContextNode {
    36     /**
    37      * Ensure that any labels in this breakable node are unique so
    38      * that new jumps won't go to old parts of the tree. Used for
    39      * example for cloning finally blocks
    40      *
    41      * @param lc the lexical context
    42      * @return node after labels have been made unique
    43      */
    44     public abstract Node ensureUniqueLabels(final LexicalContext lc);
    46     /**
    47      * Check whether this can be broken out from without using a label,
    48      * e.g. everything but Blocks, basically
    49      * @return true if breakable without label
    50      */
    51     public boolean isBreakableWithoutLabel();
    53     /**
    54      * Return the break label, i.e. the location to go to on break.
    55      * @return the break label
    56      */
    57     public Label getBreakLabel();
    59     /**
    60      * Return the labels associated with this node. Breakable nodes that
    61      * aren't LoopNodes only have a break label - the location immediately
    62      * afterwards the node in code
    63      * @return list of labels representing locations around this node
    64      */
    65     public List<Label> getLabels();
    66 }

mercurial