Commit 9c458346 authored by Nico Hartmann's avatar Nico Hartmann Committed by V8 LUCI CQ

Revert "[flags] Skip --random-seed in FlagList::Hash"

This reverts commit 9fe53c4f.

Reason for revert: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux64%20TSAN%20-%20isolates/17044/overview

Original change's description:
> [flags] Skip --random-seed in FlagList::Hash
>
> Node and friends use --random-seed to temporary reset the seed for
> predictable code-cache creation. To allow custom random seeds at runtime
> the flag is reset for encoding the FlagList::Hash in the snapshots.
>
> We will soon disallow changing flags via the API after V8 has been
> initialized. In order to make node work we will exclude --random-seed
> from the FlagList::Hash calculation.
>
> Drive-by-fix:
> * Lazily initialize flag_hash instead of calculating it after every call
>   to SetFlagsFromString / EnforceFlagImplications.
> * Simplify hash string source creation since out << flag now includes
>   the full flag information
>
> Bug: v8:12309
> Change-Id: I1a168f4702d8c4d160ff12fdbea881731e4ea8b6
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218159
> Reviewed-by: Marja Hölttä <marja@chromium.org>
> Commit-Queue: Camillo Bruni <cbruni@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#77345}

Bug: v8:12309
Change-Id: I5e431c3e3ccccaab2ef7aa025b51d42f837f08b9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3218979Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
Commit-Queue: Nico Hartmann <nicohartmann@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#77347}
parent aae22649
......@@ -796,16 +796,23 @@ static uint32_t flag_hash = 0;
void ComputeFlagListHash() {
std::ostringstream modified_args_as_string;
if (COMPRESS_POINTERS_BOOL) modified_args_as_string << "ptr-compr";
if (DEBUG_BOOL) modified_args_as_string << "debug";
for (const Flag& flag : flags) {
if (flag.IsDefault()) continue;
// We want to be able to flip --profile-deserialization without
// causing the code cache to get invalidated by this hash.
if (flag.PointsTo(&FLAG_profile_deserialization)) continue;
// Skip FLAG_random_seed to allow predictable code caching.
if (flag.PointsTo(&FLAG_random_seed)) continue;
modified_args_as_string << flag;
if (COMPRESS_POINTERS_BOOL) {
modified_args_as_string << "ptr-compr";
}
if (DEBUG_BOOL) {
modified_args_as_string << "debug";
}
for (size_t i = 0; i < num_flags; ++i) {
Flag* current = &flags[i];
if (current->PointsTo(&FLAG_profile_deserialization)) {
// We want to be able to flip --profile-deserialization without
// causing the code cache to get invalidated by this hash.
continue;
}
if (!current->IsDefault()) {
modified_args_as_string << i;
modified_args_as_string << *current;
}
}
std::string args(modified_args_as_string.str());
flag_hash = static_cast<uint32_t>(
......@@ -830,7 +837,6 @@ bool TriggerImplication(bool premise, const char* premise_name,
// static
void FlagList::EnforceFlagImplications() {
flag_hash = 0;
bool changed;
do {
changed = false;
......@@ -838,14 +844,10 @@ void FlagList::EnforceFlagImplications() {
#include "src/flags/flag-definitions.h" // NOLINT(build/include)
#undef FLAG_MODE_DEFINE_IMPLICATIONS
} while (changed);
ComputeFlagListHash();
}
uint32_t FlagList::Hash() {
if (flag_hash == 0) {
ComputeFlagListHash();
}
return flag_hash;
}
uint32_t FlagList::Hash() { return flag_hash; }
#undef FLAG_MODE_DEFINE
#undef FLAG_MODE_DEFINE_DEFAULTS
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment