diff --git a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompilationPhase.java b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompilationPhase.java index 9a313b68214..9209129f255 100644 --- a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompilationPhase.java +++ b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CompilationPhase.java @@ -273,7 +273,8 @@ abstract class CompilationPhase { private static final class LocalVariableTypeCalculationPhase extends CompilationPhase { @Override FunctionNode transform(final Compiler compiler, final CompilationPhases phases, final FunctionNode fn) { - final FunctionNode newFunctionNode = transformFunction(fn, new LocalVariableTypesCalculator(compiler)); + final FunctionNode newFunctionNode = transformFunction(fn, new LocalVariableTypesCalculator(compiler, + compiler.getReturnType())); final ScriptEnvironment senv = compiler.getScriptEnvironment(); final PrintWriter err = senv.getErr(); diff --git a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Compiler.java b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Compiler.java index cecde63ee75..f1149845305 100644 --- a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Compiler.java +++ b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/Compiler.java @@ -619,6 +619,10 @@ public final class Compiler implements Loggable { return types == null ? null : types.get(fn, pos); } + Type getReturnType() { + return types == null || !isOnDemandCompilation() ? Type.UNKNOWN : types.getReturnType(); + } + /** * Do a compilation job * diff --git a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/LocalVariableTypesCalculator.java b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/LocalVariableTypesCalculator.java index f4844407adc..d439e2fb893 100644 --- a/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/LocalVariableTypesCalculator.java +++ b/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/LocalVariableTypesCalculator.java @@ -405,10 +405,15 @@ final class LocalVariableTypesCalculator extends SimpleNodeVisitor { // variables). private final Deque