From 3c82358b97434a88e970128767f35dc06f831547 Mon Sep 17 00:00:00 2001 From: Eugene Zhuravlev Date: Fri, 29 Nov 2013 21:51:34 +0100 Subject: [PATCH] allow V8 map on IBM JDK 1.7 --- .../intellij/util/containers/ConcurrentMapFactory.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/platform/util/src/com/intellij/util/containers/ConcurrentMapFactory.java b/platform/util/src/com/intellij/util/containers/ConcurrentMapFactory.java index 991dcb819ff4..0a1ee373e276 100644 --- a/platform/util/src/com/intellij/util/containers/ConcurrentMapFactory.java +++ b/platform/util/src/com/intellij/util/containers/ConcurrentMapFactory.java @@ -16,6 +16,7 @@ package com.intellij.util.containers; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.text.StringUtil; import gnu.trove.TObjectHashingStrategy; import org.jetbrains.annotations.NotNull; @@ -79,7 +80,12 @@ public abstract class ConcurrentMapFactory { } }; - private static final ConcurrentMapFactory DEFAULT_FACTORY = SystemInfo.isOracleJvm || SystemInfo.isAppleJvm? V8_MAP_FACTORY : PLATFORM_MAP_FACTORY; + private static final ConcurrentMapFactory DEFAULT_FACTORY = SystemInfo.isOracleJvm || SystemInfo.isAppleJvm || isAtLeastJava7() ? V8_MAP_FACTORY : PLATFORM_MAP_FACTORY; + + private static boolean isAtLeastJava7() { + // IBM JDK provides correct version in java.version property, but not in java.runtime.version property + return StringUtil.compareVersionNumbers(SystemInfo.JAVA_VERSION, "1.7") >= 0; + } public static ConcurrentMap createMap() { return DEFAULT_FACTORY._createMap();