| Index: src/compiler/wasm-compiler.cc
|
| diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc
|
| index 06377336c864ba7c91f7aca69f7dcaababb96b9c..a1864c6aa06e32f52b4f9f5573bfd4f642cdc9eb 100644
|
| --- a/src/compiler/wasm-compiler.cc
|
| +++ b/src/compiler/wasm-compiler.cc
|
| @@ -3937,24 +3937,27 @@ Vector<const char> GetDebugName(Zone* zone, wasm::WasmName name, int index) {
|
|
|
| WasmCompilationUnit::WasmCompilationUnit(Isolate* isolate,
|
| wasm::ModuleBytesEnv* module_env,
|
| - const wasm::WasmFunction* function)
|
| + const wasm::WasmFunction* function,
|
| + bool is_sync)
|
| : WasmCompilationUnit(
|
| isolate, &module_env->module_env,
|
| wasm::FunctionBody{
|
| function->sig, module_env->wire_bytes.start(),
|
| module_env->wire_bytes.start() + function->code_start_offset,
|
| module_env->wire_bytes.start() + function->code_end_offset},
|
| - module_env->wire_bytes.GetNameOrNull(function),
|
| - function->func_index) {}
|
| + module_env->wire_bytes.GetNameOrNull(function), function->func_index,
|
| + is_sync) {}
|
|
|
| WasmCompilationUnit::WasmCompilationUnit(Isolate* isolate,
|
| wasm::ModuleEnv* module_env,
|
| wasm::FunctionBody body,
|
| - wasm::WasmName name, int index)
|
| + wasm::WasmName name, int index,
|
| + bool is_sync)
|
| : isolate_(isolate),
|
| module_env_(module_env),
|
| func_body_(body),
|
| func_name_(name),
|
| + is_sync_(is_sync),
|
| graph_zone_(new Zone(isolate->allocator(), ZONE_NAME)),
|
| jsgraph_(new (graph_zone()) JSGraph(
|
| isolate, new (graph_zone()) Graph(graph_zone()),
|
| @@ -3982,9 +3985,18 @@ void WasmCompilationUnit::InitializeHandles() {
|
|
|
| void WasmCompilationUnit::ExecuteCompilation() {
|
| DCHECK(handles_initialized_);
|
| - // TODO(ahaas): The counters are not thread-safe at the moment.
|
| - // HistogramTimerScope wasm_compile_function_time_scope(
|
| - // isolate_->counters()->wasm_compile_function_time());
|
| + if (is_sync_) {
|
| + // TODO(karlschimpf): Make this work when asynchronous.
|
| + // https://bugs.chromium.org/p/v8/issues/detail?id=6361
|
| + HistogramTimerScope wasm_compile_function_time_scope(
|
| + isolate_->counters()->wasm_compile_function_time());
|
| + ExecuteCompilationInternal();
|
| + return;
|
| + }
|
| + ExecuteCompilationInternal();
|
| +}
|
| +
|
| +void WasmCompilationUnit::ExecuteCompilationInternal() {
|
| if (FLAG_trace_wasm_compiler) {
|
| if (func_name_.start() != nullptr) {
|
| PrintF("Compiling WASM function %d:'%.*s'\n\n", func_index(),
|
| @@ -4023,10 +4035,11 @@ void WasmCompilationUnit::ExecuteCompilation() {
|
| !module_env_->module->is_wasm()));
|
| ok_ = job_->ExecuteJob() == CompilationJob::SUCCEEDED;
|
| // TODO(bradnelson): Improve histogram handling of size_t.
|
| - // TODO(ahaas): The counters are not thread-safe at the moment.
|
| - // isolate_->counters()->wasm_compile_function_peak_memory_bytes()
|
| - // ->AddSample(
|
| - // static_cast<int>(jsgraph->graph()->zone()->allocation_size()));
|
| + if (is_sync_)
|
| + // TODO(karlschimpf): Make this work when asynchronous.
|
| + // https://bugs.chromium.org/p/v8/issues/detail?id=6361
|
| + isolate_->counters()->wasm_compile_function_peak_memory_bytes()->AddSample(
|
| + static_cast<int>(jsgraph_->graph()->zone()->allocation_size()));
|
|
|
| if (FLAG_trace_wasm_decode_time) {
|
| double pipeline_ms = pipeline_timer.Elapsed().InMillisecondsF();
|
|
|