Index: src/api.cc |
diff --git a/src/api.cc b/src/api.cc |
index a414f00f297b6c61ade4339532ea03c6f9d66173..ff5acf05aa8c158b796cbc88fb8bd0c9a45e1966 100644 |
--- a/src/api.cc |
+++ b/src/api.cc |
@@ -9083,6 +9083,25 @@ 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::wasm::WasmCompiledModule> compiled_module( |
+ i::wasm::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(); |