diff options
Diffstat (limited to 'src/jdk/nashorn/internal/codegen/WeighNodes.java')
-rw-r--r-- | src/jdk/nashorn/internal/codegen/WeighNodes.java | 52 |
1 files changed, 23 insertions, 29 deletions
diff --git a/src/jdk/nashorn/internal/codegen/WeighNodes.java b/src/jdk/nashorn/internal/codegen/WeighNodes.java index f5940488..26660a3a 100644 --- a/src/jdk/nashorn/internal/codegen/WeighNodes.java +++ b/src/jdk/nashorn/internal/codegen/WeighNodes.java @@ -27,7 +27,6 @@ package jdk.nashorn.internal.codegen; import java.util.List; import java.util.Map; -import jdk.nashorn.internal.codegen.types.Type; import jdk.nashorn.internal.ir.AccessNode; import jdk.nashorn.internal.ir.BinaryNode; import jdk.nashorn.internal.ir.Block; @@ -69,24 +68,25 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { * Weight constants. */ static final long FUNCTION_WEIGHT = 40; - static final long AASTORE_WEIGHT = 2; - static final long ACCESS_WEIGHT = 4; + static final long AASTORE_WEIGHT = 2; + static final long ACCESS_WEIGHT = 4; static final long ADD_WEIGHT = 10; - static final long BREAK_WEIGHT = 1; + static final long BREAK_WEIGHT = 1; static final long CALL_WEIGHT = 10; static final long CATCH_WEIGHT = 10; - static final long CONTINUE_WEIGHT = 1; - static final long IF_WEIGHT = 2; + static final long COMPARE_WEIGHT = 6; + static final long CONTINUE_WEIGHT = 1; + static final long IF_WEIGHT = 2; static final long LITERAL_WEIGHT = 10; - static final long LOOP_WEIGHT = 4; - static final long NEW_WEIGHT = 6; + static final long LOOP_WEIGHT = 4; + static final long NEW_WEIGHT = 6; static final long FUNC_EXPR_WEIGHT = 20; - static final long RETURN_WEIGHT = 2; + static final long RETURN_WEIGHT = 2; static final long SPLIT_WEIGHT = 40; - static final long SWITCH_WEIGHT = 8; - static final long THROW_WEIGHT = 2; + static final long SWITCH_WEIGHT = 8; + static final long THROW_WEIGHT = 2; static final long VAR_WEIGHT = 40; - static final long WITH_WEIGHT = 8; + static final long WITH_WEIGHT = 8; /** Accumulated weight. */ private long weight; @@ -101,7 +101,7 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { * * @param weightCache cache of already calculated block weights */ - private WeighNodes(FunctionNode topFunction, final Map<Node, Long> weightCache) { + private WeighNodes(final FunctionNode topFunction, final Map<Node, Long> weightCache) { super(new LexicalContext()); this.topFunction = topFunction; this.weightCache = weightCache; @@ -173,7 +173,6 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { if (functionNode == topFunction) { // the function being weighted; descend into its statements return true; -// functionNode.visitStatements(this); } // just a reference to inner function from outer function weight += FUNC_EXPR_WEIGHT; @@ -307,11 +306,6 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { } @Override - public Node leaveDISCARD(final UnaryNode unaryNode) { - return unaryNodeWeight(unaryNode); - } - - @Override public Node leaveNEW(final UnaryNode unaryNode) { weight += NEW_WEIGHT; return unaryNode; @@ -446,22 +440,22 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { @Override public Node leaveEQ(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override public Node leaveEQ_STRICT(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override public Node leaveGE(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override public Node leaveGT(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override @@ -478,12 +472,12 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { @Override public Node leaveLE(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override public Node leaveLT(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override @@ -498,12 +492,12 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { @Override public Node leaveNE(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override public Node leaveNE_STRICT(final BinaryNode binaryNode) { - return runtimeNodeWeight(binaryNode); + return compareWeight(binaryNode); } @Override @@ -546,8 +540,8 @@ final class WeighNodes extends NodeOperatorVisitor<LexicalContext> { return unaryNode; } - private Node runtimeNodeWeight(final BinaryNode binaryNode) { - weight += Type.widest(binaryNode.lhs().getType(), binaryNode.rhs().getType()).isObject() ? CALL_WEIGHT : 1; + private Node compareWeight(final BinaryNode binaryNode) { + weight += COMPARE_WEIGHT; return binaryNode; } } |