From 3740696d78274ed6710689604916d6e600f8d5db Mon Sep 17 00:00:00 2001 From: Florian Angerer <florian.angerer@oracle.com> Date: Mon, 16 Oct 2017 10:52:01 +0200 Subject: [PATCH] Do not initialize FD cache lazily to avoid possible races. --- .../com/oracle/truffle/r/runtime/env/REnvironment.java | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java index 26b0eff1a7..aea39489db 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/env/REnvironment.java @@ -116,7 +116,7 @@ import com.oracle.truffle.r.runtime.env.frame.REnvTruffleFrameAccess; public abstract class REnvironment extends RAttributeStorage { public static final class ContextStateImpl implements RContext.ContextState { - private static Map<RStringVector, WeakReference<FrameDescriptor>> frameDescriptorCache; + private static Map<RStringVector, WeakReference<FrameDescriptor>> frameDescriptorCache = Collections.synchronizedMap(new WeakHashMap<>(0)); private final MaterializedFrame globalFrame; @CompilationFinal private Base baseEnv; @@ -187,13 +187,7 @@ public abstract class REnvironment extends RAttributeStorage { public static FrameDescriptor getFrameDescriptorFromList(RList list) { CompilerAsserts.neverPartOfCompilation(); - // create lazily - if (frameDescriptorCache == null) { - frameDescriptorCache = Collections.synchronizedMap(new WeakHashMap<>()); - } - RStringVector names = list.getNames(); - WeakReference<FrameDescriptor> weakReference = frameDescriptorCache.get(names); FrameDescriptor fd = weakReference != null ? weakReference.get() : null; -- GitLab