OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 "src/runtime/runtime-utils.h" | 5 #include "src/runtime/runtime-utils.h" |
6 | 6 |
7 #include "src/arguments.h" | 7 #include "src/arguments.h" |
8 #include "src/debug/debug-evaluate.h" | 8 #include "src/debug/debug-evaluate.h" |
9 #include "src/debug/debug-frames.h" | 9 #include "src/debug/debug-frames.h" |
10 #include "src/debug/debug-scopes.h" | 10 #include "src/debug/debug-scopes.h" |
(...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1422 HandleScope shs(isolate); | 1422 HandleScope shs(isolate); |
1423 DCHECK(args.length() == 1); | 1423 DCHECK(args.length() == 1); |
1424 CONVERT_ARG_HANDLE_CHECKED(JSObject, obj, 0); | 1424 CONVERT_ARG_HANDLE_CHECKED(JSObject, obj, 0); |
1425 // TODO(1543): Come up with a solution for clients to handle potential errors | 1425 // TODO(1543): Come up with a solution for clients to handle potential errors |
1426 // thrown by an intermediate proxy. | 1426 // thrown by an intermediate proxy. |
1427 RETURN_RESULT_OR_FAILURE(isolate, JSReceiver::GetPrototype(isolate, obj)); | 1427 RETURN_RESULT_OR_FAILURE(isolate, JSReceiver::GetPrototype(isolate, obj)); |
1428 } | 1428 } |
1429 | 1429 |
1430 | 1430 |
1431 // Patches script source (should be called upon BeforeCompile event). | 1431 // Patches script source (should be called upon BeforeCompile event). |
| 1432 // TODO(5530): Remove once uses in debug.js are gone. |
1432 RUNTIME_FUNCTION(Runtime_DebugSetScriptSource) { | 1433 RUNTIME_FUNCTION(Runtime_DebugSetScriptSource) { |
1433 HandleScope scope(isolate); | 1434 HandleScope scope(isolate); |
1434 DCHECK(args.length() == 2); | 1435 DCHECK(args.length() == 2); |
1435 | 1436 |
1436 CONVERT_ARG_HANDLE_CHECKED(JSValue, script_wrapper, 0); | 1437 CONVERT_ARG_HANDLE_CHECKED(JSValue, script_wrapper, 0); |
1437 CONVERT_ARG_HANDLE_CHECKED(String, source, 1); | 1438 CONVERT_ARG_HANDLE_CHECKED(String, source, 1); |
1438 | 1439 |
1439 CHECK(script_wrapper->value()->IsScript()); | 1440 CHECK(script_wrapper->value()->IsScript()); |
1440 Handle<Script> script(Script::cast(script_wrapper->value())); | 1441 Handle<Script> script(Script::cast(script_wrapper->value())); |
1441 | 1442 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1562 found = Handle<Script>(script, isolate); | 1563 found = Handle<Script>(script, isolate); |
1563 break; | 1564 break; |
1564 } | 1565 } |
1565 } | 1566 } |
1566 } | 1567 } |
1567 | 1568 |
1568 if (found.is_null()) return isolate->heap()->undefined_value(); | 1569 if (found.is_null()) return isolate->heap()->undefined_value(); |
1569 return *Script::GetWrapper(found); | 1570 return *Script::GetWrapper(found); |
1570 } | 1571 } |
1571 | 1572 |
| 1573 // TODO(5530): Remove once uses in debug.js are gone. |
1572 RUNTIME_FUNCTION(Runtime_ScriptLineCount) { | 1574 RUNTIME_FUNCTION(Runtime_ScriptLineCount) { |
1573 HandleScope scope(isolate); | 1575 HandleScope scope(isolate); |
1574 DCHECK(args.length() == 1); | 1576 DCHECK(args.length() == 1); |
1575 CONVERT_ARG_CHECKED(JSValue, script, 0); | 1577 CONVERT_ARG_CHECKED(JSValue, script, 0); |
1576 | 1578 |
1577 CHECK(script->value()->IsScript()); | 1579 CHECK(script->value()->IsScript()); |
1578 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 1580 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
1579 | 1581 |
1580 Script::InitLineEnds(script_handle); | 1582 Script::InitLineEnds(script_handle); |
1581 | 1583 |
1582 FixedArray* line_ends_array = FixedArray::cast(script_handle->line_ends()); | 1584 FixedArray* line_ends_array = FixedArray::cast(script_handle->line_ends()); |
1583 return Smi::FromInt(line_ends_array->length()); | 1585 return Smi::FromInt(line_ends_array->length()); |
1584 } | 1586 } |
1585 | 1587 |
| 1588 // TODO(5530): Remove once uses in debug.js are gone. |
1586 RUNTIME_FUNCTION(Runtime_ScriptLineStartPosition) { | 1589 RUNTIME_FUNCTION(Runtime_ScriptLineStartPosition) { |
1587 HandleScope scope(isolate); | 1590 HandleScope scope(isolate); |
1588 DCHECK(args.length() == 2); | 1591 DCHECK(args.length() == 2); |
1589 CONVERT_ARG_CHECKED(JSValue, script, 0); | 1592 CONVERT_ARG_CHECKED(JSValue, script, 0); |
1590 CONVERT_NUMBER_CHECKED(int32_t, line, Int32, args[1]); | 1593 CONVERT_NUMBER_CHECKED(int32_t, line, Int32, args[1]); |
1591 | 1594 |
1592 CHECK(script->value()->IsScript()); | 1595 CHECK(script->value()->IsScript()); |
1593 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 1596 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
1594 | 1597 |
1595 Script::InitLineEnds(script_handle); | 1598 Script::InitLineEnds(script_handle); |
1596 | 1599 |
1597 FixedArray* line_ends_array = FixedArray::cast(script_handle->line_ends()); | 1600 FixedArray* line_ends_array = FixedArray::cast(script_handle->line_ends()); |
1598 const int line_count = line_ends_array->length(); | 1601 const int line_count = line_ends_array->length(); |
1599 | 1602 |
1600 // If line == line_count, we return the first position beyond the last line. | 1603 // If line == line_count, we return the first position beyond the last line. |
1601 if (line < 0 || line > line_count) { | 1604 if (line < 0 || line > line_count) { |
1602 return Smi::FromInt(-1); | 1605 return Smi::FromInt(-1); |
1603 } else if (line == 0) { | 1606 } else if (line == 0) { |
1604 return Smi::kZero; | 1607 return Smi::kZero; |
1605 } else { | 1608 } else { |
1606 DCHECK(0 < line && line <= line_count); | 1609 DCHECK(0 < line && line <= line_count); |
1607 const int pos = Smi::cast(line_ends_array->get(line - 1))->value() + 1; | 1610 const int pos = Smi::cast(line_ends_array->get(line - 1))->value() + 1; |
1608 return Smi::FromInt(pos); | 1611 return Smi::FromInt(pos); |
1609 } | 1612 } |
1610 } | 1613 } |
1611 | 1614 |
| 1615 // TODO(5530): Remove once uses in debug.js are gone. |
1612 RUNTIME_FUNCTION(Runtime_ScriptLineEndPosition) { | 1616 RUNTIME_FUNCTION(Runtime_ScriptLineEndPosition) { |
1613 HandleScope scope(isolate); | 1617 HandleScope scope(isolate); |
1614 DCHECK(args.length() == 2); | 1618 DCHECK(args.length() == 2); |
1615 CONVERT_ARG_CHECKED(JSValue, script, 0); | 1619 CONVERT_ARG_CHECKED(JSValue, script, 0); |
1616 CONVERT_NUMBER_CHECKED(int32_t, line, Int32, args[1]); | 1620 CONVERT_NUMBER_CHECKED(int32_t, line, Int32, args[1]); |
1617 | 1621 |
1618 CHECK(script->value()->IsScript()); | 1622 CHECK(script->value()->IsScript()); |
1619 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 1623 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
1620 | 1624 |
1621 Script::InitLineEnds(script_handle); | 1625 Script::InitLineEnds(script_handle); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1654 JSObject::AddProperty(jsinfo, isolate->factory()->line_string(), | 1658 JSObject::AddProperty(jsinfo, isolate->factory()->line_string(), |
1655 handle(Smi::FromInt(info.line), isolate), NONE); | 1659 handle(Smi::FromInt(info.line), isolate), NONE); |
1656 JSObject::AddProperty(jsinfo, isolate->factory()->column_string(), | 1660 JSObject::AddProperty(jsinfo, isolate->factory()->column_string(), |
1657 handle(Smi::FromInt(info.column), isolate), NONE); | 1661 handle(Smi::FromInt(info.column), isolate), NONE); |
1658 JSObject::AddProperty(jsinfo, isolate->factory()->sourceText_string(), | 1662 JSObject::AddProperty(jsinfo, isolate->factory()->sourceText_string(), |
1659 sourceText, NONE); | 1663 sourceText, NONE); |
1660 | 1664 |
1661 return jsinfo; | 1665 return jsinfo; |
1662 } | 1666 } |
1663 | 1667 |
1664 // Get information on a specific source line and column possibly offset by a | 1668 namespace { |
1665 // fixed source position. This function is used to find a source position from | |
1666 // a line and column position. The fixed source position offset is typically | |
1667 // used to find a source position in a function based on a line and column in | |
1668 // the source for the function alone. The offset passed will then be the | |
1669 // start position of the source for the function within the full script source. | |
1670 // Note that incoming line and column parameters may be undefined, and are | |
1671 // assumed to be passed *with* offsets. | |
1672 RUNTIME_FUNCTION(Runtime_ScriptLocationFromLine) { | |
1673 HandleScope scope(isolate); | |
1674 DCHECK(args.length() == 4); | |
1675 CONVERT_ARG_CHECKED(JSValue, script, 0); | |
1676 | 1669 |
1677 CHECK(script->value()->IsScript()); | 1670 Handle<Object> ScriptLocationFromLine(Isolate* isolate, Handle<Script> script, |
1678 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 1671 Handle<Object> opt_line, |
1679 | 1672 Handle<Object> opt_column, |
| 1673 int32_t offset) { |
1680 // Line and column are possibly undefined and we need to handle these cases, | 1674 // Line and column are possibly undefined and we need to handle these cases, |
1681 // additionally subtracting corresponding offsets. | 1675 // additionally subtracting corresponding offsets. |
1682 | 1676 |
1683 int32_t line; | 1677 int32_t line; |
1684 if (args[1]->IsNull(isolate) || args[1]->IsUndefined(isolate)) { | 1678 if (opt_line->IsNull(isolate) || opt_line->IsUndefined(isolate)) { |
1685 line = 0; | 1679 line = 0; |
1686 } else { | 1680 } else { |
1687 CHECK(args[1]->IsNumber()); | 1681 CHECK(opt_line->IsNumber()); |
1688 line = NumberToInt32(args[1]) - script_handle->line_offset(); | 1682 line = NumberToInt32(*opt_line) - script->line_offset(); |
1689 } | 1683 } |
1690 | 1684 |
1691 int32_t column; | 1685 int32_t column; |
1692 if (args[2]->IsNull(isolate) || args[2]->IsUndefined(isolate)) { | 1686 if (opt_column->IsNull(isolate) || opt_column->IsUndefined(isolate)) { |
1693 column = 0; | 1687 column = 0; |
1694 } else { | 1688 } else { |
1695 CHECK(args[2]->IsNumber()); | 1689 CHECK(opt_column->IsNumber()); |
1696 column = NumberToInt32(args[2]); | 1690 column = NumberToInt32(*opt_column); |
1697 if (line == 0) column -= script_handle->column_offset(); | 1691 if (line == 0) column -= script->column_offset(); |
1698 } | 1692 } |
1699 | 1693 |
1700 CONVERT_NUMBER_CHECKED(int32_t, offset_position, Int32, args[3]); | 1694 if (line < 0 || column < 0 || offset < 0) { |
1701 | 1695 return isolate->factory()->null_value(); |
1702 if (line < 0 || column < 0 || offset_position < 0) { | |
1703 return isolate->heap()->null_value(); | |
1704 } | 1696 } |
1705 | 1697 |
1706 Script::InitLineEnds(script_handle); | 1698 Script::InitLineEnds(script); |
1707 | 1699 |
1708 FixedArray* line_ends_array = FixedArray::cast(script_handle->line_ends()); | 1700 FixedArray* line_ends_array = FixedArray::cast(script->line_ends()); |
1709 const int line_count = line_ends_array->length(); | 1701 const int line_count = line_ends_array->length(); |
1710 | 1702 |
1711 int position; | 1703 int position; |
1712 if (line == 0) { | 1704 if (line == 0) { |
1713 position = offset_position + column; | 1705 position = offset + column; |
1714 } else { | 1706 } else { |
1715 Script::PositionInfo info; | 1707 Script::PositionInfo info; |
1716 if (!script_handle->GetPositionInfo(offset_position, &info, | 1708 if (!script->GetPositionInfo(offset, &info, Script::NO_OFFSET) || |
1717 Script::NO_OFFSET) || | |
1718 info.line + line >= line_count) { | 1709 info.line + line >= line_count) { |
1719 return isolate->heap()->null_value(); | 1710 return isolate->factory()->null_value(); |
1720 } | 1711 } |
1721 | 1712 |
1722 const int offset_line = info.line + line; | 1713 const int offset_line = info.line + line; |
1723 const int offset_line_position = | 1714 const int offset_line_position = |
1724 (offset_line == 0) | 1715 (offset_line == 0) |
1725 ? 0 | 1716 ? 0 |
1726 : Smi::cast(line_ends_array->get(offset_line - 1))->value() + 1; | 1717 : Smi::cast(line_ends_array->get(offset_line - 1))->value() + 1; |
1727 position = offset_line_position + column; | 1718 position = offset_line_position + column; |
1728 } | 1719 } |
1729 | 1720 |
1730 return *GetJSPositionInfo(script_handle, position, Script::NO_OFFSET, | 1721 return GetJSPositionInfo(script, position, Script::NO_OFFSET, isolate); |
1731 isolate); | |
1732 } | 1722 } |
1733 | 1723 |
| 1724 // Slow traversal over all scripts on the heap. |
| 1725 bool GetScriptById(Isolate* isolate, int needle, Handle<Script>* result) { |
| 1726 Script::Iterator iterator(isolate); |
| 1727 Script* script = NULL; |
| 1728 while ((script = iterator.Next()) != NULL) { |
| 1729 if (script->id() == needle) { |
| 1730 *result = handle(script); |
| 1731 return true; |
| 1732 } |
| 1733 } |
| 1734 |
| 1735 return false; |
| 1736 } |
| 1737 |
| 1738 } // namespace |
| 1739 |
| 1740 // Get information on a specific source line and column possibly offset by a |
| 1741 // fixed source position. This function is used to find a source position from |
| 1742 // a line and column position. The fixed source position offset is typically |
| 1743 // used to find a source position in a function based on a line and column in |
| 1744 // the source for the function alone. The offset passed will then be the |
| 1745 // start position of the source for the function within the full script source. |
| 1746 // Note that incoming line and column parameters may be undefined, and are |
| 1747 // assumed to be passed *with* offsets. |
| 1748 // TODO(5530): Remove once uses in debug.js are gone. |
| 1749 RUNTIME_FUNCTION(Runtime_ScriptLocationFromLine) { |
| 1750 HandleScope scope(isolate); |
| 1751 DCHECK(args.length() == 4); |
| 1752 CONVERT_ARG_HANDLE_CHECKED(JSValue, script, 0); |
| 1753 CONVERT_ARG_HANDLE_CHECKED(Object, opt_line, 1); |
| 1754 CONVERT_ARG_HANDLE_CHECKED(Object, opt_column, 2); |
| 1755 CONVERT_NUMBER_CHECKED(int32_t, offset, Int32, args[3]); |
| 1756 |
| 1757 CHECK(script->value()->IsScript()); |
| 1758 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
| 1759 |
| 1760 return *ScriptLocationFromLine(isolate, script_handle, opt_line, opt_column, |
| 1761 offset); |
| 1762 } |
| 1763 |
| 1764 // TODO(5530): Rename once conflicting function has been deleted. |
| 1765 RUNTIME_FUNCTION(Runtime_ScriptLocationFromLine2) { |
| 1766 HandleScope scope(isolate); |
| 1767 DCHECK(args.length() == 4); |
| 1768 CONVERT_NUMBER_CHECKED(int32_t, scriptid, Int32, args[0]); |
| 1769 CONVERT_ARG_HANDLE_CHECKED(Object, opt_line, 1); |
| 1770 CONVERT_ARG_HANDLE_CHECKED(Object, opt_column, 2); |
| 1771 CONVERT_NUMBER_CHECKED(int32_t, offset, Int32, args[3]); |
| 1772 |
| 1773 Handle<Script> script; |
| 1774 CHECK(GetScriptById(isolate, scriptid, &script)); |
| 1775 |
| 1776 return *ScriptLocationFromLine(isolate, script, opt_line, opt_column, offset); |
| 1777 } |
| 1778 |
| 1779 // TODO(5530): Remove once uses in debug.js are gone. |
1734 RUNTIME_FUNCTION(Runtime_ScriptPositionInfo) { | 1780 RUNTIME_FUNCTION(Runtime_ScriptPositionInfo) { |
1735 HandleScope scope(isolate); | 1781 HandleScope scope(isolate); |
1736 DCHECK(args.length() == 3); | 1782 DCHECK(args.length() == 3); |
1737 CONVERT_ARG_CHECKED(JSValue, script, 0); | 1783 CONVERT_ARG_CHECKED(JSValue, script, 0); |
1738 CONVERT_NUMBER_CHECKED(int32_t, position, Int32, args[1]); | 1784 CONVERT_NUMBER_CHECKED(int32_t, position, Int32, args[1]); |
1739 CONVERT_BOOLEAN_ARG_CHECKED(with_offset, 2); | 1785 CONVERT_BOOLEAN_ARG_CHECKED(with_offset, 2); |
1740 | 1786 |
1741 CHECK(script->value()->IsScript()); | 1787 CHECK(script->value()->IsScript()); |
1742 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 1788 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
1743 | 1789 |
1744 const Script::OffsetFlag offset_flag = | 1790 const Script::OffsetFlag offset_flag = |
1745 with_offset ? Script::WITH_OFFSET : Script::NO_OFFSET; | 1791 with_offset ? Script::WITH_OFFSET : Script::NO_OFFSET; |
1746 return *GetJSPositionInfo(script_handle, position, offset_flag, isolate); | 1792 return *GetJSPositionInfo(script_handle, position, offset_flag, isolate); |
1747 } | 1793 } |
1748 | 1794 |
1749 // Returns the given line as a string, or null if line is out of bounds. | 1795 // Returns the given line as a string, or null if line is out of bounds. |
1750 // The parameter line is expected to include the script's line offset. | 1796 // The parameter line is expected to include the script's line offset. |
| 1797 // TODO(5530): Remove once uses in debug.js are gone. |
1751 RUNTIME_FUNCTION(Runtime_ScriptSourceLine) { | 1798 RUNTIME_FUNCTION(Runtime_ScriptSourceLine) { |
1752 HandleScope scope(isolate); | 1799 HandleScope scope(isolate); |
1753 DCHECK(args.length() == 2); | 1800 DCHECK(args.length() == 2); |
1754 CONVERT_ARG_CHECKED(JSValue, script, 0); | 1801 CONVERT_ARG_CHECKED(JSValue, script, 0); |
1755 CONVERT_NUMBER_CHECKED(int32_t, line, Int32, args[1]); | 1802 CONVERT_NUMBER_CHECKED(int32_t, line, Int32, args[1]); |
1756 | 1803 |
1757 CHECK(script->value()->IsScript()); | 1804 CHECK(script->value()->IsScript()); |
1758 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); | 1805 Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
1759 | 1806 |
1760 Script::InitLineEnds(script_handle); | 1807 Script::InitLineEnds(script_handle); |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1843 SealHandleScope shs(isolate); | 1890 SealHandleScope shs(isolate); |
1844 return Smi::FromInt(isolate->debug()->is_active()); | 1891 return Smi::FromInt(isolate->debug()->is_active()); |
1845 } | 1892 } |
1846 | 1893 |
1847 | 1894 |
1848 RUNTIME_FUNCTION(Runtime_DebugBreakInOptimizedCode) { | 1895 RUNTIME_FUNCTION(Runtime_DebugBreakInOptimizedCode) { |
1849 UNIMPLEMENTED(); | 1896 UNIMPLEMENTED(); |
1850 return NULL; | 1897 return NULL; |
1851 } | 1898 } |
1852 | 1899 |
| 1900 // TODO(5530): Remove once uses in debug.js are gone. |
1853 RUNTIME_FUNCTION(Runtime_GetWasmFunctionOffsetTable) { | 1901 RUNTIME_FUNCTION(Runtime_GetWasmFunctionOffsetTable) { |
1854 DCHECK(args.length() == 1); | 1902 DCHECK(args.length() == 1); |
1855 HandleScope scope(isolate); | 1903 HandleScope scope(isolate); |
1856 CONVERT_ARG_CHECKED(JSValue, script_val, 0); | 1904 CONVERT_ARG_CHECKED(JSValue, script_val, 0); |
1857 | 1905 |
1858 CHECK(script_val->value()->IsScript()); | 1906 CHECK(script_val->value()->IsScript()); |
1859 Handle<Script> script = Handle<Script>(Script::cast(script_val->value())); | 1907 Handle<Script> script = Handle<Script>(Script::cast(script_val->value())); |
1860 | 1908 |
1861 Handle<wasm::WasmDebugInfo> debug_info = | 1909 Handle<wasm::WasmDebugInfo> debug_info = |
1862 wasm::GetDebugInfo(handle(script->wasm_instance(), isolate)); | 1910 wasm::GetDebugInfo(handle(script->wasm_instance(), isolate)); |
1863 Handle<FixedArray> elements = wasm::WasmDebugInfo::GetFunctionOffsetTable( | 1911 Handle<FixedArray> elements = wasm::WasmDebugInfo::GetFunctionOffsetTable( |
1864 debug_info, script->wasm_function_index()); | 1912 debug_info, script->wasm_function_index()); |
1865 return *isolate->factory()->NewJSArrayWithElements(elements); | 1913 return *isolate->factory()->NewJSArrayWithElements(elements); |
1866 } | 1914 } |
1867 | 1915 |
| 1916 // TODO(5530): Remove once uses in debug.js are gone. |
1868 RUNTIME_FUNCTION(Runtime_DisassembleWasmFunction) { | 1917 RUNTIME_FUNCTION(Runtime_DisassembleWasmFunction) { |
1869 DCHECK(args.length() == 1); | 1918 DCHECK(args.length() == 1); |
1870 HandleScope scope(isolate); | 1919 HandleScope scope(isolate); |
1871 CONVERT_ARG_CHECKED(JSValue, script_val, 0); | 1920 CONVERT_ARG_CHECKED(JSValue, script_val, 0); |
1872 | 1921 |
1873 CHECK(script_val->value()->IsScript()); | 1922 CHECK(script_val->value()->IsScript()); |
1874 Handle<Script> script = Handle<Script>(Script::cast(script_val->value())); | 1923 Handle<Script> script = Handle<Script>(Script::cast(script_val->value())); |
1875 | 1924 |
1876 Handle<wasm::WasmDebugInfo> debug_info = | 1925 Handle<wasm::WasmDebugInfo> debug_info = |
1877 wasm::GetDebugInfo(handle(script->wasm_instance(), isolate)); | 1926 wasm::GetDebugInfo(handle(script->wasm_instance(), isolate)); |
1878 return *wasm::WasmDebugInfo::DisassembleFunction( | 1927 return *wasm::WasmDebugInfo::DisassembleFunction( |
1879 debug_info, script->wasm_function_index()); | 1928 debug_info, script->wasm_function_index()); |
1880 } | 1929 } |
1881 | 1930 |
1882 } // namespace internal | 1931 } // namespace internal |
1883 } // namespace v8 | 1932 } // namespace v8 |
OLD | NEW |