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

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

Issue 1911313002: Pass debug name as Vector instead of const char* (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@wasm-offset-table-1
Patch Set: rebase Created 4 years, 7 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 2734 matching lines...) Expand 10 before | Expand all | Expand 10 after
2745 module->GetFunctionSignature(index)->parameter_count()); 2745 module->GetFunctionSignature(index)->parameter_count());
2746 CallDescriptor* incoming = Linkage::GetJSCallDescriptor( 2746 CallDescriptor* incoming = Linkage::GetJSCallDescriptor(
2747 &zone, false, params + 1, CallDescriptor::kNoFlags); 2747 &zone, false, params + 1, CallDescriptor::kNoFlags);
2748 Code::Flags flags = Code::ComputeFlags(Code::JS_TO_WASM_FUNCTION); 2748 Code::Flags flags = Code::ComputeFlags(Code::JS_TO_WASM_FUNCTION);
2749 bool debugging = 2749 bool debugging =
2750 #if DEBUG 2750 #if DEBUG
2751 true; 2751 true;
2752 #else 2752 #else
2753 FLAG_print_opt_code || FLAG_trace_turbo || FLAG_trace_turbo_graph; 2753 FLAG_print_opt_code || FLAG_trace_turbo || FLAG_trace_turbo_graph;
2754 #endif 2754 #endif
2755 const char* func_name = "js-to-wasm"; 2755 Vector<const char> func_name = ArrayVector("js-to-wasm");
2756 2756
2757 static unsigned id = 0; 2757 static unsigned id = 0;
2758 Vector<char> buffer; 2758 Vector<char> buffer;
2759 if (debugging) { 2759 if (debugging) {
2760 buffer = Vector<char>::New(128); 2760 buffer = Vector<char>::New(128);
2761 SNPrintF(buffer, "js-to-wasm#%d", id); 2761 int chars = SNPrintF(buffer, "js-to-wasm#%d", id);
2762 func_name = buffer.start(); 2762 func_name = Vector<const char>::cast(buffer.SubVector(0, chars));
2763 } 2763 }
2764 2764
2765 CompilationInfo info(func_name, isolate, &zone, flags); 2765 CompilationInfo info(func_name, isolate, &zone, flags);
2766 Handle<Code> code = 2766 Handle<Code> code =
2767 Pipeline::GenerateCodeForTesting(&info, incoming, &graph); 2767 Pipeline::GenerateCodeForTesting(&info, incoming, &graph);
2768 #ifdef ENABLE_DISASSEMBLER 2768 #ifdef ENABLE_DISASSEMBLER
2769 if (FLAG_print_opt_code && !code.is_null()) { 2769 if (FLAG_print_opt_code && !code.is_null()) {
2770 OFStream os(stdout); 2770 OFStream os(stdout);
2771 code->Disassemble(buffer.start(), os); 2771 code->Disassemble(buffer.start(), os);
2772 } 2772 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2821 if (machine.Is32()) { 2821 if (machine.Is32()) {
2822 incoming = wasm::ModuleEnv::GetI32WasmCallDescriptor(&zone, incoming); 2822 incoming = wasm::ModuleEnv::GetI32WasmCallDescriptor(&zone, incoming);
2823 } 2823 }
2824 Code::Flags flags = Code::ComputeFlags(Code::WASM_TO_JS_FUNCTION); 2824 Code::Flags flags = Code::ComputeFlags(Code::WASM_TO_JS_FUNCTION);
2825 bool debugging = 2825 bool debugging =
2826 #if DEBUG 2826 #if DEBUG
2827 true; 2827 true;
2828 #else 2828 #else
2829 FLAG_print_opt_code || FLAG_trace_turbo || FLAG_trace_turbo_graph; 2829 FLAG_print_opt_code || FLAG_trace_turbo || FLAG_trace_turbo_graph;
2830 #endif 2830 #endif
2831 const char* func_name = "wasm-to-js"; 2831 Vector<const char> func_name = ArrayVector("wasm-to-js");
2832 static unsigned id = 0; 2832 static unsigned id = 0;
2833 Vector<char> buffer; 2833 Vector<char> buffer;
2834 if (debugging) { 2834 if (debugging) {
2835 buffer = Vector<char>::New(128); 2835 buffer = Vector<char>::New(128);
2836 SNPrintF(buffer, "wasm-to-js#%d", id); 2836 int chars = SNPrintF(buffer, "wasm-to-js#%d", id);
2837 func_name = buffer.start(); 2837 func_name = Vector<const char>::cast(buffer.SubVector(0, chars));
2838 } 2838 }
2839 2839
2840 CompilationInfo info(func_name, isolate, &zone, flags); 2840 CompilationInfo info(func_name, isolate, &zone, flags);
2841 code = Pipeline::GenerateCodeForTesting(&info, incoming, &graph, nullptr); 2841 code = Pipeline::GenerateCodeForTesting(&info, incoming, &graph, nullptr);
2842 #ifdef ENABLE_DISASSEMBLER 2842 #ifdef ENABLE_DISASSEMBLER
2843 if (FLAG_print_opt_code && !code.is_null()) { 2843 if (FLAG_print_opt_code && !code.is_null()) {
2844 OFStream os(stdout); 2844 OFStream os(stdout);
2845 code->Disassemble(buffer.start(), os); 2845 code->Disassemble(buffer.start(), os);
2846 } 2846 }
2847 #endif 2847 #endif
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
2948 descriptor); 2948 descriptor);
2949 } 2949 }
2950 Code::Flags flags = Code::ComputeFlags(Code::WASM_FUNCTION); 2950 Code::Flags flags = Code::ComputeFlags(Code::WASM_FUNCTION);
2951 // add flags here if a meaningful name is helpful for debugging. 2951 // add flags here if a meaningful name is helpful for debugging.
2952 bool debugging = 2952 bool debugging =
2953 #if DEBUG 2953 #if DEBUG
2954 true; 2954 true;
2955 #else 2955 #else
2956 FLAG_print_opt_code || FLAG_trace_turbo || FLAG_trace_turbo_graph; 2956 FLAG_print_opt_code || FLAG_trace_turbo || FLAG_trace_turbo_graph;
2957 #endif 2957 #endif
2958 const char* func_name = "wasm"; 2958 Vector<const char> func_name =
2959 module_env->module
2960 ->GetNameOrNull(function.name_offset, function.name_length)
2961 .toVec();
2959 Vector<char> buffer; 2962 Vector<char> buffer;
2960 if (debugging) { 2963 if (func_name.is_empty()) {
2961 buffer = Vector<char>::New(128); 2964 if (debugging) {
2962 wasm::WasmName name = 2965 buffer = Vector<char>::New(128);
2963 module_env->module->GetName(function.name_offset, function.name_length); 2966 int chars = SNPrintF(buffer, "WASM_function_#%d", function.func_index);
2964 SNPrintF(buffer, "WASM_function_#%d:%.*s", function.func_index, name.length, 2967 func_name = Vector<const char>::cast(buffer.SubVector(0, chars));
2965 name.name); 2968 } else {
2966 func_name = buffer.start(); 2969 func_name = ArrayVector("wasm");
2970 }
2967 } 2971 }
2968 CompilationInfo info(func_name, isolate, jsgraph->graph()->zone(), flags); 2972 CompilationInfo info(func_name, isolate, jsgraph->graph()->zone(), flags);
2969 compiler::ZonePool::Scope pipeline_zone_scope(&zone_pool); 2973 compiler::ZonePool::Scope pipeline_zone_scope(&zone_pool);
2970 Pipeline pipeline(&info); 2974 Pipeline pipeline(&info);
2971 pipeline.InitializeWasmCompilation(pipeline_zone_scope.zone(), &zone_pool, 2975 pipeline.InitializeWasmCompilation(pipeline_zone_scope.zone(), &zone_pool,
2972 jsgraph->graph(), source_positions); 2976 jsgraph->graph(), source_positions);
2973 Handle<Code> code; 2977 Handle<Code> code;
2974 if (pipeline.ExecuteWasmCompilation(descriptor)) { 2978 if (pipeline.ExecuteWasmCompilation(descriptor)) {
2975 code = pipeline.FinalizeWasmCompilation(descriptor); 2979 code = pipeline.FinalizeWasmCompilation(descriptor);
2976 } else { 2980 } else {
2977 code = Handle<Code>::null(); 2981 code = Handle<Code>::null();
2978 } 2982 }
2979 2983
2980 if (debugging) { 2984 buffer.Dispose();
2981 buffer.Dispose();
2982 }
2983 if (!code.is_null()) { 2985 if (!code.is_null()) {
2984 RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, "WASM_function", 2986 RecordFunctionCompilation(Logger::FUNCTION_TAG, &info, "WASM_function",
2985 function.func_index, 2987 function.func_index,
2986 module_env->module->GetName( 2988 module_env->module->GetName(
2987 function.name_offset, function.name_length)); 2989 function.name_offset, function.name_length));
2988 } 2990 }
2989 2991
2990 if (FLAG_trace_wasm_decode_time) { 2992 if (FLAG_trace_wasm_decode_time) {
2991 double compile_ms = compile_timer.Elapsed().InMillisecondsF(); 2993 double compile_ms = compile_timer.Elapsed().InMillisecondsF();
2992 PrintF( 2994 PrintF(
2993 "wasm-compile ok: %d bytes, %0.3f ms decode, %d nodes, %0.3f ms " 2995 "wasm-compile ok: %d bytes, %0.3f ms decode, %d nodes, %0.3f ms "
2994 "compile\n", 2996 "compile\n",
2995 static_cast<int>(function.code_end_offset - function.code_start_offset), 2997 static_cast<int>(function.code_end_offset - function.code_start_offset),
2996 decode_ms, static_cast<int>(jsgraph->graph()->NodeCount()), compile_ms); 2998 decode_ms, static_cast<int>(jsgraph->graph()->NodeCount()), compile_ms);
2997 } 2999 }
2998 // TODO(bradnelson): Improve histogram handling of size_t. 3000 // TODO(bradnelson): Improve histogram handling of size_t.
2999 isolate->counters()->wasm_compile_function_peak_memory_bytes()->AddSample( 3001 isolate->counters()->wasm_compile_function_peak_memory_bytes()->AddSample(
3000 static_cast<int>(jsgraph->graph()->zone()->allocation_size())); 3002 static_cast<int>(jsgraph->graph()->zone()->allocation_size()));
3001 graph_zone_scope.Destroy(); 3003 graph_zone_scope.Destroy();
3002 return code; 3004 return code;
3003 } 3005 }
3004 3006
3005 3007
3006 } // namespace compiler 3008 } // namespace compiler
3007 } // namespace internal 3009 } // namespace internal
3008 } // namespace v8 3010 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/pipeline.cc ('k') | src/vector.h » ('j') | src/wasm/wasm-opcodes.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698