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 |