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

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

Issue 1779713007: [wasm] Move output of --trace-wasm-decode-time to wasm-compiler and include compile time. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 9 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 | « no previous file | src/wasm/ast-decoder.cc » ('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 "src/isolate-inl.h" 7 #include "src/isolate-inl.h"
8 8
9 #include "src/base/platform/elapsed-timer.h"
9 #include "src/base/platform/platform.h" 10 #include "src/base/platform/platform.h"
10 11
11 #include "src/compiler/access-builder.h" 12 #include "src/compiler/access-builder.h"
12 #include "src/compiler/change-lowering.h" 13 #include "src/compiler/change-lowering.h"
13 #include "src/compiler/common-operator.h" 14 #include "src/compiler/common-operator.h"
14 #include "src/compiler/diamond.h" 15 #include "src/compiler/diamond.h"
15 #include "src/compiler/graph.h" 16 #include "src/compiler/graph.h"
16 #include "src/compiler/graph-visualizer.h" 17 #include "src/compiler/graph-visualizer.h"
17 #include "src/compiler/instruction-selector.h" 18 #include "src/compiler/instruction-selector.h"
18 #include "src/compiler/int64-lowering.h" 19 #include "src/compiler/int64-lowering.h"
(...skipping 2378 matching lines...) Expand 10 before | Expand all | Expand 10 after
2397 module_name); 2398 module_name);
2398 } 2399 }
2399 return code; 2400 return code;
2400 } 2401 }
2401 2402
2402 2403
2403 // Helper function to compile a single function. 2404 // Helper function to compile a single function.
2404 Handle<Code> CompileWasmFunction(wasm::ErrorThrower& thrower, Isolate* isolate, 2405 Handle<Code> CompileWasmFunction(wasm::ErrorThrower& thrower, Isolate* isolate,
2405 wasm::ModuleEnv* module_env, 2406 wasm::ModuleEnv* module_env,
2406 const wasm::WasmFunction& function) { 2407 const wasm::WasmFunction& function) {
2407 if (FLAG_trace_wasm_compiler || FLAG_trace_wasm_decode_time) { 2408 if (FLAG_trace_wasm_compiler) {
2408 OFStream os(stdout); 2409 OFStream os(stdout);
2409 os << "Compiling WASM function " 2410 os << "Compiling WASM function "
2410 << wasm::WasmFunctionName(&function, module_env) << std::endl; 2411 << wasm::WasmFunctionName(&function, module_env) << std::endl;
2411 os << std::endl; 2412 os << std::endl;
2412 } 2413 }
2413 2414
2415 double decode_ms = 0;
2416 base::ElapsedTimer decode_timer;
2417 if (FLAG_trace_wasm_decode_time) {
2418 decode_timer.Start();
2419 }
2420
2414 // Create a TF graph during decoding. 2421 // Create a TF graph during decoding.
2415 Zone zone; 2422 Zone zone;
2416 Graph graph(&zone); 2423 Graph graph(&zone);
2417 CommonOperatorBuilder common(&zone); 2424 CommonOperatorBuilder common(&zone);
2418 MachineOperatorBuilder machine( 2425 MachineOperatorBuilder machine(
2419 &zone, MachineType::PointerRepresentation(), 2426 &zone, MachineType::PointerRepresentation(),
2420 InstructionSelector::SupportedMachineOperatorFlags()); 2427 InstructionSelector::SupportedMachineOperatorFlags());
2421 JSGraph jsgraph(isolate, &graph, &common, nullptr, nullptr, &machine); 2428 JSGraph jsgraph(isolate, &graph, &common, nullptr, nullptr, &machine);
2422 WasmGraphBuilder builder(&zone, &jsgraph, function.sig); 2429 WasmGraphBuilder builder(&zone, &jsgraph, function.sig);
2423 wasm::FunctionBody body = { 2430 wasm::FunctionBody body = {
(...skipping 10 matching lines...) Expand all
2434 // Add the function as another context for the exception 2441 // Add the function as another context for the exception
2435 ScopedVector<char> buffer(128); 2442 ScopedVector<char> buffer(128);
2436 wasm::WasmName name = 2443 wasm::WasmName name =
2437 module_env->module->GetName(function.name_offset, function.name_length); 2444 module_env->module->GetName(function.name_offset, function.name_length);
2438 SNPrintF(buffer, "Compiling WASM function #%d:%.*s failed:", 2445 SNPrintF(buffer, "Compiling WASM function #%d:%.*s failed:",
2439 function.func_index, name.length, name.name); 2446 function.func_index, name.length, name.name);
2440 thrower.Failed(buffer.start(), result); 2447 thrower.Failed(buffer.start(), result);
2441 return Handle<Code>::null(); 2448 return Handle<Code>::null();
2442 } 2449 }
2443 2450
2451 if (FLAG_trace_wasm_decode_time) {
2452 decode_ms = decode_timer.Elapsed().InMillisecondsF();
2453 }
2454
2455 base::ElapsedTimer compile_timer;
2456 if (FLAG_trace_wasm_decode_time) {
2457 compile_timer.Start();
2458 }
2444 // Run the compiler pipeline to generate machine code. 2459 // Run the compiler pipeline to generate machine code.
2445 CallDescriptor* descriptor = 2460 CallDescriptor* descriptor =
2446 wasm::ModuleEnv::GetWasmCallDescriptor(&zone, function.sig); 2461 wasm::ModuleEnv::GetWasmCallDescriptor(&zone, function.sig);
2447 if (machine.Is32()) { 2462 if (machine.Is32()) {
2448 descriptor = module_env->GetI32WasmCallDescriptor(&zone, descriptor); 2463 descriptor = module_env->GetI32WasmCallDescriptor(&zone, descriptor);
2449 } 2464 }
2450 Code::Flags flags = Code::ComputeFlags(Code::WASM_FUNCTION); 2465 Code::Flags flags = Code::ComputeFlags(Code::WASM_FUNCTION);
2451 // add flags here if a meaningful name is helpful for debugging. 2466 // add flags here if a meaningful name is helpful for debugging.
2452 bool debugging = 2467 bool debugging =
2453 #if DEBUG 2468 #if DEBUG
(...skipping 18 matching lines...) Expand all
2472 if (debugging) { 2487 if (debugging) {
2473 buffer.Dispose(); 2488 buffer.Dispose();
2474 } 2489 }
2475 if (!code.is_null()) { 2490 if (!code.is_null()) {
2476 RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, "WASM_function", 2491 RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, "WASM_function",
2477 function.func_index, 2492 function.func_index,
2478 module_env->module->GetName( 2493 module_env->module->GetName(
2479 function.name_offset, function.name_length)); 2494 function.name_offset, function.name_length));
2480 } 2495 }
2481 2496
2497 if (FLAG_trace_wasm_decode_time) {
2498 double compile_ms = compile_timer.Elapsed().InMillisecondsF();
2499 PrintF(
2500 "wasm-compile ok: %d bytes, %0.3f ms decode, %0.3f ms compile\n",
2501 static_cast<int>(function.code_end_offset - function.code_start_offset),
2502 decode_ms, compile_ms);
2503 }
2482 return code; 2504 return code;
2483 } 2505 }
2484 2506
2485 2507
2486 } // namespace compiler 2508 } // namespace compiler
2487 } // namespace internal 2509 } // namespace internal
2488 } // namespace v8 2510 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | src/wasm/ast-decoder.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698