[nci] Add a --isolate-script-cache-ageing flag

The NCI cache depends on the script cache (which is essentially a
SharedFunctionInfo cache, and the SFIs contain bytecode) to
deduplicate SFIs across native contexts. NCI caching does not work
without script caching. Thus the lifetimes of both caches should
match; in particular, disabling cache ageing for NCI is only effective
if script cache ageing is also disabled.

This CL adds an --isolate-script-cache-ageing flag. It's separate from
the --turbo-nci-cache-ageing flag s.t. we can disable script cache
ageing *without NCI* for benchmarking purposes.

Future work: Good ageing heuristics for both script and nci caches.

Bug: v8:8888
Change-Id: Ia5546feeced5821a538d97db1bb8f5bb92528114
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2452471
Auto-Submit: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#70339}
This commit is contained in:
Jakob Gruber 2020-10-06 12:32:46 +02:00 committed by Commit Bot
parent 24b3c1610f
commit af118269b5
2 changed files with 7 additions and 1 deletions

View File

@ -72,7 +72,9 @@ void CompilationSubCache::AgeCustom(CompilationSubCache* c) {
CompilationCacheTable::cast(c->tables_[0]).Age();
}
void CompilationCacheScript::Age() { AgeCustom(this); }
void CompilationCacheScript::Age() {
if (FLAG_isolate_script_cache_ageing) AgeCustom(this);
}
void CompilationCacheEval::Age() { AgeCustom(this); }
void CompilationCacheRegExp::Age() { AgeByGeneration(this); }
void CompilationCacheCode::Age() {

View File

@ -748,6 +748,10 @@ DEFINE_BOOL(turbo_nci_delayed_codegen, true,
// strategy.
DEFINE_BOOL(turbo_nci_cache_ageing, false,
"enable ageing of the NCI code cache.")
// TODO(jgruber,v8:8888): Remove this flag once we've settled on an ageing
// strategy.
DEFINE_BOOL(isolate_script_cache_ageing, true,
"enable ageing of the isolate script cache.")
// Favor memory over execution speed.
DEFINE_BOOL(optimize_for_size, false,