From 7b62c1be573371ccb88298315bf02ffa61cc9608 Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Mon, 8 Jun 2026 14:05:04 -0700 Subject: [PATCH] Revert "Remove the JIT entitlement from gen_snapshot." This reverts commit 8dd61ee24b673bda90bc6b4ffe6e95009f25e931. Reason for revert: gen_snapshot still flakily setting executable permissions? Original change's description: > Remove the JIT entitlement from gen_snapshot. > > gen_snapshot doesn't need the instructions it's generating to actually be executable. > > TEST=ci > Change-Id: I6c542d4a07f6e6659feb22f77aca3819d7d26c78 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/509060 > Reviewed-by: Tess Strickland > Commit-Queue: Ryan Macnak No-Presubmit: true No-Tree-Checks: true No-Try: true Change-Id: I91ed61d719a3d9eefa66b32b535079a07c92ab59 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510080 Reviewed-by: Ryan Macnak Reviewed-by: Alexander Aprelev Bot-Commit: rubber-stamper@appspot.gserviceaccount.com Commit-Queue: Ryan Macnak --- runtime/tools/entitlements/gen_snapshot.plist | 2 ++ .../entitlements/gen_snapshot_product.plist | 2 ++ runtime/vm/heap/page.cc | 25 +++++++++---------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/runtime/tools/entitlements/gen_snapshot.plist b/runtime/tools/entitlements/gen_snapshot.plist index e4d040d3c73..694b88bfa7e 100644 --- a/runtime/tools/entitlements/gen_snapshot.plist +++ b/runtime/tools/entitlements/gen_snapshot.plist @@ -2,5 +2,7 @@ + com.apple.security.cs.allow-jit + \ No newline at end of file diff --git a/runtime/tools/entitlements/gen_snapshot_product.plist b/runtime/tools/entitlements/gen_snapshot_product.plist index e4d040d3c73..694b88bfa7e 100644 --- a/runtime/tools/entitlements/gen_snapshot_product.plist +++ b/runtime/tools/entitlements/gen_snapshot_product.plist @@ -2,5 +2,7 @@ + com.apple.security.cs.allow-jit + \ No newline at end of file diff --git a/runtime/vm/heap/page.cc b/runtime/vm/heap/page.cc index b353bd5ea8c..d1c507b2aa1 100644 --- a/runtime/vm/heap/page.cc +++ b/runtime/vm/heap/page.cc @@ -68,19 +68,13 @@ static intptr_t CacheIndex(uword flags) { return (flags & Page::kExecutable) != 0 ? 1 : 0; } -static bool ExecutesGeneratedCode() { -#if defined(DART_PRECOMPILER) && !defined(TESTING) - return false; -#elif defined(DART_INCLUDE_SIMULATOR) - return !FLAG_use_simulator; -#else - return true; -#endif -} - Page* Page::Allocate(intptr_t size, uword flags) { - const bool executable = - (flags & Page::kExecutable) != 0 && ExecutesGeneratedCode(); +#if defined(DART_INCLUDE_SIMULATOR) + const bool using_simulator = FLAG_use_simulator; +#else + const bool using_simulator = false; +#endif + const bool executable = (flags & Page::kExecutable) != 0 && !using_simulator; const bool compressed = !executable; const char* name = executable ? "dart-code" : "dart-heap"; @@ -322,7 +316,12 @@ void Page::ResetProgressBar() { void Page::WriteProtect(bool read_only) { ASSERT(!is_image()); - if (is_executable() && read_only && ExecutesGeneratedCode()) { +#if defined(DART_INCLUDE_SIMULATOR) + const bool using_simulator = FLAG_use_simulator; +#else + const bool using_simulator = false; +#endif + if (is_executable() && read_only && !using_simulator) { // Handle making code executable in a special way. memory_->WriteProtectCode(); } else {