aboutsummaryrefslogtreecommitdiff
path: root/src/jdk
diff options
context:
space:
mode:
authorhannesw <none@none>2014-10-09 11:56:42 +0200
committerhannesw <none@none>2014-10-09 11:56:42 +0200
commit007449aefac1a0606d6322ac04623c0fbadf753a (patch)
treecc6964a96f2f34963807d3e28ee03a368caa3dac /src/jdk
parent48c8bc8e69d54f74fe332f31644ff1883dd98c74 (diff)
downloadjdk8u_nashorn-007449aefac1a0606d6322ac04623c0fbadf753a.tar.gz
8059938: NPE restoring cached script with optimistic types disabled
Reviewed-by: lagergren, sundar
Diffstat (limited to 'src/jdk')
-rw-r--r--src/jdk/nashorn/internal/runtime/Context.java9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/jdk/nashorn/internal/runtime/Context.java b/src/jdk/nashorn/internal/runtime/Context.java
index 8695a5c7..945f919c 100644
--- a/src/jdk/nashorn/internal/runtime/Context.java
+++ b/src/jdk/nashorn/internal/runtime/Context.java
@@ -1138,6 +1138,9 @@ public final class Context {
StoredScript storedScript = null;
FunctionNode functionNode = null;
+ // We only use the code store here if optimistic types are disabled. With optimistic types,
+ // code is stored per function in RecompilableScriptFunctionData.
+ // TODO: This should really be triggered by lazy compilation, not optimistic types.
final boolean useCodeStore = env._persistent_cache && !env._parse_only && !env._optimistic_types;
final String cacheKey = useCodeStore ? CodeStore.getCacheKey(0, null) : null;
@@ -1224,7 +1227,7 @@ public final class Context {
final String mainClassName = storedScript.getMainClassName();
final byte[] mainClassBytes = classBytes.get(mainClassName);
final Class<?> mainClass = installer.install(mainClassName, mainClassBytes);
- final Map<Integer, FunctionInitializer> initialzers = storedScript.getInitializers();
+ final Map<Integer, FunctionInitializer> initializers = storedScript.getInitializers();
installedClasses.put(mainClassName, mainClass);
@@ -1244,8 +1247,8 @@ public final class Context {
if (constant instanceof RecompilableScriptFunctionData) {
final RecompilableScriptFunctionData data = (RecompilableScriptFunctionData) constant;
data.initTransients(source, installer);
- if (initialzers != null) {
- final FunctionInitializer initializer = initialzers.get(data.getFunctionNodeId());
+ final FunctionInitializer initializer = initializers.get(data.getFunctionNodeId());
+ if (initializer != null) {
initializer.setCode(installedClasses.get(initializer.getClassName()));
data.initializeCode(initializer);
}