aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/ir/BreakableStatement.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/nashorn/internal/ir/BreakableStatement.java')
-rw-r--r--src/jdk/nashorn/internal/ir/BreakableStatement.java25
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);
}