Nashorn 8u60 EA fails on valid JavaScript (regression)

A. Sundararajan sundararajan.athijegannathan at oracle.com
Wed May 13 14:01:38 UTC 2015


Yes, the connection wasn't clear from that review request.   And, thanks 
for reporting this bug.

-Sundar

On Wednesday 13 May 2015 07:28 PM, Josh Fleming wrote:
> 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