src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/Context.java

Print this page

        

*** 27,36 **** --- 27,37 ---- import static jdk.nashorn.internal.codegen.CompilerConstants.CONSTANTS; import static jdk.nashorn.internal.codegen.CompilerConstants.CREATE_PROGRAM_FUNCTION; import static jdk.nashorn.internal.codegen.CompilerConstants.SOURCE; import static jdk.nashorn.internal.codegen.CompilerConstants.STRICT_MODE; + import static jdk.nashorn.internal.runtime.CodeStore.newCodeStore; import static jdk.nashorn.internal.runtime.ECMAErrors.typeError; import static jdk.nashorn.internal.runtime.ScriptRuntime.UNDEFINED; import static jdk.nashorn.internal.runtime.Source.sourceFor; import java.io.File;
*** 198,215 **** @Override public void storeScript(final String cacheKey, final Source source, final String mainClassName, final Map<String,byte[]> classBytes, final Map<Integer, FunctionInitializer> initializers, final Object[] constants, final int compilationId) { if (context.codeStore != null) { ! context.codeStore.storeScript(cacheKey, source, mainClassName, classBytes, initializers, constants, compilationId); } } @Override public StoredScript loadScript(final Source source, final String functionKey) { if (context.codeStore != null) { ! return context.codeStore.loadScript(source, functionKey); } return null; } } --- 199,216 ---- @Override public void storeScript(final String cacheKey, final Source source, final String mainClassName, final Map<String,byte[]> classBytes, final Map<Integer, FunctionInitializer> initializers, final Object[] constants, final int compilationId) { if (context.codeStore != null) { ! context.codeStore.store(cacheKey, source, mainClassName, classBytes, initializers, constants, compilationId); } } @Override public StoredScript loadScript(final Source source, final String functionKey) { if (context.codeStore != null) { ! return context.codeStore.load(source, functionKey); } return null; } }
*** 461,472 **** classCache = new ClassCache(cacheSize); } if (env._persistent_cache) { try { ! final String cacheDir = Options.getStringProperty("nashorn.persistent.code.cache", "nashorn_code_cache"); ! codeStore = new CodeStore(this, cacheDir); } catch (final IOException e) { throw new RuntimeException("Error initializing code cache", e); } } --- 462,472 ---- classCache = new ClassCache(cacheSize); } if (env._persistent_cache) { try { ! codeStore = newCodeStore(this); } catch (final IOException e) { throw new RuntimeException("Error initializing code cache", e); } }
*** 1115,1125 **** FunctionNode functionNode = null; final boolean useCodeStore = env._persistent_cache && !env._parse_only && !env._optimistic_types; final String cacheKey = useCodeStore ? CodeStore.getCacheKey(0, null) : null; if (useCodeStore) { ! storedScript = codeStore.loadScript(source, cacheKey); } if (storedScript == null) { functionNode = new Parser(env, source, errMan, strict, getLogger(Parser.class)).parse(); --- 1115,1125 ---- FunctionNode functionNode = null; final boolean useCodeStore = env._persistent_cache && !env._parse_only && !env._optimistic_types; final String cacheKey = useCodeStore ? CodeStore.getCacheKey(0, null) : null; if (useCodeStore) { ! storedScript = codeStore.load(source, cacheKey); } if (storedScript == null) { functionNode = new Parser(env, source, errMan, strict, getLogger(Parser.class)).parse();
*** 1192,1210 **** * @return main script class */ private static Class<?> install(final StoredScript storedScript, final Source source, final CodeInstaller<ScriptEnvironment> installer) { final Map<String, Class<?>> installedClasses = new HashMap<>(); final Object[] constants = storedScript.getConstants(); final String mainClassName = storedScript.getMainClassName(); ! final byte[] mainClassBytes = storedScript.getClassBytes().get(mainClassName); final Class<?> mainClass = installer.install(mainClassName, mainClassBytes); final Map<Integer, FunctionInitializer> initialzers = storedScript.getInitializers(); installedClasses.put(mainClassName, mainClass); ! for (final Map.Entry<String, byte[]> entry : storedScript.getClassBytes().entrySet()) { final String className = entry.getKey(); if (className.equals(mainClassName)) { continue; } final byte[] code = entry.getValue(); --- 1192,1211 ---- * @return main script class */ private static Class<?> install(final StoredScript storedScript, final Source source, final CodeInstaller<ScriptEnvironment> installer) { final Map<String, Class<?>> installedClasses = new HashMap<>(); + final Map<String, byte[]> classBytes = storedScript.getClassBytes(); final Object[] constants = storedScript.getConstants(); 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(); installedClasses.put(mainClassName, mainClass); ! for (final Map.Entry<String, byte[]> entry : classBytes.entrySet()) { final String className = entry.getKey(); if (className.equals(mainClassName)) { continue; } final byte[] code = entry.getValue();