Index: src/compiler/wasm-compiler.cc |
diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc |
index 0a13f98d8593f32e8990752d7d1a64451314ae6d..ecf05dc8fcc492575a79b5c3c03e138b1c18c6d1 100644 |
--- a/src/compiler/wasm-compiler.cc |
+++ b/src/compiler/wasm-compiler.cc |
@@ -2919,29 +2919,31 @@ void WasmGraphBuilder::SetSourcePosition(Node* node, |
} |
static void RecordFunctionCompilation(CodeEventListener::LogEventsAndTags tag, |
- CompilationInfo* info, |
+ Isolate* isolate, Handle<Code> code, |
const char* message, uint32_t index, |
- wasm::WasmName func_name) { |
- Isolate* isolate = info->isolate(); |
- if (isolate->logger()->is_logging_code_events() || isolate->is_profiling()) { |
- ScopedVector<char> buffer(128); |
- SNPrintF(buffer, "%s#%d:%.*s", message, index, func_name.length(), |
- func_name.start()); |
- Handle<String> name_str = |
- isolate->factory()->NewStringFromAsciiChecked(buffer.start()); |
- Handle<String> script_str = |
- isolate->factory()->NewStringFromAsciiChecked("(WASM)"); |
- Handle<Code> code = info->code(); |
- Handle<SharedFunctionInfo> shared = |
- isolate->factory()->NewSharedFunctionInfo(name_str, code, false); |
- PROFILE(isolate, CodeCreateEvent(tag, AbstractCode::cast(*code), *shared, |
- *script_str, 0, 0)); |
- } |
-} |
- |
-Handle<JSFunction> CompileJSToWasmWrapper( |
- Isolate* isolate, wasm::ModuleEnv* module, Handle<String> name, |
- Handle<Code> wasm_code, Handle<JSObject> module_object, uint32_t index) { |
+ const wasm::WasmName& module_name, |
+ const wasm::WasmName& func_name) { |
+ DCHECK(isolate->logger()->is_logging_code_events() || |
+ isolate->is_profiling()); |
+ |
+ ScopedVector<char> buffer(128); |
+ SNPrintF(buffer, "%s#%d:%.*s:%.*s", message, index, module_name.length(), |
+ module_name.start(), func_name.length(), func_name.start()); |
+ Handle<String> name_str = |
+ isolate->factory()->NewStringFromAsciiChecked(buffer.start()); |
+ Handle<String> script_str = |
+ isolate->factory()->NewStringFromAsciiChecked("(WASM)"); |
+ Handle<SharedFunctionInfo> shared = |
+ isolate->factory()->NewSharedFunctionInfo(name_str, code, false); |
+ PROFILE(isolate, CodeCreateEvent(tag, AbstractCode::cast(*code), *shared, |
+ *script_str, 0, 0)); |
+} |
+ |
+Handle<JSFunction> CompileJSToWasmWrapper(Isolate* isolate, |
+ wasm::ModuleEnv* module, |
+ Handle<String> name, |
+ Handle<Code> wasm_code, |
+ uint32_t index) { |
const wasm::WasmFunction* func = &module->module->functions[index]; |
//---------------------------------------------------------------------------- |
@@ -2954,7 +2956,6 @@ Handle<JSFunction> CompileJSToWasmWrapper( |
shared->set_internal_formal_parameter_count(params); |
Handle<JSFunction> function = isolate->factory()->NewFunction( |
isolate->wasm_function_map(), name, MaybeHandle<Code>()); |
- function->SetInternalField(0, *module_object); |
function->set_shared(*shared); |
//---------------------------------------------------------------------------- |
@@ -3020,9 +3021,13 @@ Handle<JSFunction> CompileJSToWasmWrapper( |
buffer.Dispose(); |
} |
- RecordFunctionCompilation( |
- CodeEventListener::FUNCTION_TAG, &info, "js-to-wasm", index, |
- module->module->GetName(func->name_offset, func->name_length)); |
+ if (isolate->logger()->is_logging_code_events() || |
+ isolate->is_profiling()) { |
+ RecordFunctionCompilation( |
+ CodeEventListener::FUNCTION_TAG, isolate, code, "js-to-wasm", index, |
+ wasm::WasmName("export"), |
+ module->module->GetName(func->name_offset, func->name_length)); |
+ } |
// Set the JSFunction's machine code. |
function->set_code(*code); |
} |
@@ -3031,9 +3036,9 @@ Handle<JSFunction> CompileJSToWasmWrapper( |
Handle<Code> CompileWasmToJSWrapper(Isolate* isolate, |
Handle<JSFunction> function, |
- wasm::FunctionSig* sig, |
- wasm::WasmName module_name, |
- wasm::WasmName function_name) { |
+ wasm::FunctionSig* sig, uint32_t index, |
+ Handle<String> import_module, |
+ MaybeHandle<String> import_function) { |
//---------------------------------------------------------------------------- |
// Create the Graph |
//---------------------------------------------------------------------------- |
@@ -3092,10 +3097,21 @@ Handle<Code> CompileWasmToJSWrapper(Isolate* isolate, |
if (debugging) { |
buffer.Dispose(); |
} |
- |
- RecordFunctionCompilation(CodeEventListener::FUNCTION_TAG, &info, |
- "wasm-to-js", 0, module_name); |
} |
+ if (isolate->logger()->is_logging_code_events() || isolate->is_profiling()) { |
+ const char* function_name = nullptr; |
+ int function_name_size = 0; |
+ if (!import_function.is_null()) { |
+ Handle<String> handle = import_function.ToHandleChecked(); |
+ function_name = handle->ToCString().get(); |
+ function_name_size = handle->length(); |
+ } |
+ RecordFunctionCompilation( |
+ CodeEventListener::FUNCTION_TAG, isolate, code, "wasm-to-js", index, |
+ {import_module->ToCString().get(), import_module->length()}, |
+ {function_name, function_name_size}); |
+ } |
+ |
return code; |
} |
@@ -3258,11 +3274,14 @@ Handle<Code> WasmCompilationUnit::FinishCompilation() { |
Handle<Code> code = info_.code(); |
DCHECK(!code.is_null()); |
- RecordFunctionCompilation( |
- CodeEventListener::FUNCTION_TAG, &info_, "WASM_function", |
- function_->func_index, |
- module_env_->module->GetName(function_->name_offset, |
- function_->name_length)); |
+ if (isolate_->logger()->is_logging_code_events() || |
+ isolate_->is_profiling()) { |
+ RecordFunctionCompilation( |
+ CodeEventListener::FUNCTION_TAG, isolate_, code, "WASM_function", |
+ function_->func_index, wasm::WasmName("module"), |
+ module_env_->module->GetName(function_->name_offset, |
+ function_->name_length)); |
+ } |
if (FLAG_trace_wasm_decode_time) { |
double compile_ms = compile_timer.Elapsed().InMillisecondsF(); |