Nashorn 8u60 EA fails on valid JavaScript (regression)
Josh Fleming
jfleming at linkedin.com
Wed May 13 13:58:41 UTC 2015
Thanks Sundar. I’d missed that the two were connected.
jf
On 5/13/15, 9:52 AM, "A. Sundararajan"
<sundararajan.athijegannathan at oracle.com> wrote:
>Hi,
>
>Webrev already sent to nashorn-dev list to fix this issue.
>
>
>Bug: https://bugs.openjdk.java.net/browse/JDK-8079424
>Review thread:
>http://mail.openjdk.java.net/pipermail/nashorn-dev/2015-May/004502.html
>
>Attila is on travel. I think this will be fixed in 9 and backported to
>jdk8u-dev afterwards.
>
>-Sundar
>
>On Wednesday 13 May 2015 06:42 PM, Josh Fleming wrote:
>> Bump.
>>
>>
>> jf
>>
>>
>>
>>
>>
>> On 5/1/15, 10:21 AM, "Josh Fleming" <jfleming at linkedin.com> wrote:
>>
>>> Hi folks,
>>>
>>> I filed a bug for this on the Oracle site (Review ID: JI-9020901), but
>>> thought I’d surface it here too.
>>>
>>> When running our code in minified form, I came across a strange
>>> compilation failure in Nashorn 8u60. After some reduction, it appears
>>> that any code of the following form triggers the failure:
>>>
>>> true && true, true
>>>
>>> You should be able to reproduce the failure by entering it into the
>>> Nashorn 8u60 shell. The pattern seems to be a binary logical operator
>>> appearing anywhere before the final position in a compound expression.
>>> The same code works properly in previous releases of Nashorn.
>>>
>>> java –version:
>>>
>>> java version "1.8.0_60-ea"
>>> Java(TM) SE Runtime Environment (build 1.8.0_60-ea-b12)
>>> Java HotSpot(TM) 64-Bit Server VM (build 25.60-b12, mixed mode)
>>>
>>> Stack trace:
>>>
>>> Exception in thread "main" java.lang.AssertionError: Failed generating
>>> bytecode for <STDIN>:1
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CompilationPhase$13.transform(CompilationPh
>>>as
>>> e.java:486)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.jav
>>>a:
>>> 728)
>>> at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:620)
>>> at jdk.nashorn.internal.runtime.Context.compile(Context.java:1276)
>>> at
>>>jdk.nashorn.internal.runtime.Context.compileScript(Context.java:1213)
>>> at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:628)
>>> at
>>>
>>>jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptE
>>>ng
>>> ine.java:523)
>>> at
>>>
>>>jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptE
>>>ng
>>> ine.java:512)
>>> at
>>>
>>>jdk.nashorn.api.scripting.NashornScriptEngine.evalImpl(NashornScriptEngi
>>>ne
>>> .java:400)
>>> at
>>>
>>>jdk.nashorn.api.scripting.NashornScriptEngine.eval(NashornScriptEngine.j
>>>av
>>> a:155)
>>> at
>>>javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:264)
>>> at com.sun.tools.script.shell.Main.evaluateString(Main.java:298)
>>> at com.sun.tools.script.shell.Main.processSource(Main.java:267)
>>> at com.sun.tools.script.shell.Main.access$100(Main.java:37)
>>> at com.sun.tools.script.shell.Main$1.run(Main.java:183)
>>> at com.sun.tools.script.shell.Main.main(Main.java:48)
>>> Caused by: java.lang.ArrayIndexOutOfBoundsException: -1
>>> at jdk.nashorn.internal.codegen.Label$Stack.pop(Label.java:300)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.MethodEmitter.popType(MethodEmitter.java:27
>>>9)
>>> at
>>>jdk.nashorn.internal.codegen.MethodEmitter.pop(MethodEmitter.java:502)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadAND_OR(CodeGenerator.java
>>>:3
>>> 808)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.access$3300(CodeGenerator.jav
>>>a:
>>> 181)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator$1.enterAND(CodeGenerator.java
>>>:1
>>> 089)
>>> at
>>>
>>>jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(Node
>>>Op
>>> eratorVisitor.java:111)
>>> at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:339)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:861)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:837)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadAndDiscard(CodeGenerator.
>>>ja
>>> va:3678)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadMaybeDiscard(CodeGenerato
>>>r.
>>> java:3707)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadMaybeDiscard(CodeGenerato
>>>r.
>>> java:3694)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadCOMMARIGHT(CodeGenerator.
>>>ja
>>> va:4128)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.access$3200(CodeGenerator.jav
>>>a:
>>> 181)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator$1.enterCOMMARIGHT(CodeGenerat
>>>or
>>> .java:1083)
>>> at
>>>
>>>jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(Node
>>>Op
>>> eratorVisitor.java:145)
>>> at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:339)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:861)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:837)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadAndDiscard(CodeGenerator.
>>>ja
>>> va:3678)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadCOMMARIGHT(CodeGenerator.
>>>ja
>>> va:4127)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.access$3200(CodeGenerator.jav
>>>a:
>>> 181)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator$1.enterCOMMARIGHT(CodeGenerat
>>>or
>>> .java:1083)
>>> at
>>>
>>>jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(Node
>>>Op
>>> eratorVisitor.java:145)
>>> at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:339)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:861)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:837)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpressionAsBoolean(CodeG
>>>en
>>> erator.java:580)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpressionAsType(CodeGene
>>>ra
>>> tor.java:826)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator$14.evaluate(CodeGenerator.jav
>>>a:
>>> 3885)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator$Store.store(CodeGenerator.jav
>>>a:
>>> 4502)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadASSIGN(CodeGenerator.java
>>>:3
>>> 887)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.access$800(CodeGenerator.java
>>>:1
>>> 81)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator$1.enterASSIGN(CodeGenerator.j
>>>av
>>> a:923)
>>> at
>>>
>>>jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(Node
>>>Op
>>> eratorVisitor.java:113)
>>> at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:339)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:861)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadExpression(CodeGenerator.
>>>ja
>>> va:837)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.loadAndDiscard(CodeGenerator.
>>>ja
>>> va:3678)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(Code
>>>Ge
>>> nerator.java:1732)
>>> at
>>>
>>>jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.j
>>>av
>>> a:63)
>>> at jdk.nashorn.internal.ir.Node.accept(Node.java:261)
>>> at jdk.nashorn.internal.ir.Block.accept(Block.java:154)
>>> at
>>>
>>>jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContex
>>>tN
>>> ode.java:57)
>>> at jdk.nashorn.internal.ir.Block.accept(Block.java:409)
>>> at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:374)
>>> at
>>>
>>>jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContex
>>>tN
>>> ode.java:57)
>>> at
>>>
>>>jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextEx
>>>pr
>>> ession.java:47)
>>> at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:57)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CompilationPhase.transformFunction(Compilat
>>>io
>>> nPhase.java:732)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CompilationPhase.access$100(CompilationPhas
>>>e.
>>> java:69)
>>> at
>>>
>>>jdk.nashorn.internal.codegen.CompilationPhase$13.transform(CompilationPh
>>>as
>>> e.java:473)
>>> ... 15 more
>>>
>>>
>>> jf
>>>
>
More information about the nashorn-dev
mailing list