| OLD | NEW |
| 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 // TODO(rmcilroy): Remove this define after this flag is turned on globally | 5 // TODO(rmcilroy): Remove this define after this flag is turned on globally |
| 6 #define V8_IMMINENT_DEPRECATION_WARNINGS | 6 #define V8_IMMINENT_DEPRECATION_WARNINGS |
| 7 | 7 |
| 8 #include "src/v8.h" | 8 #include "src/v8.h" |
| 9 | 9 |
| 10 #include "src/compiler.h" | 10 #include "src/compiler.h" |
| (...skipping 1587 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1598 TEST(IfConditions) { | 1598 TEST(IfConditions) { |
| 1599 InitializedHandleScope handle_scope; | 1599 InitializedHandleScope handle_scope; |
| 1600 BytecodeGeneratorHelper helper; | 1600 BytecodeGeneratorHelper helper; |
| 1601 | 1601 |
| 1602 Handle<Object> unused = helper.factory()->undefined_value(); | 1602 Handle<Object> unused = helper.factory()->undefined_value(); |
| 1603 | 1603 |
| 1604 ExpectedSnippet<Handle<Object>> snippets[] = { | 1604 ExpectedSnippet<Handle<Object>> snippets[] = { |
| 1605 {"function f() { if (0) { return 1; } else { return -1; } } f()", | 1605 {"function f() { if (0) { return 1; } else { return -1; } } f()", |
| 1606 0, | 1606 0, |
| 1607 1, | 1607 1, |
| 1608 13, | 1608 5, |
| 1609 {B(LdaZero), // | 1609 {B(LdaSmi8), U8(-1), // |
| 1610 B(JumpIfToBooleanFalse), U8(7), // | 1610 B(Return), // |
| 1611 B(LdaSmi8), U8(1), // | 1611 B(LdaUndefined), // TODO(mythria) redundant return statement |
| 1612 B(Return), // | 1612 B(Return)}, // could be eliminated. |
| 1613 B(Jump), U8(5), // | |
| 1614 B(LdaSmi8), U8(-1), // | |
| 1615 B(Return), // | |
| 1616 B(LdaUndefined), // | |
| 1617 B(Return)}, // | |
| 1618 0, | 1613 0, |
| 1619 {unused, unused, unused, unused, unused, unused}}, | 1614 {unused, unused, unused, unused, unused, unused}}, |
| 1620 {"function f() { if ('lucky') { return 1; } else { return -1; } } f();", | 1615 {"function f() { if ('lucky') { return 1; } else { return -1; } } f();", |
| 1621 0, | 1616 0, |
| 1622 1, | 1617 1, |
| 1623 14, | 1618 5, |
| 1624 {B(LdaConstant), U8(0), // | 1619 {B(LdaSmi8), U8(1), // |
| 1625 B(JumpIfToBooleanFalse), U8(7), // | 1620 B(Return), // |
| 1626 B(LdaSmi8), U8(1), // | 1621 B(LdaUndefined), // TODO(mythria) redundant return statement |
| 1627 B(Return), // | 1622 B(Return)}, // could be eliminated. |
| 1628 B(Jump), U8(5), // | 1623 0, |
| 1629 B(LdaSmi8), U8(-1), // | 1624 {unused, unused, unused, unused, unused, unused}}, |
| 1630 B(Return), // | |
| 1631 B(LdaUndefined), // | |
| 1632 B(Return)}, // | |
| 1633 1, | |
| 1634 {helper.factory()->NewStringFromStaticChars("lucky"), unused, unused, | |
| 1635 unused, unused, unused}}, | |
| 1636 {"function f() { if (false) { return 1; } else { return -1; } } f();", | 1625 {"function f() { if (false) { return 1; } else { return -1; } } f();", |
| 1637 0, | 1626 0, |
| 1638 1, | 1627 1, |
| 1639 13, | 1628 5, |
| 1640 {B(LdaFalse), // | 1629 {B(LdaSmi8), U8(-1), // |
| 1641 B(JumpIfFalse), U8(7), // | 1630 B(Return), // |
| 1642 B(LdaSmi8), U8(1), // | 1631 B(LdaUndefined), // TODO(mythria) redundant return statement |
| 1643 B(Return), // | 1632 B(Return)}, // could be eliminated. |
| 1644 B(Jump), U8(5), // | 1633 0, |
| 1645 B(LdaSmi8), U8(-1), // | 1634 {unused, unused, unused, unused, unused, unused}}, |
| 1646 B(Return), // | 1635 {"function f() { if (false) { return 1; } } f();", |
| 1647 B(LdaUndefined), // | 1636 0, |
| 1648 B(Return)}, // | 1637 1, |
| 1638 2, |
| 1639 {B(LdaUndefined), // |
| 1640 B(Return)}, |
| 1649 0, | 1641 0, |
| 1650 {unused, unused, unused, unused, unused, unused}}, | 1642 {unused, unused, unused, unused, unused, unused}}, |
| 1651 {"function f(a) { if (a <= 0) { return 200; } else { return -200; } }" | 1643 {"function f(a) { if (a <= 0) { return 200; } else { return -200; } }" |
| 1652 "f(99);", | 1644 "f(99);", |
| 1653 0, | 1645 0, |
| 1654 2, | 1646 2, |
| 1655 15, | 1647 15, |
| 1656 {B(LdaZero), // | 1648 {B(LdaZero), // |
| 1657 B(TestLessThanOrEqual), A(1, 2), // | 1649 B(TestLessThanOrEqual), A(1, 2), // |
| 1658 B(JumpIfFalse), U8(7), // | 1650 B(JumpIfFalse), U8(7), // |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1770 IF_CONDITION_RETURN(TestGreaterThan) // | 1762 IF_CONDITION_RETURN(TestGreaterThan) // |
| 1771 IF_CONDITION_RETURN(TestLessThanOrEqual) // | 1763 IF_CONDITION_RETURN(TestLessThanOrEqual) // |
| 1772 IF_CONDITION_RETURN(TestGreaterThanOrEqual) // | 1764 IF_CONDITION_RETURN(TestGreaterThanOrEqual) // |
| 1773 IF_CONDITION_RETURN(TestIn) // | 1765 IF_CONDITION_RETURN(TestIn) // |
| 1774 IF_CONDITION_RETURN(TestInstanceOf) // | 1766 IF_CONDITION_RETURN(TestInstanceOf) // |
| 1775 B(LdaZero), // | 1767 B(LdaZero), // |
| 1776 B(Return)}, // | 1768 B(Return)}, // |
| 1777 #undef IF_CONDITION_RETURN | 1769 #undef IF_CONDITION_RETURN |
| 1778 0, | 1770 0, |
| 1779 {unused, unused, unused, unused, unused, unused}}, | 1771 {unused, unused, unused, unused, unused, unused}}, |
| 1772 {"function f() {" |
| 1773 " var a = 0;" |
| 1774 " if (a) {" |
| 1775 " return 20;" |
| 1776 "} else {" |
| 1777 " return -20;}" |
| 1778 "};" |
| 1779 "f();", |
| 1780 1 * kPointerSize, |
| 1781 1, |
| 1782 17, |
| 1783 { |
| 1784 B(LdaZero), // |
| 1785 B(Star), R(0), // |
| 1786 B(Ldar), R(0), // |
| 1787 B(JumpIfToBooleanFalse), U8(7), // |
| 1788 B(LdaSmi8), U8(20), // |
| 1789 B(Return), // |
| 1790 B(Jump), U8(5), // |
| 1791 B(LdaSmi8), U8(-20), // |
| 1792 B(Return), // |
| 1793 B(LdaUndefined), // |
| 1794 B(Return) |
| 1795 }, |
| 1796 0, |
| 1797 {unused, unused, unused, unused, unused, unused}} |
| 1780 }; | 1798 }; |
| 1781 | 1799 |
| 1782 for (size_t i = 0; i < arraysize(snippets); i++) { | 1800 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 1783 Handle<BytecodeArray> bytecode_array = | 1801 Handle<BytecodeArray> bytecode_array = |
| 1784 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); | 1802 helper.MakeBytecode(snippets[i].code_snippet, helper.kFunctionName); |
| 1785 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 1803 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 1786 } | 1804 } |
| 1787 } | 1805 } |
| 1788 | 1806 |
| 1789 | 1807 |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1945 " if (i < 0) continue;" | 1963 " if (i < 0) continue;" |
| 1946 " if (i == 3) break;" | 1964 " if (i == 3) break;" |
| 1947 " if (i == 4) break;" | 1965 " if (i == 4) break;" |
| 1948 " if (i == 10) continue;" | 1966 " if (i == 10) continue;" |
| 1949 " if (i == 5) break;" | 1967 " if (i == 5) break;" |
| 1950 " i = i + 1;" | 1968 " i = i + 1;" |
| 1951 "}" | 1969 "}" |
| 1952 "return i;", | 1970 "return i;", |
| 1953 1 * kPointerSize, | 1971 1 * kPointerSize, |
| 1954 1, | 1972 1, |
| 1955 56, | 1973 53, |
| 1956 { | 1974 { |
| 1957 B(LdaZero), // | 1975 B(LdaZero), // |
| 1958 B(Star), R(0), // | 1976 B(Star), R(0), // |
| 1959 B(Jump), U8(47), // | 1977 B(LdaZero), // |
| 1960 B(LdaZero), // | 1978 B(TestLessThan), R(0), // |
| 1961 B(TestLessThan), R(0), // | 1979 B(JumpIfFalse), U8(4), // |
| 1962 B(JumpIfFalse), U8(4), // | 1980 B(Jump), U8(40), // |
| 1963 B(Jump), U8(40), // | 1981 B(LdaSmi8), U8(3), // |
| 1964 B(LdaSmi8), U8(3), // | 1982 B(TestEqual), R(0), // |
| 1965 B(TestEqual), R(0), // | 1983 B(JumpIfFalse), U8(4), // |
| 1966 B(JumpIfFalse), U8(4), // | 1984 B(Jump), U8(34), // |
| 1967 B(Jump), U8(35), // | 1985 B(LdaSmi8), U8(4), // |
| 1968 B(LdaSmi8), U8(4), // | 1986 B(TestEqual), R(0), // |
| 1969 B(TestEqual), R(0), // | 1987 B(JumpIfFalse), U8(4), // |
| 1970 B(JumpIfFalse), U8(4), // | 1988 B(Jump), U8(26), // |
| 1971 B(Jump), U8(27), // | 1989 B(LdaSmi8), U8(10), // |
| 1972 B(LdaSmi8), U8(10), // | 1990 B(TestEqual), R(0), // |
| 1973 B(TestEqual), R(0), // | 1991 B(JumpIfFalse), U8(4), // |
| 1974 B(JumpIfFalse), U8(4), // | 1992 B(Jump), U8(16), // |
| 1975 B(Jump), U8(16), // | 1993 B(LdaSmi8), U8(5), // |
| 1976 B(LdaSmi8), U8(5), // | 1994 B(TestEqual), R(0), // |
| 1977 B(TestEqual), R(0), // | 1995 B(JumpIfFalse), U8(4), // |
| 1978 B(JumpIfFalse), U8(4), // | 1996 B(Jump), U8(10), // |
| 1979 B(Jump), U8(11), // | 1997 B(LdaSmi8), U8(1), // |
| 1980 B(LdaSmi8), U8(1), // | 1998 B(Add), R(0), // |
| 1981 B(Add), R(0), // | 1999 B(Star), R(0), // |
| 1982 B(Star), R(0), // | 2000 B(Jump), U8(-45), // |
| 1983 B(LdaTrue), // | 2001 B(Ldar), R(0), // |
| 1984 B(JumpIfTrue), U8(-46), // | 2002 B(Return), // |
| 1985 B(Ldar), R(0), // | |
| 1986 B(Return), // | |
| 1987 }, | 2003 }, |
| 1988 0}, | 2004 0}, |
| 1989 {"var x = 0; var y = 1;" | 2005 {"var x = 0; var y = 1;" |
| 1990 "do {" | 2006 "do {" |
| 1991 " y = y * 10;" | 2007 " y = y * 10;" |
| 1992 " if (x == 5) break;" | 2008 " if (x == 5) break;" |
| 1993 " if (x == 6) continue;" | 2009 " if (x == 6) continue;" |
| 1994 " x = x + 1;" | 2010 " x = x + 1;" |
| 1995 "} while (x < 10);" | 2011 "} while (x < 10);" |
| 1996 "return y;", | 2012 "return y;", |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2079 " while (i < 3) {" | 2095 " while (i < 3) {" |
| 2080 " if (i == 2) break;" | 2096 " if (i == 2) break;" |
| 2081 " i = i + 1;" | 2097 " i = i + 1;" |
| 2082 " }" | 2098 " }" |
| 2083 " i = i + 1;" | 2099 " i = i + 1;" |
| 2084 " break;" | 2100 " break;" |
| 2085 "}" | 2101 "}" |
| 2086 "return i;", | 2102 "return i;", |
| 2087 1 * kPointerSize, | 2103 1 * kPointerSize, |
| 2088 1, | 2104 1, |
| 2089 41, | 2105 38, |
| 2090 { | 2106 { |
| 2091 B(LdaZero), // | 2107 B(LdaZero), // |
| 2092 B(Star), R(0), // | 2108 B(Star), R(0), // |
| 2093 B(Jump), U8(32), // | |
| 2094 B(Jump), U8(16), // | 2109 B(Jump), U8(16), // |
| 2095 B(LdaSmi8), U8(2), // | 2110 B(LdaSmi8), U8(2), // |
| 2096 B(TestEqual), R(0), // | 2111 B(TestEqual), R(0), // |
| 2097 B(JumpIfFalse), U8(4), // | 2112 B(JumpIfFalse), U8(4), // |
| 2098 B(Jump), U8(14), // | 2113 B(Jump), U8(14), // |
| 2099 B(LdaSmi8), U8(1), // | 2114 B(LdaSmi8), U8(1), // |
| 2100 B(Add), R(0), // | 2115 B(Add), R(0), // |
| 2101 B(Star), R(0), // | 2116 B(Star), R(0), // |
| 2102 B(LdaSmi8), U8(3), // | 2117 B(LdaSmi8), U8(3), // |
| 2103 B(TestLessThan), R(0), // | 2118 B(TestLessThan), R(0), // |
| 2104 B(JumpIfTrue), U8(-18), // | 2119 B(JumpIfTrue), U8(-18), // |
| 2105 B(LdaSmi8), U8(1), // | 2120 B(LdaSmi8), U8(1), // |
| 2106 B(Add), R(0), // | 2121 B(Add), R(0), // |
| 2107 B(Star), R(0), // | 2122 B(Star), R(0), // |
| 2108 B(Jump), U8(5), // | 2123 B(Jump), U8(4), // |
| 2109 B(LdaTrue), // | 2124 B(Jump), U8(-30), // |
| 2110 B(JumpIfTrue), U8(-31), // | |
| 2111 B(Ldar), R(0), // | 2125 B(Ldar), R(0), // |
| 2112 B(Return), // | 2126 B(Return), // |
| 2113 }, | 2127 }, |
| 2114 0}, | 2128 0}, |
| 2115 {"var x = 10;" | 2129 {"var x = 10;" |
| 2116 "var y = 1;" | 2130 "var y = 1;" |
| 2117 "while (x) {" | 2131 "while (x) {" |
| 2118 " y = y * 12;" | 2132 " y = y * 12;" |
| 2119 " x = x - 1;" | 2133 " x = x - 1;" |
| 2120 "}" | 2134 "}" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2132 B(Mul), R(1), // | 2146 B(Mul), R(1), // |
| 2133 B(Star), R(1), // | 2147 B(Star), R(1), // |
| 2134 B(LdaSmi8), U8(1), // | 2148 B(LdaSmi8), U8(1), // |
| 2135 B(Sub), R(0), // | 2149 B(Sub), R(0), // |
| 2136 B(Star), R(0), // | 2150 B(Star), R(0), // |
| 2137 B(Ldar), R(0), // | 2151 B(Ldar), R(0), // |
| 2138 B(JumpIfToBooleanTrue), U8(-14), // | 2152 B(JumpIfToBooleanTrue), U8(-14), // |
| 2139 B(Ldar), R(1), // | 2153 B(Ldar), R(1), // |
| 2140 B(Return), // | 2154 B(Return), // |
| 2141 }, | 2155 }, |
| 2142 0}, | 2156 0}, |
| 2143 {"var x = 10;" | 2157 {"var x = 10;" |
| 2144 "var y = 1;" | 2158 "var y = 1;" |
| 2145 "do {" | 2159 "do {" |
| 2146 " y = y * 12;" | 2160 " y = y * 12;" |
| 2147 " x = x - 1;" | 2161 " x = x - 1;" |
| 2148 "} while(x);" | 2162 "} while(x);" |
| 2149 "return y;", | 2163 "return y;", |
| 2150 2 * kPointerSize, | 2164 2 * kPointerSize, |
| 2151 1, | 2165 1, |
| 2152 27, | 2166 27, |
| 2153 { | 2167 { |
| 2154 B(LdaSmi8), U8(10), // | 2168 B(LdaSmi8), U8(10), // |
| 2155 B(Star), R(0), // | 2169 B(Star), R(0), // |
| 2156 B(LdaSmi8), U8(1), // | 2170 B(LdaSmi8), U8(1), // |
| 2157 B(Star), R(1), // | 2171 B(Star), R(1), // |
| 2158 B(LdaSmi8), U8(12), // | 2172 B(LdaSmi8), U8(12), // |
| 2159 B(Mul), R(1), // | 2173 B(Mul), R(1), // |
| 2160 B(Star), R(1), // | 2174 B(Star), R(1), // |
| 2161 B(LdaSmi8), U8(1), // | 2175 B(LdaSmi8), U8(1), // |
| 2162 B(Sub), R(0), // | 2176 B(Sub), R(0), // |
| 2163 B(Star), R(0), // | 2177 B(Star), R(0), // |
| 2164 B(Ldar), R(0), // | 2178 B(Ldar), R(0), // |
| 2165 B(JumpIfToBooleanTrue), U8(-14), // | 2179 B(JumpIfToBooleanTrue), U8(-14), // |
| 2166 B(Ldar), R(1), // | 2180 B(Ldar), R(1), // |
| 2167 B(Return), // | 2181 B(Return), // |
| 2168 }, | 2182 }, |
| 2169 0}, | 2183 0}, |
| 2170 {"var y = 1;" | 2184 {"var y = 1;" |
| 2171 "for (var x = 10; x; --x) {" | 2185 "for (var x = 10; x; --x) {" |
| 2172 " y = y * 12;" | 2186 " y = y * 12;" |
| 2173 "}" | 2187 "}" |
| 2174 "return y;", | 2188 "return y;", |
| 2175 2 * kPointerSize, | 2189 2 * kPointerSize, |
| 2176 1, | 2190 1, |
| 2177 29, | 2191 29, |
| 2178 { | 2192 { |
| 2179 B(LdaSmi8), U8(1), // | 2193 B(LdaSmi8), U8(1), // |
| 2180 B(Star), R(0), // | 2194 B(Star), R(0), // |
| 2181 B(LdaSmi8), U8(10), // | 2195 B(LdaSmi8), U8(10), // |
| 2182 B(Star), R(1), // | 2196 B(Star), R(1), // |
| 2183 B(Jump), U8(14), // | 2197 B(Jump), U8(14), // |
| 2184 B(LdaSmi8), U8(12), // | 2198 B(LdaSmi8), U8(12), // |
| 2185 B(Mul), R(0), // | 2199 B(Mul), R(0), // |
| 2186 B(Star), R(0), // | 2200 B(Star), R(0), // |
| 2187 B(Ldar), R(1), // | 2201 B(Ldar), R(1), // |
| 2188 B(ToNumber), // | 2202 B(ToNumber), // |
| 2189 B(Dec), // | 2203 B(Dec), // |
| 2190 B(Star), R(1), // | 2204 B(Star), R(1), // |
| 2191 B(Ldar), R(1), // | 2205 B(Ldar), R(1), // |
| 2192 B(JumpIfToBooleanTrue), U8(-14), // | 2206 B(JumpIfToBooleanTrue), U8(-14), // |
| 2193 B(Ldar), R(0), // | 2207 B(Ldar), R(0), // |
| 2194 B(Return), // | 2208 B(Return), // |
| 2195 }, | 2209 }, |
| 2196 0}}; | 2210 0}, |
| 2211 {"var x = 0; var y = 1;" |
| 2212 "do {" |
| 2213 " y = y * 10;" |
| 2214 " if (x == 5) break;" |
| 2215 " x = x + 1;" |
| 2216 " if (x == 6) continue;" |
| 2217 "} while (false);" |
| 2218 "return y;", |
| 2219 2 * kPointerSize, |
| 2220 1, |
| 2221 38, |
| 2222 { |
| 2223 B(LdaZero), // |
| 2224 B(Star), R(0), // |
| 2225 B(LdaSmi8), U8(1), // |
| 2226 B(Star), R(1), // |
| 2227 B(LdaSmi8), U8(10), // |
| 2228 B(Mul), R(1), // |
| 2229 B(Star), R(1), // |
| 2230 B(LdaSmi8), U8(5), // |
| 2231 B(TestEqual), R(0), // |
| 2232 B(JumpIfFalse), U8(4), // |
| 2233 B(Jump), U8(16), // |
| 2234 B(LdaSmi8), U8(1), // |
| 2235 B(Add), R(0), // |
| 2236 B(Star), R(0), // |
| 2237 B(LdaSmi8), U8(6), // |
| 2238 B(TestEqual), R(0), // |
| 2239 B(JumpIfFalse), U8(4), // |
| 2240 B(Jump), U8(2), // |
| 2241 B(Ldar), R(1), // |
| 2242 B(Return), // |
| 2243 }, |
| 2244 0}, |
| 2245 {"var x = 0; var y = 1;" |
| 2246 "do {" |
| 2247 " y = y * 10;" |
| 2248 " if (x == 5) break;" |
| 2249 " x = x + 1;" |
| 2250 " if (x == 6) continue;" |
| 2251 "} while (true);" |
| 2252 "return y;", |
| 2253 2 * kPointerSize, |
| 2254 1, |
| 2255 40, |
| 2256 { |
| 2257 B(LdaZero), // |
| 2258 B(Star), R(0), // |
| 2259 B(LdaSmi8), U8(1), // |
| 2260 B(Star), R(1), // |
| 2261 B(LdaSmi8), U8(10), // |
| 2262 B(Mul), R(1), // |
| 2263 B(Star), R(1), // |
| 2264 B(LdaSmi8), U8(5), // |
| 2265 B(TestEqual), R(0), // |
| 2266 B(JumpIfFalse), U8(4), // |
| 2267 B(Jump), U8(18), // |
| 2268 B(LdaSmi8), U8(1), // |
| 2269 B(Add), R(0), // |
| 2270 B(Star), R(0), // |
| 2271 B(LdaSmi8), U8(6), // |
| 2272 B(TestEqual), R(0), // |
| 2273 B(JumpIfFalse), U8(4), // |
| 2274 B(Jump), U8(2), // |
| 2275 B(Jump), U8(-28), // |
| 2276 B(Ldar), R(1), // |
| 2277 B(Return), // |
| 2278 }, |
| 2279 0}, |
| 2280 {"var x = 0;" |
| 2281 "while(false) {" |
| 2282 " x = x + 1;" |
| 2283 "};" |
| 2284 "return x;", |
| 2285 1 * kPointerSize, |
| 2286 1, |
| 2287 6, |
| 2288 { |
| 2289 B(LdaZero), // |
| 2290 B(Star), R(0), // |
| 2291 B(Ldar), R(0), // |
| 2292 B(Return), // |
| 2293 }, |
| 2294 0}, |
| 2295 {"var x = 0;" |
| 2296 "for( var i = 0; false; i++) {" |
| 2297 " x = x + 1;" |
| 2298 "};" |
| 2299 "return x;", |
| 2300 2 * kPointerSize, |
| 2301 1, |
| 2302 9, |
| 2303 { |
| 2304 B(LdaZero), // |
| 2305 B(Star), R(0), // |
| 2306 B(LdaZero), // |
| 2307 B(Star), R(1), // |
| 2308 B(Ldar), R(0), // |
| 2309 B(Return), // |
| 2310 }, |
| 2311 0}, |
| 2312 {"var x = 0;" |
| 2313 "for( var i = 0; true; ++i) {" |
| 2314 " x = x + 1;" |
| 2315 " if (x == 20) break;" |
| 2316 "};" |
| 2317 "return x;", |
| 2318 2 * kPointerSize, |
| 2319 1, |
| 2320 31, |
| 2321 { |
| 2322 B(LdaZero), // |
| 2323 B(Star), R(0), // |
| 2324 B(LdaZero), // |
| 2325 B(Star), R(1), // |
| 2326 B(LdaSmi8), U8(1), // |
| 2327 B(Add), R(0), // |
| 2328 B(Star), R(0), // |
| 2329 B(LdaSmi8), U8(20), // |
| 2330 B(TestEqual), R(0), // |
| 2331 B(JumpIfFalse), U8(4), // |
| 2332 B(Jump), U8(10), // |
| 2333 B(Ldar), R(1), // |
| 2334 B(ToNumber), // |
| 2335 B(Inc), // |
| 2336 B(Star), R(1), // |
| 2337 B(Jump), U8(-20), // |
| 2338 B(Ldar), R(0), // |
| 2339 B(Return), // |
| 2340 }, |
| 2341 0}, |
| 2342 }; |
| 2197 | 2343 |
| 2198 for (size_t i = 0; i < arraysize(snippets); i++) { | 2344 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 2199 Handle<BytecodeArray> bytecode_array = | 2345 Handle<BytecodeArray> bytecode_array = |
| 2200 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 2346 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
| 2201 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 2347 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 2202 } | 2348 } |
| 2203 } | 2349 } |
| 2204 | 2350 |
| 2205 | 2351 |
| 2206 TEST(UnaryOperators) { | 2352 TEST(UnaryOperators) { |
| (...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3287 3, | 3433 3, |
| 3288 { | 3434 { |
| 3289 B(LdaConstant), U8(0), // | 3435 B(LdaConstant), U8(0), // |
| 3290 B(Throw), // | 3436 B(Throw), // |
| 3291 }, | 3437 }, |
| 3292 1, | 3438 1, |
| 3293 {"Error"}}, | 3439 {"Error"}}, |
| 3294 {"if ('test') { throw 'Error'; };", | 3440 {"if ('test') { throw 'Error'; };", |
| 3295 0, | 3441 0, |
| 3296 1, | 3442 1, |
| 3297 9, | 3443 5, |
| 3298 { | 3444 { |
| 3299 B(LdaConstant), U8(0), // | 3445 B(LdaConstant), U8(0), // |
| 3300 B(JumpIfToBooleanFalse), U8(5), // | 3446 B(Throw), // |
| 3301 B(LdaConstant), U8(1), // | 3447 B(LdaUndefined), // |
| 3302 B(Throw), // | 3448 B(Return), // |
| 3303 B(LdaUndefined), // | |
| 3304 B(Return), // | |
| 3305 }, | 3449 }, |
| 3306 2, | 3450 1, |
| 3307 {"test", "Error"}}, | 3451 {"Error"}}, |
| 3308 }; | 3452 }; |
| 3309 | 3453 |
| 3310 for (size_t i = 0; i < arraysize(snippets); i++) { | 3454 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 3311 Handle<BytecodeArray> bytecode_array = | 3455 Handle<BytecodeArray> bytecode_array = |
| 3312 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 3456 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
| 3313 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 3457 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 3314 } | 3458 } |
| 3315 } | 3459 } |
| 3316 | 3460 |
| 3317 | 3461 |
| (...skipping 1465 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4783 for (size_t i = 0; i < arraysize(snippets); i++) { | 4927 for (size_t i = 0; i < arraysize(snippets); i++) { |
| 4784 Handle<BytecodeArray> bytecode_array = | 4928 Handle<BytecodeArray> bytecode_array = |
| 4785 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 4929 helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); |
| 4786 CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 4930 CheckBytecodeArrayEqual(snippets[i], bytecode_array); |
| 4787 } | 4931 } |
| 4788 } | 4932 } |
| 4789 | 4933 |
| 4790 } // namespace interpreter | 4934 } // namespace interpreter |
| 4791 } // namespace internal | 4935 } // namespace internal |
| 4792 } // namespace v8 | 4936 } // namespace v8 |
| OLD | NEW |