From 4e54b307df75b5442b02408715807bf65309f746 Mon Sep 17 00:00:00 2001 From: Florian Kistner Date: Fri, 17 Jul 2020 14:48:53 +0200 Subject: [PATCH] Darwin arm64: Use NIO2 instead of legacy mediator GitOrigin-RevId: abc952a1bf9fdbd9c79e8e196eaec5762af9673b --- .../util/src/com/intellij/openapi/util/SystemInfo.java | 4 +++- .../src/com/intellij/openapi/util/io/FileSystemUtil.java | 2 +- .../openapi/util/io/FileAttributesReadingTest.java | 7 ++++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/util/src/com/intellij/openapi/util/SystemInfo.java b/platform/util/src/com/intellij/openapi/util/SystemInfo.java index 278b922549c2..e597f74921a9 100644 --- a/platform/util/src/com/intellij/openapi/util/SystemInfo.java +++ b/platform/util/src/com/intellij/openapi/util/SystemInfo.java @@ -87,7 +87,9 @@ public final class SystemInfo { public static final boolean is32Bit = SystemInfoRt.is32Bit; public static final boolean is64Bit = SystemInfoRt.is64Bit; - public static final boolean isMacIntel64 = isMac && "x86_64".equals(OS_ARCH); + public static final boolean isIntel64 = "x86_64".equals(OS_ARCH) || "amd64".equals(OS_ARCH); + public static final boolean isArm64 = "aarch64".equals(OS_ARCH) || "arm64".equals(OS_ARCH); + public static final boolean isMacIntel64 = isMac && isIntel64; private static final NotNullLazyValue ourHasXdgOpen = new PathExecLazyValue("xdg-open"); public static boolean hasXdgOpen() { diff --git a/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java b/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java index b3178cc78cd7..51e1fad70300 100644 --- a/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java +++ b/platform/util/src/com/intellij/openapi/util/io/FileSystemUtil.java @@ -54,7 +54,7 @@ public final class FileSystemUtil { if (SystemInfo.isWindows && IdeaWin32.isAvailable()) { return check(new IdeaWin32MediatorImpl()); } - else if ((SystemInfo.isLinux || SystemInfo.isMac || SystemInfo.isSolaris || SystemInfo.isFreeBSD) && JnaLoader.isLoaded()) { + else if ((SystemInfo.isLinux || SystemInfo.isMac && !SystemInfo.isArm64 || SystemInfo.isSolaris || SystemInfo.isFreeBSD) && JnaLoader.isLoaded()) { return check(new JnaUnixMediatorImpl()); } } diff --git a/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java b/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java index 608a865e38d8..a8b9b7b13684 100644 --- a/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java +++ b/platform/util/testSrc/com/intellij/openapi/util/io/FileAttributesReadingTest.java @@ -34,7 +34,12 @@ public abstract class FileAttributesReadingTest { @BeforeClass public static void setUpClass() { FileSystemUtil.resetMediator(); - assertEquals(SystemInfo.isWindows ? "IdeaWin32" : "JnaUnix", FileSystemUtil.getMediatorName()); + assertEquals(SystemInfo.isMac && SystemInfo.isArm64 + ? "Nio2" // macOS arm64 only supports NIO2 mediator + : SystemInfo.isWindows + ? "IdeaWin32" + : "JnaUnix", + FileSystemUtil.getMediatorName()); } }