Flush the instruction cache on arm64 mswin

cl and clang-cl do not define __GNUC__, so rb_jit_icache_invalidate() compiled to nothing with cl and hit the #error with clang-cl, which defines __aarch64__.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Hiroshi SHIBATA 2026-11-05 11:43:47 +09:00
parent ec4f61e689
commit 9df2ed64f4
Notes: git 2026-11-05 22:16:19 +00:00

2
jit.c
View File

@ -1003,6 +1003,8 @@ rb_jit_icache_invalidate(void *start, void *end)
// On Darwin it's the same as calling sys_icache_invalidate().
#ifdef __GNUC__
__builtin___clear_cache(start, end);
#elif defined(_M_ARM64)
FlushInstructionCache(GetCurrentProcess(), start, (char *)end - (char *)start);
#elif defined(__aarch64__)
#error No instruction cache clear available with this compiler on Aarch64!
#endif