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

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

Issue 2493773003: [inspector] Introduce translation of wasm frames (Closed)
Patch Set: Very last-minute changes Created 4 years, 1 month 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
« no previous file with comments | « src/wasm/wasm-module.h ('k') | test/inspector/debugger/wasm-stack.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <memory> 5 #include <memory>
6 6
7 #include "src/base/atomic-utils.h" 7 #include "src/base/atomic-utils.h"
8 #include "src/code-stubs.h" 8 #include "src/code-stubs.h"
9 9
10 #include "src/macro-assembler.h" 10 #include "src/macro-assembler.h"
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 WasmModule* module = compiled_module->module(); 590 WasmModule* module = compiled_module->module();
591 if (func_index < 0 || 591 if (func_index < 0 ||
592 static_cast<size_t>(func_index) > module->functions.size()) { 592 static_cast<size_t>(func_index) > module->functions.size()) {
593 return {0, 0}; 593 return {0, 0};
594 } 594 }
595 WasmFunction& func = module->functions[func_index]; 595 WasmFunction& func = module->functions[func_index];
596 return {static_cast<int>(func.code_start_offset), 596 return {static_cast<int>(func.code_start_offset),
597 static_cast<int>(func.code_end_offset - func.code_start_offset)}; 597 static_cast<int>(func.code_end_offset - func.code_start_offset)};
598 } 598 }
599 599
600 Vector<const uint8_t> GetFunctionBytes(
601 Handle<WasmCompiledModule> compiled_module, int func_index) {
602 int offset, length;
603 std::tie(offset, length) =
604 GetFunctionOffsetAndLength(compiled_module, func_index);
605 return Vector<const uint8_t>(
606 compiled_module->module_bytes()->GetChars() + offset, length);
607 }
608
600 } // namespace 609 } // namespace
601 610
602 const char* wasm::SectionName(WasmSectionCode code) { 611 const char* wasm::SectionName(WasmSectionCode code) {
603 switch (code) { 612 switch (code) {
604 case kUnknownSectionCode: 613 case kUnknownSectionCode:
605 return "Unknown"; 614 return "Unknown";
606 case kTypeSectionCode: 615 case kTypeSectionCode:
607 return "Type"; 616 return "Type";
608 case kImportSectionCode: 617 case kImportSectionCode:
609 return "Import"; 618 return "Import";
(...skipping 1265 matching lines...) Expand 10 before | Expand all | Expand 10 after
1875 return compiled_module->has_asm_js_offset_tables(); 1884 return compiled_module->has_asm_js_offset_tables();
1876 } 1885 }
1877 1886
1878 Handle<Script> wasm::GetScript(Handle<JSObject> instance) { 1887 Handle<Script> wasm::GetScript(Handle<JSObject> instance) {
1879 DCHECK(IsWasmInstance(*instance)); 1888 DCHECK(IsWasmInstance(*instance));
1880 WasmCompiledModule* compiled_module = GetCompiledModule(*instance); 1889 WasmCompiledModule* compiled_module = GetCompiledModule(*instance);
1881 DCHECK(compiled_module->has_script()); 1890 DCHECK(compiled_module->has_script());
1882 return compiled_module->script(); 1891 return compiled_module->script();
1883 } 1892 }
1884 1893
1894 std::pair<std::string, std::vector<std::tuple<uint32_t, int, int>>>
1895 wasm::DisassembleFunction(Handle<WasmCompiledModule> compiled_module,
1896 int func_index) {
1897 std::ostringstream disassembly_os;
1898 std::vector<std::tuple<uint32_t, int, int>> offset_table;
1899
1900 Vector<const uint8_t> func_bytes =
1901 GetFunctionBytes(compiled_module, func_index);
1902 DisallowHeapAllocation no_gc;
1903 if (func_bytes.is_empty()) return {};
1904
1905 AccountingAllocator allocator;
1906 bool ok = PrintAst(
1907 &allocator, FunctionBodyForTesting(func_bytes.start(), func_bytes.end()),
1908 disassembly_os, &offset_table);
1909 CHECK(ok);
1910
1911 return {disassembly_os.str(), std::move(offset_table)};
1912 }
1913
1885 int wasm::GetAsmWasmSourcePosition(Handle<JSObject> instance, int func_index, 1914 int wasm::GetAsmWasmSourcePosition(Handle<JSObject> instance, int func_index,
1886 int byte_offset) { 1915 int byte_offset) {
1887 return WasmDebugInfo::GetAsmJsSourcePosition(GetDebugInfo(instance), 1916 return WasmDebugInfo::GetAsmJsSourcePosition(GetDebugInfo(instance),
1888 func_index, byte_offset); 1917 func_index, byte_offset);
1889 } 1918 }
1890 1919
1891 Handle<SeqOneByteString> wasm::GetWasmBytes(Handle<JSObject> object) { 1920 Handle<SeqOneByteString> wasm::GetWasmBytes(Handle<JSObject> object) {
1892 return Handle<WasmInstanceObject>::cast(object) 1921 return Handle<WasmInstanceObject>::cast(object)
1893 ->get_compiled_module() 1922 ->get_compiled_module()
1894 ->module_bytes(); 1923 ->module_bytes();
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
2174 MaybeHandle<String> WasmCompiledModule::GetFunctionName( 2203 MaybeHandle<String> WasmCompiledModule::GetFunctionName(
2175 Handle<WasmCompiledModule> compiled_module, uint32_t func_index) { 2204 Handle<WasmCompiledModule> compiled_module, uint32_t func_index) {
2176 DCHECK_LT(func_index, compiled_module->module()->functions.size()); 2205 DCHECK_LT(func_index, compiled_module->module()->functions.size());
2177 WasmFunction& function = compiled_module->module()->functions[func_index]; 2206 WasmFunction& function = compiled_module->module()->functions[func_index];
2178 Isolate* isolate = compiled_module->GetIsolate(); 2207 Isolate* isolate = compiled_module->GetIsolate();
2179 MaybeHandle<String> string = ExtractStringFromModuleBytes( 2208 MaybeHandle<String> string = ExtractStringFromModuleBytes(
2180 isolate, compiled_module, function.name_offset, function.name_length); 2209 isolate, compiled_module, function.name_offset, function.name_length);
2181 if (!string.is_null()) return string.ToHandleChecked(); 2210 if (!string.is_null()) return string.ToHandleChecked();
2182 return {}; 2211 return {};
2183 } 2212 }
OLDNEW
« no previous file with comments | « src/wasm/wasm-module.h ('k') | test/inspector/debugger/wasm-stack.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698