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

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

Issue 2061623002: Introduce JIT code events dispatcher for the isolate. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 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
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/elapsed-timer.h"
10 #include "src/base/platform/platform.h" 10 #include "src/base/platform/platform.h"
(...skipping 12 matching lines...) Expand all
23 #include "src/compiler/machine-operator.h" 23 #include "src/compiler/machine-operator.h"
24 #include "src/compiler/node-matchers.h" 24 #include "src/compiler/node-matchers.h"
25 #include "src/compiler/pipeline.h" 25 #include "src/compiler/pipeline.h"
26 #include "src/compiler/source-position.h" 26 #include "src/compiler/source-position.h"
27 #include "src/compiler/zone-pool.h" 27 #include "src/compiler/zone-pool.h"
28 28
29 #include "src/code-factory.h" 29 #include "src/code-factory.h"
30 #include "src/code-stubs.h" 30 #include "src/code-stubs.h"
31 #include "src/factory.h" 31 #include "src/factory.h"
32 #include "src/log-inl.h" 32 #include "src/log-inl.h"
33 #include "src/profiler/cpu-profiler.h"
34 33
35 #include "src/wasm/ast-decoder.h" 34 #include "src/wasm/ast-decoder.h"
36 #include "src/wasm/wasm-module.h" 35 #include "src/wasm/wasm-module.h"
37 #include "src/wasm/wasm-opcodes.h" 36 #include "src/wasm/wasm-opcodes.h"
38 37
39 // TODO(titzer): pull WASM_64 up to a common header. 38 // TODO(titzer): pull WASM_64 up to a common header.
40 #if !V8_TARGET_ARCH_32_BIT || V8_TARGET_ARCH_X64 39 #if !V8_TARGET_ARCH_32_BIT || V8_TARGET_ARCH_X64
41 #define WASM_64 1 40 #define WASM_64 1
42 #else 41 #else
43 #define WASM_64 0 42 #define WASM_64 0
(...skipping 2894 matching lines...) Expand 10 before | Expand all | Expand 10 after
2938 } 2937 }
2939 2938
2940 void WasmGraphBuilder::SetSourcePosition(Node* node, 2939 void WasmGraphBuilder::SetSourcePosition(Node* node,
2941 wasm::WasmCodePosition position) { 2940 wasm::WasmCodePosition position) {
2942 DCHECK_NE(position, wasm::kNoCodePosition); 2941 DCHECK_NE(position, wasm::kNoCodePosition);
2943 compiler::SourcePosition pos(position); 2942 compiler::SourcePosition pos(position);
2944 if (source_position_table_) 2943 if (source_position_table_)
2945 source_position_table_->SetSourcePosition(node, pos); 2944 source_position_table_->SetSourcePosition(node, pos);
2946 } 2945 }
2947 2946
2948 static void RecordFunctionCompilation(Logger::LogEventsAndTags tag, 2947 static void RecordFunctionCompilation(CodeEventListener::LogEventsAndTags tag,
2949 CompilationInfo* info, 2948 CompilationInfo* info,
2950 const char* message, uint32_t index, 2949 const char* message, uint32_t index,
2951 wasm::WasmName func_name) { 2950 wasm::WasmName func_name) {
2952 Isolate* isolate = info->isolate(); 2951 Isolate* isolate = info->isolate();
2953 if (isolate->logger()->is_logging_code_events() || isolate->is_profiling()) { 2952 if (isolate->logger()->is_logging_code_events() || isolate->is_profiling()) {
2954 ScopedVector<char> buffer(128); 2953 ScopedVector<char> buffer(128);
2955 SNPrintF(buffer, "%s#%d:%.*s", message, index, func_name.length(), 2954 SNPrintF(buffer, "%s#%d:%.*s", message, index, func_name.length(),
2956 func_name.start()); 2955 func_name.start());
2957 Handle<String> name_str = 2956 Handle<String> name_str =
2958 isolate->factory()->NewStringFromAsciiChecked(buffer.start()); 2957 isolate->factory()->NewStringFromAsciiChecked(buffer.start());
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
3041 if (FLAG_print_opt_code && !code.is_null()) { 3040 if (FLAG_print_opt_code && !code.is_null()) {
3042 OFStream os(stdout); 3041 OFStream os(stdout);
3043 code->Disassemble(buffer.start(), os); 3042 code->Disassemble(buffer.start(), os);
3044 } 3043 }
3045 #endif 3044 #endif
3046 if (debugging) { 3045 if (debugging) {
3047 buffer.Dispose(); 3046 buffer.Dispose();
3048 } 3047 }
3049 3048
3050 RecordFunctionCompilation( 3049 RecordFunctionCompilation(
3051 Logger::FUNCTION_TAG, &info, "js-to-wasm", index, 3050 CodeEventListener::FUNCTION_TAG, &info, "js-to-wasm", index,
3052 module->module->GetName(func->name_offset, func->name_length)); 3051 module->module->GetName(func->name_offset, func->name_length));
3053 // Set the JSFunction's machine code. 3052 // Set the JSFunction's machine code.
3054 function->set_code(*code); 3053 function->set_code(*code);
3055 } 3054 }
3056 return function; 3055 return function;
3057 } 3056 }
3058 3057
3059 Handle<Code> CompileWasmToJSWrapper(Isolate* isolate, wasm::ModuleEnv* module, 3058 Handle<Code> CompileWasmToJSWrapper(Isolate* isolate, wasm::ModuleEnv* module,
3060 Handle<JSFunction> function, 3059 Handle<JSFunction> function,
3061 wasm::FunctionSig* sig, 3060 wasm::FunctionSig* sig,
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
3114 #ifdef ENABLE_DISASSEMBLER 3113 #ifdef ENABLE_DISASSEMBLER
3115 if (FLAG_print_opt_code && !code.is_null()) { 3114 if (FLAG_print_opt_code && !code.is_null()) {
3116 OFStream os(stdout); 3115 OFStream os(stdout);
3117 code->Disassemble(buffer.start(), os); 3116 code->Disassemble(buffer.start(), os);
3118 } 3117 }
3119 #endif 3118 #endif
3120 if (debugging) { 3119 if (debugging) {
3121 buffer.Dispose(); 3120 buffer.Dispose();
3122 } 3121 }
3123 3122
3124 RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, "wasm-to-js", 0, 3123 RecordFunctionCompilation(CodeEventListener::FUNCTION_TAG, &info,
3125 module_name); 3124 "wasm-to-js", 0, module_name);
3126 } 3125 }
3127 return code; 3126 return code;
3128 } 3127 }
3129 3128
3130 SourcePositionTable* WasmCompilationUnit::BuildGraphForWasmFunction( 3129 SourcePositionTable* WasmCompilationUnit::BuildGraphForWasmFunction(
3131 double* decode_ms) { 3130 double* decode_ms) {
3132 base::ElapsedTimer decode_timer; 3131 base::ElapsedTimer decode_timer;
3133 if (FLAG_trace_wasm_decode_time) { 3132 if (FLAG_trace_wasm_decode_time) {
3134 decode_timer.Start(); 3133 decode_timer.Start();
3135 } 3134 }
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
3279 return Handle<Code>::null(); 3278 return Handle<Code>::null();
3280 } 3279 }
3281 base::ElapsedTimer compile_timer; 3280 base::ElapsedTimer compile_timer;
3282 if (FLAG_trace_wasm_decode_time) { 3281 if (FLAG_trace_wasm_decode_time) {
3283 compile_timer.Start(); 3282 compile_timer.Start();
3284 } 3283 }
3285 Handle<Code> code = info_.code(); 3284 Handle<Code> code = info_.code();
3286 DCHECK(!code.is_null()); 3285 DCHECK(!code.is_null());
3287 3286
3288 RecordFunctionCompilation( 3287 RecordFunctionCompilation(
3289 Logger::FUNCTION_TAG, &info_, "WASM_function", function_->func_index, 3288 CodeEventListener::FUNCTION_TAG, &info_, "WASM_function",
3289 function_->func_index,
3290 module_env_->module->GetName(function_->name_offset, 3290 module_env_->module->GetName(function_->name_offset,
3291 function_->name_length)); 3291 function_->name_length));
3292 3292
3293 if (FLAG_trace_wasm_decode_time) { 3293 if (FLAG_trace_wasm_decode_time) {
3294 double compile_ms = compile_timer.Elapsed().InMillisecondsF(); 3294 double compile_ms = compile_timer.Elapsed().InMillisecondsF();
3295 PrintF("wasm-code-generation ok: %d bytes, %0.3f ms code generation\n", 3295 PrintF("wasm-code-generation ok: %d bytes, %0.3f ms code generation\n",
3296 static_cast<int>(function_->code_end_offset - 3296 static_cast<int>(function_->code_end_offset -
3297 function_->code_start_offset), 3297 function_->code_start_offset),
3298 compile_ms); 3298 compile_ms);
3299 } 3299 }
3300 3300
3301 return code; 3301 return code;
3302 } 3302 }
3303 3303
3304 } // namespace compiler 3304 } // namespace compiler
3305 } // namespace internal 3305 } // namespace internal
3306 } // namespace v8 3306 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler.cc ('k') | src/deoptimizer.cc » ('j') | src/isolate.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698