Add PartialLowEndModeOnMidRangeDevices flag: disable memory saving mode in V8 on devices with less than 1 GB of RAM.

This commit is contained in:
Carmelo Messina
2025-09-10 11:26:35 +02:00
parent 3b57b30304
commit 7bb128eb6f
@@ -7,8 +7,9 @@ adds a new flag in chrome://flags to re-enable the experiment
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
base/features.cc | 4 ++++
content/renderer/render_process_impl.cc | 9 +++++++++
.../Add-PartialLowEndModeOnMidRangeDevices-flag.inc | 12 ++++++++++++
2 files changed, 16 insertions(+)
3 files changed, 25 insertions(+)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc
diff --git a/base/features.cc b/base/features.cc
@@ -25,6 +26,36 @@ diff --git a/base/features.cc b/base/features.cc
void Init(EmitThreadControllerProfilerMetadata
emit_thread_controller_profiler_metadata) {
g_is_reduce_ppms_enabled.store(FeatureList::IsEnabled(kReducePPMs),
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc
--- a/content/renderer/render_process_impl.cc
+++ b/content/renderer/render_process_impl.cc
@@ -7,6 +7,7 @@
#pragma allow_unsafe_libc_calls
#endif
+#include "base/features.h"
#include "content/renderer/render_process_impl.h"
#include "build/build_config.h"
@@ -127,10 +128,18 @@ RenderProcessImpl::RenderProcessImpl()
base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kDisallowV8FeatureFlagOverrides);
if (!disallow_v8_feature_flag_overrides) {
+#if BUILDFLAG(IS_ANDROID)
+ if (base::SysInfo::IsLowEndDevice()
+ && base::FeatureList::IsEnabled(base::features::kPartialLowEndModeOnMidRangeDevices)) {
+ std::string_view optimize_flag("--optimize-for-size");
+ v8::V8::SetFlagsFromString(optimize_flag.data(), optimize_flag.size());
+ }
+#else
if (base::SysInfo::IsLowEndDevice()) {
std::string_view optimize_flag("--optimize-for-size");
v8::V8::SetFlagsFromString(optimize_flag.data(), optimize_flag.size());
}
+#endif
////////////////////////////////////////////////////////////////////////////
// V8 flags are typically set in gin/v8_initializer.cc. Only those flags
diff --git a/cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc b/cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc
new file mode 100644
--- /dev/null