From a972c5fcc1ffd4ead5ca9c90b4bd47256993ab78 Mon Sep 17 00:00:00 2001 From: athenian200 Date: Tue, 1 Oct 2019 21:36:29 -0500 Subject: MoonchildProductions#1251 - Part 7: All the posix_m* memory-related stuff, gathered together. https://bugzilla.mozilla.org/show_bug.cgi?id=1158445 https://bugzilla.mozilla.org/show_bug.cgi?id=963983 https://bugzilla.mozilla.org/show_bug.cgi?id=1542758 Solaris madvise and malign don't perfectly map to their POSIX counterparts, and some Linux versions (especially Android) don't define the POSIX counterparts at all, so options are limited. Ideally posix_madvise and posix_malign should be the safer and more portable options for all platforms. --- mfbt/Poison.cpp | 4 ++++ mfbt/tests/TestPoisonArea.cpp | 4 ++++ 2 files changed, 8 insertions(+) (limited to 'mfbt') diff --git a/mfbt/Poison.cpp b/mfbt/Poison.cpp index b2767011d5..7972dbea35 100644 --- a/mfbt/Poison.cpp +++ b/mfbt/Poison.cpp @@ -129,7 +129,11 @@ ReleaseRegion(void* aRegion, uintptr_t aSize) static bool ProbeRegion(uintptr_t aRegion, uintptr_t aSize) { +#ifdef XP_SOLARIS + if (posix_madvise(reinterpret_cast(aRegion), aSize, POSIX_MADV_NORMAL)) { +#else if (madvise(reinterpret_cast(aRegion), aSize, MADV_NORMAL)) { +#endif return true; } else { return false; diff --git a/mfbt/tests/TestPoisonArea.cpp b/mfbt/tests/TestPoisonArea.cpp index 6f1b61ed37..fb39ccf790 100644 --- a/mfbt/tests/TestPoisonArea.cpp +++ b/mfbt/tests/TestPoisonArea.cpp @@ -266,7 +266,11 @@ ReleaseRegion(void* aPage) static bool ProbeRegion(uintptr_t aPage) { +#ifdef XP_SOLARIS + return !!posix_madvise(reinterpret_cast(aPage), PageSize(), POSIX_MADV_NORMAL); +#else return !!madvise(reinterpret_cast(aPage), PageSize(), MADV_NORMAL); +#endif } static int -- cgit v1.2.3