| Index: src/wasm/wasm-module.cc | 
| diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc | 
| index f70467f50dcf87d22122630323370c717fc899fb..f0850f315ec55aefb6334e2976718c61d2e05672 100644 | 
| --- a/src/wasm/wasm-module.cc | 
| +++ b/src/wasm/wasm-module.cc | 
| @@ -20,6 +20,7 @@ | 
| #include "src/wasm/wasm-module.h" | 
| #include "src/wasm/wasm-objects.h" | 
| #include "src/wasm/wasm-result.h" | 
| +#include "src/wasm/wasm-text.h" | 
|  | 
| #include "src/compiler/wasm-compiler.h" | 
|  | 
| @@ -634,15 +635,6 @@ std::pair<int, int> GetFunctionOffsetAndLength( | 
| static_cast<int>(func.code_end_offset - func.code_start_offset)}; | 
| } | 
|  | 
| -Vector<const uint8_t> GetFunctionBytes( | 
| -    Handle<WasmCompiledModule> compiled_module, int func_index) { | 
| -  int offset, length; | 
| -  std::tie(offset, length) = | 
| -      GetFunctionOffsetAndLength(compiled_module, func_index); | 
| -  return Vector<const uint8_t>( | 
| -      compiled_module->module_bytes()->GetChars() + offset, length); | 
| -} | 
| - | 
| }  // namespace | 
|  | 
| Handle<JSArrayBuffer> wasm::NewArrayBuffer(Isolate* isolate, size_t size, | 
| @@ -1977,19 +1969,16 @@ Handle<Script> wasm::GetScript(Handle<JSObject> instance) { | 
| std::pair<std::string, std::vector<std::tuple<uint32_t, int, int>>> | 
| wasm::DisassembleFunction(Handle<WasmCompiledModule> compiled_module, | 
| int func_index) { | 
| +  if (func_index < 0 || | 
| +      static_cast<uint32_t>(func_index) >= | 
| +          compiled_module->module()->functions.size()) | 
| +    return {}; | 
| + | 
| std::ostringstream disassembly_os; | 
| std::vector<std::tuple<uint32_t, int, int>> offset_table; | 
|  | 
| -  Vector<const uint8_t> func_bytes = | 
| -      GetFunctionBytes(compiled_module, func_index); | 
| -  DisallowHeapAllocation no_gc; | 
| -  if (func_bytes.is_empty()) return {}; | 
| - | 
| -  AccountingAllocator allocator; | 
| -  bool ok = PrintAst( | 
| -      &allocator, FunctionBodyForTesting(func_bytes.start(), func_bytes.end()), | 
| -      disassembly_os, &offset_table); | 
| -  CHECK(ok); | 
| +  PrintWasmText(compiled_module->module(), static_cast<uint32_t>(func_index), | 
| +                disassembly_os, &offset_table); | 
|  | 
| return {disassembly_os.str(), std::move(offset_table)}; | 
| } | 
| @@ -2030,6 +2019,7 @@ MaybeHandle<WasmModuleObject> wasm::CreateModuleObjectFromBytes( | 
| thrower->CompileFailed("Wasm decoding failed", result); | 
| return nothing; | 
| } | 
| + | 
| // The {module_wrapper} will take ownership of the {WasmModule} object, | 
| // and it will be destroyed when the GC reclaims the wrapper object. | 
| Handle<WasmModuleWrapper> module_wrapper = | 
|  |