Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(359)

Side by Side Diff: src/compiler/wasm-compiler.cc

Issue 2929853003: Fix use of history timers in background threads. (Closed)
Patch Set: Make explicit when async_counters is needed. Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/compiler/wasm-compiler.h ('k') | src/counters.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/wasm-compiler.h" 5 #include "src/compiler/wasm-compiler.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "src/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/base/optional.h" 10 #include "src/base/optional.h"
(...skipping 3926 matching lines...) Expand 10 before | Expand all | Expand 10 after
3937 DCHECK(name_len > 0 && name_len < name_vector.length()); 3937 DCHECK(name_len > 0 && name_len < name_vector.length());
3938 3938
3939 char* index_name = zone->NewArray<char>(name_len); 3939 char* index_name = zone->NewArray<char>(name_len);
3940 memcpy(index_name, name_vector.start(), name_len); 3940 memcpy(index_name, name_vector.start(), name_len);
3941 return Vector<const char>(index_name, name_len); 3941 return Vector<const char>(index_name, name_len);
3942 } 3942 }
3943 } // namespace 3943 } // namespace
3944 3944
3945 WasmCompilationUnit::WasmCompilationUnit(Isolate* isolate, 3945 WasmCompilationUnit::WasmCompilationUnit(Isolate* isolate,
3946 wasm::ModuleBytesEnv* module_env, 3946 wasm::ModuleBytesEnv* module_env,
3947 const wasm::WasmFunction* function, 3947 const wasm::WasmFunction* function)
3948 bool is_sync)
3949 : WasmCompilationUnit( 3948 : WasmCompilationUnit(
3950 isolate, &module_env->module_env, 3949 isolate, &module_env->module_env,
3951 wasm::FunctionBody{ 3950 wasm::FunctionBody{
3952 function->sig, module_env->wire_bytes.start(), 3951 function->sig, module_env->wire_bytes.start(),
3953 module_env->wire_bytes.start() + function->code.offset(), 3952 module_env->wire_bytes.start() + function->code.offset(),
3954 module_env->wire_bytes.start() + function->code.end_offset()}, 3953 module_env->wire_bytes.start() + function->code.end_offset()},
3955 module_env->wire_bytes.GetNameOrNull(function), function->func_index, 3954 module_env->wire_bytes.GetNameOrNull(function),
3956 is_sync) {} 3955 function->func_index) {}
3957 3956
3958 WasmCompilationUnit::WasmCompilationUnit(Isolate* isolate, 3957 WasmCompilationUnit::WasmCompilationUnit(Isolate* isolate,
3959 wasm::ModuleEnv* module_env, 3958 wasm::ModuleEnv* module_env,
3960 wasm::FunctionBody body, 3959 wasm::FunctionBody body,
3961 wasm::WasmName name, int index, 3960 wasm::WasmName name, int index)
3962 bool is_sync)
3963 : isolate_(isolate), 3961 : isolate_(isolate),
3964 module_env_(module_env), 3962 module_env_(module_env),
3965 func_body_(body), 3963 func_body_(body),
3966 func_name_(name), 3964 func_name_(name),
3967 is_sync_(is_sync),
3968 centry_stub_(CEntryStub(isolate, 1).GetCode()), 3965 centry_stub_(CEntryStub(isolate, 1).GetCode()),
3969 func_index_(index) {} 3966 func_index_(index) {}
3970 3967
3971 void WasmCompilationUnit::ExecuteCompilation() { 3968 void WasmCompilationUnit::ExecuteCompilation() {
3972 // TODO(karlschimpf): Make this work when asynchronous. 3969 HistogramTimerScope wasm_compile_function_time_scope(
3973 // https://bugs.chromium.org/p/v8/issues/detail?id=6361 3970 isolate_->counters()->wasm_compile_function_time());
3974 base::Optional<HistogramTimerScope> wasm_compile_function_time_scope;
3975 if (is_sync_) {
3976 wasm_compile_function_time_scope.emplace(
3977 isolate_->counters()->wasm_compile_function_time());
3978 }
3979 3971
3980 if (FLAG_trace_wasm_compiler) { 3972 if (FLAG_trace_wasm_compiler) {
3981 if (func_name_.start() != nullptr) { 3973 if (func_name_.start() != nullptr) {
3982 PrintF("Compiling wasm function %d:'%.*s'\n\n", func_index(), 3974 PrintF("Compiling wasm function %d:'%.*s'\n\n", func_index(),
3983 func_name_.length(), func_name_.start()); 3975 func_name_.length(), func_name_.start());
3984 } else { 3976 } else {
3985 PrintF("Compiling wasm function %d:<unnamed>\n\n", func_index()); 3977 PrintF("Compiling wasm function %d:<unnamed>\n\n", func_index());
3986 } 3978 }
3987 } 3979 }
3988 3980
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
4027 isolate_, compilation_zone_.get(), 4019 isolate_, compilation_zone_.get(),
4028 Code::ComputeFlags(Code::WASM_FUNCTION))); 4020 Code::ComputeFlags(Code::WASM_FUNCTION)));
4029 ZoneVector<trap_handler::ProtectedInstructionData> protected_instructions( 4021 ZoneVector<trap_handler::ProtectedInstructionData> protected_instructions(
4030 compilation_zone_.get()); 4022 compilation_zone_.get());
4031 4023
4032 job_.reset(Pipeline::NewWasmCompilationJob( 4024 job_.reset(Pipeline::NewWasmCompilationJob(
4033 info_.get(), jsgraph_, descriptor, source_positions, 4025 info_.get(), jsgraph_, descriptor, source_positions,
4034 &protected_instructions, !module_env_->module->is_wasm())); 4026 &protected_instructions, !module_env_->module->is_wasm()));
4035 ok_ = job_->ExecuteJob() == CompilationJob::SUCCEEDED; 4027 ok_ = job_->ExecuteJob() == CompilationJob::SUCCEEDED;
4036 // TODO(bradnelson): Improve histogram handling of size_t. 4028 // TODO(bradnelson): Improve histogram handling of size_t.
4037 if (is_sync_) 4029 isolate_->counters()->wasm_compile_function_peak_memory_bytes()->AddSample(
4038 // TODO(karlschimpf): Make this work when asynchronous. 4030 static_cast<int>(jsgraph_->graph()->zone()->allocation_size()));
4039 // https://bugs.chromium.org/p/v8/issues/detail?id=6361
4040 isolate_->counters()
4041 ->wasm_compile_function_peak_memory_bytes()
4042 ->AddSample(
4043 static_cast<int>(jsgraph_->graph()->zone()->allocation_size()));
4044 4031
4045 if (FLAG_trace_wasm_decode_time) { 4032 if (FLAG_trace_wasm_decode_time) {
4046 double pipeline_ms = pipeline_timer.Elapsed().InMillisecondsF(); 4033 double pipeline_ms = pipeline_timer.Elapsed().InMillisecondsF();
4047 PrintF( 4034 PrintF(
4048 "wasm-compilation phase 1 ok: %u bytes, %0.3f ms decode, %zu nodes, " 4035 "wasm-compilation phase 1 ok: %u bytes, %0.3f ms decode, %zu nodes, "
4049 "%0.3f ms pipeline\n", 4036 "%0.3f ms pipeline\n",
4050 static_cast<unsigned>(func_body_.end - func_body_.start), decode_ms, 4037 static_cast<unsigned>(func_body_.end - func_body_.start), decode_ms,
4051 node_count, pipeline_ms); 4038 node_count, pipeline_ms);
4052 } 4039 }
4053 // The graph zone is about to get out of scope. Avoid invalid references. 4040 // The graph zone is about to get out of scope. Avoid invalid references.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
4110 wasm::ErrorThrower* thrower, Isolate* isolate, 4097 wasm::ErrorThrower* thrower, Isolate* isolate,
4111 wasm::ModuleBytesEnv* module_env, const wasm::WasmFunction* function) { 4098 wasm::ModuleBytesEnv* module_env, const wasm::WasmFunction* function) {
4112 WasmCompilationUnit unit(isolate, module_env, function); 4099 WasmCompilationUnit unit(isolate, module_env, function);
4113 unit.ExecuteCompilation(); 4100 unit.ExecuteCompilation();
4114 return unit.FinishCompilation(thrower); 4101 return unit.FinishCompilation(thrower);
4115 } 4102 }
4116 4103
4117 } // namespace compiler 4104 } // namespace compiler
4118 } // namespace internal 4105 } // namespace internal
4119 } // namespace v8 4106 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/wasm-compiler.h ('k') | src/counters.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698