Serializer: Cache FlagList::Hash result.
R=vogelheim@chromium.org Review URL: https://codereview.chromium.org/1011703003 Cr-Commit-Position: refs/heads/master@{#27234}
This commit is contained in:
parent
d4cd05e6df
commit
d74f5c6f09
23
src/flags.cc
23
src/flags.cc
@ -543,15 +543,10 @@ void FlagList::PrintHelp() {
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
void FlagList::EnforceFlagImplications() {
|
||||
#define FLAG_MODE_DEFINE_IMPLICATIONS
|
||||
#include "src/flag-definitions.h"
|
||||
#undef FLAG_MODE_DEFINE_IMPLICATIONS
|
||||
}
|
||||
static uint32_t flag_hash = 0;
|
||||
|
||||
|
||||
uint32_t FlagList::Hash() {
|
||||
void ComputeFlagListHash() {
|
||||
std::ostringstream modified_args_as_string;
|
||||
#ifdef DEBUG
|
||||
modified_args_as_string << "debug";
|
||||
@ -564,7 +559,19 @@ uint32_t FlagList::Hash() {
|
||||
}
|
||||
}
|
||||
std::string args(modified_args_as_string.str());
|
||||
return static_cast<uint32_t>(
|
||||
flag_hash = static_cast<uint32_t>(
|
||||
base::hash_range(args.c_str(), args.c_str() + args.length()));
|
||||
}
|
||||
|
||||
|
||||
// static
|
||||
void FlagList::EnforceFlagImplications() {
|
||||
#define FLAG_MODE_DEFINE_IMPLICATIONS
|
||||
#include "src/flag-definitions.h"
|
||||
#undef FLAG_MODE_DEFINE_IMPLICATIONS
|
||||
ComputeFlagListHash();
|
||||
}
|
||||
|
||||
|
||||
uint32_t FlagList::Hash() { return flag_hash; }
|
||||
} } // namespace v8::internal
|
||||
|
@ -58,7 +58,8 @@ class FlagList {
|
||||
// Set flags as consequence of being implied by another flag.
|
||||
static void EnforceFlagImplications();
|
||||
|
||||
// Hash of current flags (to quickly determine flag changes).
|
||||
// Hash of flags (to quickly determine mismatching flag expectations).
|
||||
// This hash is calculated during V8::Initialize and cached.
|
||||
static uint32_t Hash();
|
||||
};
|
||||
|
||||
|
@ -1372,7 +1372,9 @@ TEST(SerializeToplevelFlagChange) {
|
||||
v8::ScriptCompiler::CachedData* cache = ProduceCache(source);
|
||||
|
||||
v8::Isolate* isolate2 = v8::Isolate::New();
|
||||
|
||||
FLAG_allow_natives_syntax = true; // Flag change should trigger cache reject.
|
||||
FlagList::EnforceFlagImplications();
|
||||
{
|
||||
v8::Isolate::Scope iscope(isolate2);
|
||||
v8::HandleScope scope(isolate2);
|
||||
|
Loading…
Reference in New Issue
Block a user