diff options
Diffstat (limited to 'src/jdk/nashorn/internal/ir/BreakableStatement.java')
-rw-r--r-- | src/jdk/nashorn/internal/ir/BreakableStatement.java | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/src/jdk/nashorn/internal/ir/BreakableStatement.java b/src/jdk/nashorn/internal/ir/BreakableStatement.java index fa74454e..7e1afaf0 100644 --- a/src/jdk/nashorn/internal/ir/BreakableStatement.java +++ b/src/jdk/nashorn/internal/ir/BreakableStatement.java @@ -32,10 +32,13 @@ import jdk.nashorn.internal.ir.annotations.Immutable; @Immutable abstract class BreakableStatement extends LexicalContextStatement implements BreakableNode { + private static final long serialVersionUID = 1L; /** break label. */ protected final Label breakLabel; + final LocalVariableConversion conversion; + /** * Constructor * @@ -47,16 +50,19 @@ abstract class BreakableStatement extends LexicalContextStatement implements Bre protected BreakableStatement(final int lineNumber, final long token, final int finish, final Label breakLabel) { super(lineNumber, token, finish); this.breakLabel = breakLabel; + this.conversion = null; } /** * Copy constructor * * @param breakableNode source node + * @param conversion the potentially new local variable conversion */ - protected BreakableStatement(final BreakableStatement breakableNode) { + protected BreakableStatement(final BreakableStatement breakableNode, final LocalVariableConversion conversion) { super(breakableNode); this.breakLabel = new Label(breakableNode.getBreakLabel()); + this.conversion = conversion; } /** @@ -86,6 +92,21 @@ abstract class BreakableStatement extends LexicalContextStatement implements Bre */ @Override public List<Label> getLabels() { - return Collections.singletonList(breakLabel); + return Collections.unmodifiableList(Collections.singletonList(breakLabel)); + } + + @Override + public JoinPredecessor setLocalVariableConversion(final LexicalContext lc, final LocalVariableConversion conversion) { + if(this.conversion == conversion) { + return this; + } + return setLocalVariableConversionChanged(lc, conversion); } + + @Override + public LocalVariableConversion getLocalVariableConversion() { + return conversion; + } + + abstract JoinPredecessor setLocalVariableConversionChanged(LexicalContext lc, LocalVariableConversion conversion); } |