raml-java-parser-2
raml-java-parser-2 copied to clipboard
Nashorn code generation error
I'm building the parser under OS X Yosemite using IntelliJ. My main program just consists of
JavaNodeFactory f = new JavaNodeFactory();
When I run this I get the following stack trace. Before I start digging into why this might be happening I thought I'd ask in case the cause was obvious to others.
Thanks.
Instance created: Wrapper
Instance created: JavaPathResolverHolder
Instance created: JSZ
Instance created: JSSchema
Instance created: JSFileSystem
Instance created: JSReportManager
Instance created: JSConsole
Instance created: JSHttp
Instance created: JSHttp
Instance created: JSPlatformExecution
Instance created: JSChildProcess
Instance created: JSChildProcess
Instance created: JSHolder
Instance created: JSHolder
java.lang.VerifyError: Code generation bug in "_L4609$_L4890$_L5569$_L5572": likely stack misaligned: java.lang.NullPointerException <eval>
at jdk.nashorn.internal.codegen.CodeGenerator.leaveFunctionNode(CodeGenerator.java:1127)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
at jdk.nashorn.internal.codegen.CodeGenerator.loadArgs(CodeGenerator.java:640)
at jdk.nashorn.internal.codegen.CodeGenerator.loadArgs(CodeGenerator.java:619)
at jdk.nashorn.internal.codegen.CodeGenerator.access$700(CodeGenerator.java:154)
at jdk.nashorn.internal.codegen.CodeGenerator$2.enterAccessNode(CodeGenerator.java:771)
at jdk.nashorn.internal.ir.AccessNode.accept(AccessNode.java:63)
at jdk.nashorn.internal.codegen.CodeGenerator.enterCallNode(CodeGenerator.java:667)
at jdk.nashorn.internal.codegen.CodeGenerator.access$200(CodeGenerator.java:154)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterCallNode(CodeGenerator.java:468)
at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:186)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:38)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
at jdk.nashorn.internal.codegen.CodeGenerator.enterDISCARD(CodeGenerator.java:2345)
at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterUnaryNode(NodeOperatorVisitor.java:57)
at jdk.nashorn.internal.ir.UnaryNode.accept(UnaryNode.java:124)
at jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(CodeGenerator.java:857)
at jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.java:66)
at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
at jdk.nashorn.internal.codegen.CodeGenerator$8.evaluate(CodeGenerator.java:2473)
at jdk.nashorn.internal.codegen.CodeGenerator$Store.store(CodeGenerator.java:3206)
at jdk.nashorn.internal.codegen.CodeGenerator.enterASSIGN(CodeGenerator.java:2476)
at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(NodeOperatorVisitor.java:117)
at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterDefault(CodeGenerator.java:479)
at jdk.nashorn.internal.ir.visitor.NodeVisitor.enterBinaryNode(NodeVisitor.java:178)
at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
at jdk.nashorn.internal.codegen.CodeGenerator.enterDISCARD(CodeGenerator.java:2345)
at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterUnaryNode(NodeOperatorVisitor.java:57)
at jdk.nashorn.internal.ir.UnaryNode.accept(UnaryNode.java:124)
at jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(CodeGenerator.java:857)
at jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.java:66)
at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator$2.enterFunctionNode(CodeGenerator.java:780)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator.enterCallNode(CodeGenerator.java:667)
at jdk.nashorn.internal.codegen.CodeGenerator.access$200(CodeGenerator.java:154)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterCallNode(CodeGenerator.java:468)
at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:186)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:38)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
at jdk.nashorn.internal.codegen.CodeGenerator.enterVarNode(CodeGenerator.java:2180)
at jdk.nashorn.internal.ir.VarNode.accept(VarNode.java:125)
at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterFunctionNode(CodeGenerator.java:456)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
at jdk.nashorn.internal.codegen.CodeGenerator.storeElement(CodeGenerator.java:1274)
at jdk.nashorn.internal.codegen.CodeGenerator.loadArray(CodeGenerator.java:1259)
at jdk.nashorn.internal.codegen.CodeGenerator.loadLiteral(CodeGenerator.java:1382)
at jdk.nashorn.internal.codegen.CodeGenerator.enterLiteralNode(CodeGenerator.java:1432)
at jdk.nashorn.internal.codegen.CodeGenerator.access$300(CodeGenerator.java:154)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterLiteralNode(CodeGenerator.java:473)
at jdk.nashorn.internal.ir.LiteralNode$ArrayLiteralNode.accept(LiteralNode.java:853)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
at jdk.nashorn.internal.codegen.CodeGenerator.loadArgs(CodeGenerator.java:638)
at jdk.nashorn.internal.codegen.CodeGenerator.access$1300(CodeGenerator.java:154)
at jdk.nashorn.internal.codegen.CodeGenerator$2.enterFunctionNode(CodeGenerator.java:792)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:296)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CodeGenerator.enterCallNode(CodeGenerator.java:667)
at jdk.nashorn.internal.codegen.CodeGenerator.access$200(CodeGenerator.java:154)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterCallNode(CodeGenerator.java:468)
at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:186)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.CallNode.accept(CallNode.java:38)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:403)
at jdk.nashorn.internal.codegen.CodeGenerator$8.evaluate(CodeGenerator.java:2471)
at jdk.nashorn.internal.codegen.CodeGenerator$Store.store(CodeGenerator.java:3206)
at jdk.nashorn.internal.codegen.CodeGenerator.enterASSIGN(CodeGenerator.java:2476)
at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterBinaryNode(NodeOperatorVisitor.java:117)
at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
at jdk.nashorn.internal.codegen.CodeGenerator$1.enterDefault(CodeGenerator.java:479)
at jdk.nashorn.internal.ir.visitor.NodeVisitor.enterBinaryNode(NodeVisitor.java:178)
at jdk.nashorn.internal.ir.BinaryNode.accept(BinaryNode.java:168)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:424)
at jdk.nashorn.internal.codegen.CodeGenerator.load(CodeGenerator.java:359)
at jdk.nashorn.internal.codegen.CodeGenerator.enterDISCARD(CodeGenerator.java:2345)
at jdk.nashorn.internal.ir.visitor.NodeOperatorVisitor.enterUnaryNode(NodeOperatorVisitor.java:57)
at jdk.nashorn.internal.ir.UnaryNode.accept(UnaryNode.java:124)
at jdk.nashorn.internal.codegen.CodeGenerator.enterExpressionStatement(CodeGenerator.java:857)
at jdk.nashorn.internal.ir.ExpressionStatement.accept(ExpressionStatement.java:66)
at jdk.nashorn.internal.ir.Node.accept(Node.java:291)
at jdk.nashorn.internal.ir.Block.accept(Block.java:143)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.Block.accept(Block.java:361)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:297)
at jdk.nashorn.internal.ir.LexicalContextNode$Acceptor.accept(LexicalContextNode.java:57)
at jdk.nashorn.internal.ir.LexicalContextExpression.accept(LexicalContextExpression.java:46)
at jdk.nashorn.internal.ir.FunctionNode.accept(FunctionNode.java:49)
at jdk.nashorn.internal.codegen.CompilationPhase$8.transform(CompilationPhase.java:379)
at jdk.nashorn.internal.codegen.CompilationPhase.apply(CompilationPhase.java:513)
at jdk.nashorn.internal.codegen.Compiler.compile(Compiler.java:358)
at jdk.nashorn.internal.runtime.Context.compile(Context.java:960)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:917)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:406)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:608)
at jdk.nashorn.api.scripting.NashornScriptEngine.compileImpl(NashornScriptEngine.java:597)
at jdk.nashorn.api.scripting.NashornScriptEngine.asCompiledScript(NashornScriptEngine.java:576)
at jdk.nashorn.api.scripting.NashornScriptEngine.compile(NashornScriptEngine.java:216)
at com.mulesoft.raml1.java.parser.core.JavaNodeFactory.init(JavaNodeFactory.java:257)
at com.mulesoft.raml1.java.parser.core.JavaNodeFactory.<init>(JavaNodeFactory.java:42)
at com.mulesoft.raml1.java.patser.test.Launcher.main(Launcher.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
Caused by: java.lang.NullPointerException
at jdk.internal.org.objectweb.asm.Frame.merge(Frame.java:1321)
at jdk.internal.org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1496)
at jdk.nashorn.internal.codegen.MethodEmitter.end(MethodEmitter.java:200)
at jdk.nashorn.internal.codegen.CodeGenerator.leaveFunctionNode(CodeGenerator.java:1116)
... 165 more
Process finished with exit code 0
I tried building the parser on Windows 7/Eclipse and got the same result, so the problem doesn't seem related to either OS or IDE.
Similar thing happened to me on Windows 7/Java 7.
I got it working by adding null
when creating the ScriptEngineManager
in src/main/java/com/mulesoft/raml1/java/parser/core/JavaNodeFactory.java
private void init() {
engine = new ScriptEngineManager(null).getEngineByName("nashorn");
...
Thanks for the suggestion. Unfortunately for OS X at least it didn't fix the problem. I'll try it on Windows 7 tomorrow to see if it helps there.