aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/ir/ContinueNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/nashorn/internal/ir/ContinueNode.java')
-rw-r--r--src/jdk/nashorn/internal/ir/ContinueNode.java46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/jdk/nashorn/internal/ir/ContinueNode.java b/src/jdk/nashorn/internal/ir/ContinueNode.java
index 579414a9..c58531bd 100644
--- a/src/jdk/nashorn/internal/ir/ContinueNode.java
+++ b/src/jdk/nashorn/internal/ir/ContinueNode.java
@@ -25,6 +25,7 @@
package jdk.nashorn.internal.ir;
+import jdk.nashorn.internal.codegen.Label;
import jdk.nashorn.internal.ir.annotations.Immutable;
import jdk.nashorn.internal.ir.visitor.NodeVisitor;
@@ -32,9 +33,8 @@ import jdk.nashorn.internal.ir.visitor.NodeVisitor;
* IR representation for CONTINUE statements.
*/
@Immutable
-public class ContinueNode extends Statement {
-
- private IdentNode label;
+public class ContinueNode extends JumpStatement {
+ private static final long serialVersionUID = 1L;
/**
* Constructor
@@ -42,16 +42,14 @@ public class ContinueNode extends Statement {
* @param lineNumber line number
* @param token token
* @param finish finish
- * @param label label for break or null if none
+ * @param labelName label name for continue or null if none
*/
- public ContinueNode(final int lineNumber, final long token, final int finish, final IdentNode label) {
- super(lineNumber, token, finish);
- this.label = label;
+ public ContinueNode(final int lineNumber, final long token, final int finish, final String labelName) {
+ super(lineNumber, token, finish, labelName);
}
- @Override
- public boolean hasGoto() {
- return true;
+ private ContinueNode(final ContinueNode continueNode, final LocalVariableConversion conversion) {
+ super(continueNode, conversion);
}
@Override
@@ -63,22 +61,24 @@ public class ContinueNode extends Statement {
return this;
}
- /**
- * Get the label for this break node
- * @return label, or null if none
- */
- public IdentNode getLabel() {
- return label;
+ @Override
+ JumpStatement createNewJumpStatement(final LocalVariableConversion conversion) {
+ return new ContinueNode(this, conversion);
}
@Override
- public void toString(final StringBuilder sb) {
- sb.append("continue");
+ String getStatementName() {
+ return "continue";
+ }
- if (label != null) {
- sb.append(' ');
- label.toString(sb);
- }
+
+ @Override
+ public BreakableNode getTarget(final LexicalContext lc) {
+ return lc.getContinueTo(getLabelName());
}
-}
+ @Override
+ public Label getTargetLabel(final BreakableNode target) {
+ return ((LoopNode)target).getContinueLabel();
+ }
+}