[heap][flags] Add checks for invalid flag values

Add a way to declare constraints on flag values, that will be enforced during flag implication application.

Bug: 369224661
Change-Id: Ia4812105360bae625bd5b012807ee1426b45480f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/6172039
Commit-Queue: Omer Katz <omerkatz@chromium.org>
Reviewed-by: Nikolaos Papaspyrou <nikolaos@chromium.org>
Cr-Commit-Position: refs/heads/main@{#98092}
diff --git a/src/flags/flag-definitions.h b/src/flags/flag-definitions.h
index 16c4d0c..08db753 100644
--- a/src/flags/flag-definitions.h
+++ b/src/flags/flag-definitions.h
@@ -73,6 +73,8 @@
 #define DEFINE_GENERIC_IMPLICATION(whenflag, statement) \
   if (v8_flags.whenflag) statement;
 
+#define DEFINE_REQUIREMENT(statement) CHECK(statement);
+
 #define DEFINE_NEG_VALUE_IMPLICATION(whenflag, thenflag, value)    \
   changed |= TriggerImplication(!v8_flags.whenflag, "!" #whenflag, \
                                 &v8_flags.thenflag, #thenflag, value, false);
@@ -144,6 +146,10 @@
 #define DEFINE_DISABLE_FLAG_IMPLICATION(whenflag, thenflag)
 #endif
 
+#ifndef DEFINE_REQUIREMENT
+#define DEFINE_REQUIREMENT(statement)
+#endif
+
 #ifndef DEBUG_BOOL
 #error DEBUG_BOOL must be defined at this point.
 #endif  // DEBUG_BOOL
@@ -857,6 +863,7 @@
 DEFINE_UINT(minor_ms_max_new_space_capacity_mb, 72,
             "max new space capacity in MBs when using MinorMS. When pointer "
             "compression is disabled, twice the capacity is used.")
+DEFINE_REQUIREMENT(v8_flags.minor_ms_max_new_space_capacity_mb > 0)
 
 #if defined(ANDROID)
 #define DEFAULT_SCAVENGER_MAX_NEW_SPACE_CAPACITY_MB 8
@@ -867,6 +874,7 @@
             DEFAULT_SCAVENGER_MAX_NEW_SPACE_CAPACITY_MB,
             "max new space capacity in MBs when using Scavenger. When pointer "
             "compression is disabled, twice the capacity is used.")
+DEFINE_REQUIREMENT(v8_flags.scavenger_max_new_space_capacity_mb > 0)
 #undef DEFAULT_SCAVENGER_MAX_NEW_SPACE_CAPACITY_MB
 
 DEFINE_BOOL(trace_page_promotions, false, "trace page promotion decisions")
@@ -3448,6 +3456,7 @@
 #undef DEFINE_DISABLE_FLAG_IMPLICATION
 #undef DEFINE_WEAK_VALUE_IMPLICATION
 #undef DEFINE_GENERIC_IMPLICATION
+#undef DEFINE_REQUIREMENT
 #undef DEFINE_ALIAS_BOOL
 #undef DEFINE_ALIAS_INT
 #undef DEFINE_ALIAS_STRING