--- old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java 2017-11-03 23:56:20.338278793 -0700 +++ new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core/src/org/graalvm/compiler/core/target/Backend.java 2017-11-03 23:56:19.994263399 -0700 @@ -195,9 +195,12 @@ public InstalledCode createInstalledCode(DebugContext debug, ResolvedJavaMethod method, CompilationRequest compilationRequest, CompilationResult compilationResult, SpeculationLog speculationLog, InstalledCode predefinedInstalledCode, boolean isDefault, Object[] context) { Object[] debugContext = context != null ? context : new Object[]{getProviders().getCodeCache(), method, compilationResult}; - CodeInstallationTask[] tasks = new CodeInstallationTask[codeInstallationTaskFactories.size()]; - for (int i = 0; i < codeInstallationTaskFactories.size(); i++) { - tasks[i] = codeInstallationTaskFactories.get(i).create(); + CodeInstallationTask[] tasks; + synchronized (this) { + tasks = new CodeInstallationTask[codeInstallationTaskFactories.size()]; + for (int i = 0; i < codeInstallationTaskFactories.size(); i++) { + tasks[i] = codeInstallationTaskFactories.get(i).create(); + } } try (DebugContext.Scope s2 = debug.scope("CodeInstall", debugContext); DebugContext.Activation a = debug.activate()) {