IDEA-157806 StackOverflowError on start when parsing PAC file to autodetect Proxy settings
Backport: 8169481: StackOverflowError on start when parsing PAC file to autodetect Proxy settings
diff --git a/src/jdk/nashorn/internal/codegen/WeighNodes.java b/src/jdk/nashorn/internal/codegen/WeighNodes.java
index 494afb4..94048f7 100644
--- a/src/jdk/nashorn/internal/codegen/WeighNodes.java
+++ b/src/jdk/nashorn/internal/codegen/WeighNodes.java
@@ -77,6 +77,7 @@
static final long CALL_WEIGHT = 10;
static final long CATCH_WEIGHT = 10;
static final long COMPARE_WEIGHT = 6;
+ static final long CONST_WEIGHT = 2;
static final long CONTINUE_WEIGHT = 1;
static final long IF_WEIGHT = 2;
static final long LITERAL_WEIGHT = 10;
@@ -185,7 +186,7 @@
@Override
public Node leaveIdentNode(final IdentNode identNode) {
- weight += ACCESS_WEIGHT + identNode.getName().length() * 2;
+ weight += ACCESS_WEIGHT;
return identNode;
}
@@ -210,6 +211,11 @@
@SuppressWarnings("rawtypes")
@Override
public boolean enterLiteralNode(final LiteralNode literalNode) {
+ if (literalNode instanceof LiteralNode.PrimitiveLiteralNode) {
+ weight += CONST_WEIGHT;
+ return false;
+ }
+
weight += LITERAL_WEIGHT;
if (literalNode instanceof ArrayLiteralNode) {
diff --git a/test/script/basic/JDK-8030182_2.js b/test/script/basic/JDK-8030182_2.js
index 4c2f5c4..4b563de 100644
--- a/test/script/basic/JDK-8030182_2.js
+++ b/test/script/basic/JDK-8030182_2.js
@@ -31,7 +31,7 @@
var str = "";
// large code to force splitting
-for (i = 0; i < 1000; ++i)
+for (i = 0; i < 2000; ++i)
str +="o = new Object()\n";
str +="g()";