changeset 2118:50dac2fd8689 jdk8u152-b01

8169481: StackOverflowError on start when parsing PAC file to autodetect Proxy settings Reviewed-by: jlaskey, sundar
author hannesw
date Thu, 02 Feb 2017 18:23:28 +0100
parents e3b10bf2ff09
children 01bbd310156d
files src/jdk/nashorn/internal/codegen/WeighNodes.java test/script/basic/JDK-8030182_2.js
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/jdk/nashorn/internal/codegen/WeighNodes.java	Fri Jan 20 16:22:52 2017 +0000
+++ b/src/jdk/nashorn/internal/codegen/WeighNodes.java	Thu Feb 02 18:23:28 2017 +0100
@@ -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) {
--- a/test/script/basic/JDK-8030182_2.js	Fri Jan 20 16:22:52 2017 +0000
+++ b/test/script/basic/JDK-8030182_2.js	Thu Feb 02 18:23:28 2017 +0100
@@ -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()";