diff options
author | ChiaHungDuan <chiahungduan@google.com> | 2024-04-01 10:09:40 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-01 10:09:40 -0700 |
commit | 92d0d6f6cb4099e651d066cd88dc0abfa6e612cf (patch) | |
tree | a9f487e32e3e244450b62f4dc7e6a0ef4edca026 | |
parent | 55b74030a4c75f25be901522fe595d7233fad76d (diff) | |
download | llvm-92d0d6f6cb4099e651d066cd88dc0abfa6e612cf.zip llvm-92d0d6f6cb4099e651d066cd88dc0abfa6e612cf.tar.gz llvm-92d0d6f6cb4099e651d066cd88dc0abfa6e612cf.tar.bz2 |
[scudo] Do a M_PURGE call before changing release interval on Android (#87110)
-rw-r--r-- | compiler-rt/lib/scudo/standalone/wrappers_c.inc | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler-rt/lib/scudo/standalone/wrappers_c.inc b/compiler-rt/lib/scudo/standalone/wrappers_c.inc index 56d8ef2..21d5b7a 100644 --- a/compiler-rt/lib/scudo/standalone/wrappers_c.inc +++ b/compiler-rt/lib/scudo/standalone/wrappers_c.inc @@ -247,6 +247,11 @@ void SCUDO_PREFIX(malloc_postinit)() { INTERFACE WEAK int SCUDO_PREFIX(mallopt)(int param, int value) { if (param == M_DECAY_TIME) { if (SCUDO_ANDROID) { + // Before changing the interval, reset the memory usage status by doing a + // M_PURGE call so that we can minimize the impact of any unreleased pages + // introduced by interval transition. + SCUDO_ALLOCATOR.releaseToOS(scudo::ReleaseToOS::Force); + if (value == 0) { // Will set the release values to their minimum values. value = INT32_MIN; |