Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index 2861bd1fb15cfa11ec541a3532b1afe19e4f5404..5915bc19ff920b86d9071863eb8f0fef1d1e82a2 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -9112,6 +9112,24 @@ void DebugInterface::GetLoadedScripts( |
} |
} |
+std::pair<std::string, std::vector<std::tuple<uint32_t, int, int>>> |
+DebugInterface::DisassembleWasmFunction(Isolate* v8_isolate, |
+ Local<Object> v8_script, |
+ int function_index) { |
+ i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
+ if (v8_script.IsEmpty()) return {}; |
+ i::Handle<i::Object> script_wrapper = Utils::OpenHandle(*v8_script); |
+ if (!script_wrapper->IsJSValue()) return {}; |
+ i::Handle<i::Object> script_obj( |
+ i::Handle<i::JSValue>::cast(script_wrapper)->value(), isolate); |
+ if (!script_obj->IsScript()) return {}; |
+ i::Handle<i::Script> script = i::Handle<i::Script>::cast(script_obj); |
+ if (script->type() != i::Script::TYPE_WASM) return {}; |
+ i::Handle<i::WasmCompiledModule> compiled_module( |
+ i::WasmCompiledModule::cast(script->wasm_compiled_module()), isolate); |
+ return i::wasm::DisassembleFunction(compiled_module, function_index); |
+} |
+ |
Local<String> CpuProfileNode::GetFunctionName() const { |
const i::ProfileNode* node = reinterpret_cast<const i::ProfileNode*>(this); |
i::Isolate* isolate = node->isolate(); |