Remove the JIT entitlement from gen_snapshot, take 2.
Push this down to VirtualMemory since some parts of the VM go there directly instead of through Page. TEST=ci Change-Id: Icc65242e9099e8785a38ba9e38311146d8b5845b Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/510260 Commit-Queue: Ryan Macnak <rmacnak@google.com> Reviewed-by: Alexander Markov <alexmarkov@google.com>
This commit is contained in:
committed by
dart-scoped@luci-project-accounts.iam.gserviceaccount.com
parent
9057e23671
commit
49546393c6
@@ -2,7 +2,5 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>com.apple.security.cs.allow-jit</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -2,7 +2,5 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>com.apple.security.cs.allow-jit</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
+2
-12
@@ -69,12 +69,7 @@ static intptr_t CacheIndex(uword flags) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Page* Page::Allocate(intptr_t size, uword flags) {
|
Page* Page::Allocate(intptr_t size, uword flags) {
|
||||||
#if defined(DART_INCLUDE_SIMULATOR)
|
const bool executable = (flags & Page::kExecutable) != 0;
|
||||||
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 bool compressed = !executable;
|
||||||
const char* name = executable ? "dart-code" : "dart-heap";
|
const char* name = executable ? "dart-code" : "dart-heap";
|
||||||
|
|
||||||
@@ -316,12 +311,7 @@ void Page::ResetProgressBar() {
|
|||||||
|
|
||||||
void Page::WriteProtect(bool read_only) {
|
void Page::WriteProtect(bool read_only) {
|
||||||
ASSERT(!is_image());
|
ASSERT(!is_image());
|
||||||
#if defined(DART_INCLUDE_SIMULATOR)
|
if (is_executable() && read_only) {
|
||||||
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.
|
// Handle making code executable in a special way.
|
||||||
memory_->WriteProtectCode();
|
memory_->WriteProtectCode();
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -76,10 +76,20 @@ class VirtualMemory {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DART_FORCE_INLINE static bool ExecutesGeneratedCode() {
|
||||||
|
#if defined(DART_PRECOMPILER) && !defined(TESTING)
|
||||||
|
return false; // I.e., gen_snapshot.
|
||||||
|
#else
|
||||||
|
return true;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Write protect a chunk of machine code which is currently writable.
|
// Write protect a chunk of machine code which is currently writable.
|
||||||
DART_FORCE_INLINE static void WriteProtectCode(void* address, intptr_t size) {
|
DART_FORCE_INLINE static void WriteProtectCode(void* address, intptr_t size) {
|
||||||
Protect(address, size,
|
Protect(address, size,
|
||||||
ShouldDualMapExecutablePages() ? kReadOnly : kReadExecute);
|
ShouldDualMapExecutablePages() || !ExecutesGeneratedCode()
|
||||||
|
? kReadOnly
|
||||||
|
: kReadExecute);
|
||||||
}
|
}
|
||||||
DART_FORCE_INLINE void WriteProtectCode() const {
|
DART_FORCE_INLINE void WriteProtectCode() const {
|
||||||
WriteProtectCode(address(), size());
|
WriteProtectCode(address(), size());
|
||||||
|
|||||||
@@ -151,6 +151,12 @@ VirtualMemory* VirtualMemory::AllocateAligned(intptr_t size,
|
|||||||
ASSERT(Utils::IsPowerOfTwo(alignment));
|
ASSERT(Utils::IsPowerOfTwo(alignment));
|
||||||
ASSERT(Utils::IsAligned(alignment, page_size_));
|
ASSERT(Utils::IsAligned(alignment, page_size_));
|
||||||
|
|
||||||
|
// Ignore executable for gen_snapshot/simulator, but still let the heap
|
||||||
|
// track code and data pages separately.
|
||||||
|
if (!VirtualMemory::ExecutesGeneratedCode()) {
|
||||||
|
is_executable = false;
|
||||||
|
}
|
||||||
|
|
||||||
const zx_vm_option_t align_flag = Utils::ShiftForPowerOfTwo(alignment)
|
const zx_vm_option_t align_flag = Utils::ShiftForPowerOfTwo(alignment)
|
||||||
<< ZX_VM_ALIGN_BASE;
|
<< ZX_VM_ALIGN_BASE;
|
||||||
ASSERT((ZX_VM_ALIGN_1KB <= align_flag) && (align_flag <= ZX_VM_ALIGN_4GB));
|
ASSERT((ZX_VM_ALIGN_1KB <= align_flag) && (align_flag <= ZX_VM_ALIGN_4GB));
|
||||||
|
|||||||
@@ -621,6 +621,12 @@ VirtualMemory* VirtualMemory::AllocateAligned(intptr_t size,
|
|||||||
ASSERT(Utils::IsAligned(alignment, PageSize()));
|
ASSERT(Utils::IsAligned(alignment, PageSize()));
|
||||||
ASSERT(name != nullptr);
|
ASSERT(name != nullptr);
|
||||||
|
|
||||||
|
// Ignore executable for gen_snapshot/simulator, but still let the heap
|
||||||
|
// track code and data pages separately.
|
||||||
|
if (!VirtualMemory::ExecutesGeneratedCode()) {
|
||||||
|
is_executable = false;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(DART_COMPRESSED_POINTERS)
|
#if defined(DART_COMPRESSED_POINTERS)
|
||||||
if (is_compressed) {
|
if (is_compressed) {
|
||||||
RELEASE_ASSERT(!is_executable);
|
RELEASE_ASSERT(!is_executable);
|
||||||
|
|||||||
@@ -139,6 +139,12 @@ VirtualMemory* VirtualMemory::AllocateAligned(intptr_t size,
|
|||||||
ASSERT(Utils::IsPowerOfTwo(alignment));
|
ASSERT(Utils::IsPowerOfTwo(alignment));
|
||||||
ASSERT(Utils::IsAligned(alignment, PageSize()));
|
ASSERT(Utils::IsAligned(alignment, PageSize()));
|
||||||
|
|
||||||
|
// Ignore executable for gen_snapshot/simulator, but still let the heap
|
||||||
|
// track code and data pages separately.
|
||||||
|
if (!VirtualMemory::ExecutesGeneratedCode()) {
|
||||||
|
is_executable = false;
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(DART_COMPRESSED_POINTERS)
|
#if defined(DART_COMPRESSED_POINTERS)
|
||||||
if (is_compressed) {
|
if (is_compressed) {
|
||||||
RELEASE_ASSERT(!is_executable);
|
RELEASE_ASSERT(!is_executable);
|
||||||
|
|||||||
Reference in New Issue
Block a user