summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/test-icache.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/test-icache.cc')
-rw-r--r--deps/v8/test/cctest/test-icache.cc28
1 files changed, 20 insertions, 8 deletions
diff --git a/deps/v8/test/cctest/test-icache.cc b/deps/v8/test/cctest/test-icache.cc
index be7f846d86..ed757fc5ee 100644
--- a/deps/v8/test/cctest/test-icache.cc
+++ b/deps/v8/test/cctest/test-icache.cc
@@ -184,6 +184,24 @@ TEST(TestFlushICacheOfWritableAndExecutable) {
Isolate* isolate = CcTest::i_isolate();
HandleScope handles(isolate);
+ struct V8_NODISCARD EnableWritePermissionsOnMacArm64Scope {
+#if defined(V8_OS_DARWIN) && defined(V8_HOST_ARCH_ARM64)
+// Ignoring this warning is considered better than relying on
+// __builtin_available.
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunguarded-availability-new"
+ EnableWritePermissionsOnMacArm64Scope() { pthread_jit_write_protect_np(0); }
+ ~EnableWritePermissionsOnMacArm64Scope() {
+ pthread_jit_write_protect_np(1);
+ }
+#pragma clang diagnostic pop
+#else
+ EnableWritePermissionsOnMacArm64Scope() {
+ // Define a constructor to avoid unused variable warnings.
+ }
+#endif
+ };
+
for (int i = 0; i < kNumIterations; ++i) {
auto buffer = AllocateAssemblerBuffer(kBufferSize, nullptr,
VirtualMemory::kMapAsJittable);
@@ -194,19 +212,13 @@ TEST(TestFlushICacheOfWritableAndExecutable) {
CHECK(SetPermissions(GetPlatformPageAllocator(), buffer->start(),
buffer->size(), v8::PageAllocator::kReadWriteExecute));
{
-#if defined(V8_OS_MACOSX) && defined(V8_HOST_ARCH_ARM64)
- // Make sure to switch memory to writable on M1 hardware.
- wasm::CodeSpaceWriteScope code_space_write_scope(nullptr);
-#endif
+ EnableWritePermissionsOnMacArm64Scope write_scope;
FloodWithInc(isolate, buffer.get());
FlushInstructionCache(buffer->start(), buffer->size());
}
CHECK_EQ(23 + kNumInstr, f.Call(23)); // Call into generated code.
{
-#if defined(V8_OS_MACOSX) && defined(V8_HOST_ARCH_ARM64)
- // Make sure to switch memory to writable on M1 hardware.
- wasm::CodeSpaceWriteScope code_space_write_scope(nullptr);
-#endif
+ EnableWritePermissionsOnMacArm64Scope write_scope;
FloodWithNop(isolate, buffer.get());
FlushInstructionCache(buffer->start(), buffer->size());
}