Add a flag for flushing icache for embedded builtins

It will be used in a Finch experiment to evaluate if icache flushing
helps with crashes on certain CPUs.

Bug: chromium:889460
Change-Id: I1218ce93db001833e29fdeca8fde3e863e26dfdd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267297
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#68545}
This commit is contained in:
Ulan Degenbaev 2020-06-25 16:51:59 +02:00 committed by Commit Bot
parent 15e54593de
commit 4bbf78f9b2
2 changed files with 7 additions and 0 deletions

View File

@ -25,6 +25,7 @@
#include "src/builtins/constants-table-builder.h" #include "src/builtins/constants-table-builder.h"
#include "src/codegen/assembler-inl.h" #include "src/codegen/assembler-inl.h"
#include "src/codegen/compilation-cache.h" #include "src/codegen/compilation-cache.h"
#include "src/codegen/flush-instruction-cache.h"
#include "src/common/ptr-compr.h" #include "src/common/ptr-compr.h"
#include "src/compiler-dispatcher/compiler-dispatcher.h" #include "src/compiler-dispatcher/compiler-dispatcher.h"
#include "src/compiler-dispatcher/optimizing-compile-dispatcher.h" #include "src/compiler-dispatcher/optimizing-compile-dispatcher.h"
@ -239,6 +240,10 @@ void Isolate::SetEmbeddedBlob(const uint8_t* blob, uint32_t blob_size) {
"cause is a debugging breakpoint set within builtin code."); "cause is a debugging breakpoint set within builtin code.");
} }
#endif // DEBUG #endif // DEBUG
if (FLAG_experimental_flush_embedded_blob_icache) {
FlushInstructionCache(const_cast<uint8_t*>(blob), blob_size);
}
} }
void Isolate::ClearEmbeddedBlob() { void Isolate::ClearEmbeddedBlob() {

View File

@ -1337,6 +1337,8 @@ DEFINE_BOOL(
"includes arguments for each function call in the error stack frames array") "includes arguments for each function call in the error stack frames array")
DEFINE_BOOL(adjust_os_scheduling_parameters, true, DEFINE_BOOL(adjust_os_scheduling_parameters, true,
"adjust OS specific scheduling params for the isolate") "adjust OS specific scheduling params for the isolate")
DEFINE_BOOL(experimental_flush_embedded_blob_icache, false,
"Used in an experiment to evaluate icache flushing on certain CPUs")
// runtime.cc // runtime.cc
DEFINE_BOOL(runtime_call_stats, false, "report runtime call counts and times") DEFINE_BOOL(runtime_call_stats, false, "report runtime call counts and times")