From 2810bfa7689e364154927defaa2c5400efa5bc06 Mon Sep 17 00:00:00 2001 From: attila Date: Fri, 31 May 2013 12:56:56 +0200 Subject: [PATCH] 8015693: reduce NodeLiteralNode to NullLiteralNode Reviewed-by: jlaskey, lagergren --- .../jdk/nashorn/internal/ir/LiteralNode.java | 62 +++---------------- 1 file changed, 9 insertions(+), 53 deletions(-) diff --git a/nashorn/src/jdk/nashorn/internal/ir/LiteralNode.java b/nashorn/src/jdk/nashorn/internal/ir/LiteralNode.java index 7a59c5fe84..c34f9d94c5 100644 --- a/nashorn/src/jdk/nashorn/internal/ir/LiteralNode.java +++ b/nashorn/src/jdk/nashorn/internal/ir/LiteralNode.java @@ -28,7 +28,6 @@ package jdk.nashorn.internal.ir; import java.util.Arrays; import java.util.Collections; import java.util.List; - import jdk.nashorn.internal.codegen.CompileUnit; import jdk.nashorn.internal.codegen.types.Type; import jdk.nashorn.internal.ir.annotations.Immutable; @@ -242,8 +241,8 @@ public abstract class LiteralNode extends Node implements PropertyKey { * * @return the new literal node */ - public static LiteralNode newInstance(final long token, final int finish) { - return new NodeLiteralNode(token, finish); + public static LiteralNode newInstance(final long token, final int finish) { + return new NullLiteralNode(token, finish); } /** @@ -253,8 +252,8 @@ public abstract class LiteralNode extends Node implements PropertyKey { * * @return the new literal node */ - public static LiteralNode newInstance(final Node parent) { - return new NodeLiteralNode(parent.getToken(), parent.getFinish()); + public static LiteralNode newInstance(final Node parent) { + return new NullLiteralNode(parent.getToken(), parent.getFinish()); } @Immutable @@ -496,33 +495,15 @@ public abstract class LiteralNode extends Node implements PropertyKey { return new LexerTokenLiteralNode(parent.getToken(), parent.getFinish(), value); } - private static final class NodeLiteralNode extends LiteralNode { - - private NodeLiteralNode(final long token, final int finish) { - this(token, finish, null); - } - - private NodeLiteralNode(final long token, final int finish, final Node value) { - super(Token.recast(token, TokenType.OBJECT), finish, value); - } - - private NodeLiteralNode(final LiteralNode literalNode) { - super(literalNode); - } + private static final class NullLiteralNode extends LiteralNode { - private NodeLiteralNode(final LiteralNode literalNode, final Node value) { - super(literalNode, value); + private NullLiteralNode(final long token, final int finish) { + super(Token.recast(token, TokenType.OBJECT), finish, null); } @Override public Node accept(final NodeVisitor visitor) { if (visitor.enterLiteralNode(this)) { - if (value != null) { - final Node newValue = value.accept(visitor); - if(value != newValue) { - return visitor.leaveLiteralNode(new NodeLiteralNode(this, newValue)); - } - } return visitor.leaveLiteralNode(this); } @@ -531,38 +512,13 @@ public abstract class LiteralNode extends Node implements PropertyKey { @Override public Type getType() { - return value == null ? Type.OBJECT : super.getType(); + return Type.OBJECT; } @Override public Type getWidestOperationType() { - return value == null ? Type.OBJECT : value.getWidestOperationType(); + return Type.OBJECT; } - - } - /** - * Create a new node literal for an arbitrary node - * - * @param token token - * @param finish finish - * @param value the literal value node - * - * @return the new literal node - */ - public static LiteralNode newInstance(final long token, final int finish, final Node value) { - return new NodeLiteralNode(token, finish, value); - } - - /** - * Create a new node literal based on a parent node (source, token, finish) - * - * @param parent parent node - * @param value node value - * - * @return the new literal node - */ - public static LiteralNode newInstance(final Node parent, final Node value) { - return new NodeLiteralNode(parent.getToken(), parent.getFinish(), value); } /** -- GitLab