| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 419 LLabel* replacement_; | 419 LLabel* replacement_; |
| 420 }; | 420 }; |
| 421 | 421 |
| 422 | 422 |
| 423 class LParameter: public LTemplateInstruction<1, 0, 0> { | 423 class LParameter: public LTemplateInstruction<1, 0, 0> { |
| 424 public: | 424 public: |
| 425 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter") | 425 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter") |
| 426 }; | 426 }; |
| 427 | 427 |
| 428 | 428 |
| 429 class LCallStub: public LTemplateInstruction<1, 0, 0> { | 429 class LCallStub: public LTemplateInstruction<1, 1, 0> { |
| 430 public: | 430 public: |
| 431 explicit LCallStub(LOperand* context) { |
| 432 inputs_[0] = context; |
| 433 } |
| 434 |
| 431 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") | 435 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") |
| 432 DECLARE_HYDROGEN_ACCESSOR(CallStub) | 436 DECLARE_HYDROGEN_ACCESSOR(CallStub) |
| 433 | 437 |
| 438 LOperand* context() { return inputs_[0]; } |
| 439 |
| 434 TranscendentalCache::Type transcendental_type() { | 440 TranscendentalCache::Type transcendental_type() { |
| 435 return hydrogen()->transcendental_type(); | 441 return hydrogen()->transcendental_type(); |
| 436 } | 442 } |
| 437 }; | 443 }; |
| 438 | 444 |
| 439 | 445 |
| 440 class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> { | 446 class LUnknownOSRValue: public LTemplateInstruction<1, 0, 0> { |
| 441 public: | 447 public: |
| 442 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") | 448 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue, "unknown-osr-value") |
| 443 }; | 449 }; |
| (...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 826 inputs_[1] = right; | 832 inputs_[1] = right; |
| 827 } | 833 } |
| 828 | 834 |
| 829 DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch") | 835 DECLARE_CONCRETE_INSTRUCTION(CmpTAndBranch, "cmp-t-and-branch") |
| 830 DECLARE_HYDROGEN_ACCESSOR(Compare) | 836 DECLARE_HYDROGEN_ACCESSOR(Compare) |
| 831 | 837 |
| 832 Token::Value op() const { return hydrogen()->token(); } | 838 Token::Value op() const { return hydrogen()->token(); } |
| 833 }; | 839 }; |
| 834 | 840 |
| 835 | 841 |
| 836 class LInstanceOf: public LTemplateInstruction<1, 2, 0> { | 842 class LInstanceOf: public LTemplateInstruction<1, 3, 0> { |
| 837 public: | 843 public: |
| 838 LInstanceOf(LOperand* left, LOperand* right) { | 844 LInstanceOf(LOperand* context, LOperand* left, LOperand* right) { |
| 839 inputs_[0] = left; | 845 inputs_[0] = context; |
| 840 inputs_[1] = right; | 846 inputs_[1] = left; |
| 847 inputs_[2] = right; |
| 841 } | 848 } |
| 842 | 849 |
| 843 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") | 850 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") |
| 851 |
| 852 LOperand* context() { return inputs_[0]; } |
| 844 }; | 853 }; |
| 845 | 854 |
| 846 | 855 |
| 847 class LInstanceOfAndBranch: public LControlInstruction<2, 0> { | 856 class LInstanceOfAndBranch: public LControlInstruction<3, 0> { |
| 848 public: | 857 public: |
| 849 LInstanceOfAndBranch(LOperand* left, LOperand* right) { | 858 LInstanceOfAndBranch(LOperand* context, LOperand* left, LOperand* right) { |
| 850 inputs_[0] = left; | 859 inputs_[0] = context; |
| 851 inputs_[1] = right; | 860 inputs_[1] = left; |
| 861 inputs_[2] = right; |
| 852 } | 862 } |
| 853 | 863 |
| 854 DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch") | 864 DECLARE_CONCRETE_INSTRUCTION(InstanceOfAndBranch, "instance-of-and-branch") |
| 865 |
| 866 LOperand* context() { return inputs_[0]; } |
| 855 }; | 867 }; |
| 856 | 868 |
| 857 | 869 |
| 858 class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> { | 870 class LInstanceOfKnownGlobal: public LTemplateInstruction<1, 1, 1> { |
| 859 public: | 871 public: |
| 860 LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) { | 872 LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) { |
| 861 inputs_[0] = value; | 873 inputs_[0] = value; |
| 862 temps_[0] = temp; | 874 temps_[0] = temp; |
| 863 } | 875 } |
| 864 | 876 |
| (...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1136 public: | 1148 public: |
| 1137 explicit LLoadNamedField(LOperand* object) { | 1149 explicit LLoadNamedField(LOperand* object) { |
| 1138 inputs_[0] = object; | 1150 inputs_[0] = object; |
| 1139 } | 1151 } |
| 1140 | 1152 |
| 1141 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") | 1153 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") |
| 1142 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) | 1154 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) |
| 1143 }; | 1155 }; |
| 1144 | 1156 |
| 1145 | 1157 |
| 1146 class LLoadNamedGeneric: public LTemplateInstruction<1, 1, 0> { | 1158 class LLoadNamedGeneric: public LTemplateInstruction<1, 2, 0> { |
| 1147 public: | 1159 public: |
| 1148 explicit LLoadNamedGeneric(LOperand* object) { | 1160 LLoadNamedGeneric(LOperand* context, LOperand* object) { |
| 1149 inputs_[0] = object; | 1161 inputs_[0] = context; |
| 1162 inputs_[1] = object; |
| 1150 } | 1163 } |
| 1151 | 1164 |
| 1152 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") | 1165 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") |
| 1153 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) | 1166 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) |
| 1154 | 1167 |
| 1155 LOperand* object() { return inputs_[0]; } | 1168 LOperand* context() { return inputs_[0]; } |
| 1169 LOperand* object() { return inputs_[1]; } |
| 1156 Handle<Object> name() const { return hydrogen()->name(); } | 1170 Handle<Object> name() const { return hydrogen()->name(); } |
| 1157 }; | 1171 }; |
| 1158 | 1172 |
| 1159 | 1173 |
| 1160 class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 1> { | 1174 class LLoadFunctionPrototype: public LTemplateInstruction<1, 1, 1> { |
| 1161 public: | 1175 public: |
| 1162 LLoadFunctionPrototype(LOperand* function, LOperand* temp) { | 1176 LLoadFunctionPrototype(LOperand* function, LOperand* temp) { |
| 1163 inputs_[0] = function; | 1177 inputs_[0] = function; |
| 1164 temps_[0] = temp; | 1178 temps_[0] = temp; |
| 1165 } | 1179 } |
| (...skipping 23 matching lines...) Expand all Loading... |
| 1189 } | 1203 } |
| 1190 | 1204 |
| 1191 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") | 1205 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastElement, "load-keyed-fast-element") |
| 1192 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) | 1206 DECLARE_HYDROGEN_ACCESSOR(LoadKeyedFastElement) |
| 1193 | 1207 |
| 1194 LOperand* elements() { return inputs_[0]; } | 1208 LOperand* elements() { return inputs_[0]; } |
| 1195 LOperand* key() { return inputs_[1]; } | 1209 LOperand* key() { return inputs_[1]; } |
| 1196 }; | 1210 }; |
| 1197 | 1211 |
| 1198 | 1212 |
| 1199 class LLoadKeyedGeneric: public LTemplateInstruction<1, 2, 0> { | 1213 class LLoadKeyedGeneric: public LTemplateInstruction<1, 3, 0> { |
| 1200 public: | 1214 public: |
| 1201 LLoadKeyedGeneric(LOperand* obj, LOperand* key) { | 1215 LLoadKeyedGeneric(LOperand* context, LOperand* obj, LOperand* key) { |
| 1202 inputs_[0] = obj; | 1216 inputs_[0] = context; |
| 1203 inputs_[1] = key; | 1217 inputs_[1] = obj; |
| 1218 inputs_[2] = key; |
| 1204 } | 1219 } |
| 1205 | 1220 |
| 1206 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") | 1221 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") |
| 1207 | 1222 |
| 1208 LOperand* object() { return inputs_[0]; } | 1223 LOperand* context() { return inputs_[0]; } |
| 1209 LOperand* key() { return inputs_[1]; } | 1224 LOperand* object() { return inputs_[1]; } |
| 1225 LOperand* key() { return inputs_[2]; } |
| 1210 }; | 1226 }; |
| 1211 | 1227 |
| 1212 | 1228 |
| 1213 class LLoadGlobal: public LTemplateInstruction<1, 0, 0> { | 1229 class LLoadGlobal: public LTemplateInstruction<1, 0, 0> { |
| 1214 public: | 1230 public: |
| 1215 DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global") | 1231 DECLARE_CONCRETE_INSTRUCTION(LoadGlobal, "load-global") |
| 1216 DECLARE_HYDROGEN_ACCESSOR(LoadGlobal) | 1232 DECLARE_HYDROGEN_ACCESSOR(LoadGlobal) |
| 1217 }; | 1233 }; |
| 1218 | 1234 |
| 1219 | 1235 |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1321 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function") | 1337 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function") |
| 1322 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction) | 1338 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction) |
| 1323 | 1339 |
| 1324 virtual void PrintDataTo(StringStream* stream); | 1340 virtual void PrintDataTo(StringStream* stream); |
| 1325 | 1341 |
| 1326 Handle<JSFunction> function() { return hydrogen()->function(); } | 1342 Handle<JSFunction> function() { return hydrogen()->function(); } |
| 1327 int arity() const { return hydrogen()->argument_count() - 1; } | 1343 int arity() const { return hydrogen()->argument_count() - 1; } |
| 1328 }; | 1344 }; |
| 1329 | 1345 |
| 1330 | 1346 |
| 1331 class LCallKeyed: public LTemplateInstruction<1, 1, 0> { | 1347 class LCallKeyed: public LTemplateInstruction<1, 2, 0> { |
| 1332 public: | 1348 public: |
| 1333 explicit LCallKeyed(LOperand* key) { | 1349 LCallKeyed(LOperand* context, LOperand* key) { |
| 1334 inputs_[0] = key; | 1350 inputs_[0] = context; |
| 1351 inputs_[1] = key; |
| 1335 } | 1352 } |
| 1336 | 1353 |
| 1337 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed") | 1354 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed") |
| 1338 DECLARE_HYDROGEN_ACCESSOR(CallKeyed) | 1355 DECLARE_HYDROGEN_ACCESSOR(CallKeyed) |
| 1339 | 1356 |
| 1357 LOperand* context() { return inputs_[0]; } |
| 1358 LOperand* key() { return inputs_[1]; } |
| 1359 |
| 1340 virtual void PrintDataTo(StringStream* stream); | 1360 virtual void PrintDataTo(StringStream* stream); |
| 1341 | 1361 |
| 1342 int arity() const { return hydrogen()->argument_count() - 1; } | 1362 int arity() const { return hydrogen()->argument_count() - 1; } |
| 1343 }; | 1363 }; |
| 1344 | 1364 |
| 1345 | 1365 |
| 1346 class LCallNamed: public LTemplateInstruction<1, 0, 0> { | 1366 class LCallNamed: public LTemplateInstruction<1, 1, 0> { |
| 1347 public: | 1367 public: |
| 1368 explicit LCallNamed(LOperand* context) { |
| 1369 inputs_[0] = context; |
| 1370 } |
| 1371 |
| 1348 DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named") | 1372 DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named") |
| 1349 DECLARE_HYDROGEN_ACCESSOR(CallNamed) | 1373 DECLARE_HYDROGEN_ACCESSOR(CallNamed) |
| 1350 | 1374 |
| 1351 virtual void PrintDataTo(StringStream* stream); | 1375 virtual void PrintDataTo(StringStream* stream); |
| 1352 | 1376 |
| 1377 LOperand* context() { return inputs_[0]; } |
| 1353 Handle<String> name() const { return hydrogen()->name(); } | 1378 Handle<String> name() const { return hydrogen()->name(); } |
| 1354 int arity() const { return hydrogen()->argument_count() - 1; } | 1379 int arity() const { return hydrogen()->argument_count() - 1; } |
| 1355 }; | 1380 }; |
| 1356 | 1381 |
| 1357 | 1382 |
| 1358 class LCallFunction: public LTemplateInstruction<1, 0, 0> { | 1383 class LCallFunction: public LTemplateInstruction<1, 1, 0> { |
| 1359 public: | 1384 public: |
| 1385 explicit LCallFunction(LOperand* context) { |
| 1386 inputs_[0] = context; |
| 1387 } |
| 1388 |
| 1360 DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function") | 1389 DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function") |
| 1361 DECLARE_HYDROGEN_ACCESSOR(CallFunction) | 1390 DECLARE_HYDROGEN_ACCESSOR(CallFunction) |
| 1362 | 1391 |
| 1392 LOperand* context() { return inputs_[0]; } |
| 1363 int arity() const { return hydrogen()->argument_count() - 2; } | 1393 int arity() const { return hydrogen()->argument_count() - 2; } |
| 1364 }; | 1394 }; |
| 1365 | 1395 |
| 1366 | 1396 |
| 1367 class LCallGlobal: public LTemplateInstruction<1, 0, 0> { | 1397 class LCallGlobal: public LTemplateInstruction<1, 1, 0> { |
| 1368 public: | 1398 public: |
| 1399 explicit LCallGlobal(LOperand* context) { |
| 1400 inputs_[0] = context; |
| 1401 } |
| 1402 |
| 1369 DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global") | 1403 DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global") |
| 1370 DECLARE_HYDROGEN_ACCESSOR(CallGlobal) | 1404 DECLARE_HYDROGEN_ACCESSOR(CallGlobal) |
| 1371 | 1405 |
| 1372 virtual void PrintDataTo(StringStream* stream); | 1406 virtual void PrintDataTo(StringStream* stream); |
| 1373 | 1407 |
| 1408 LOperand* context() { return inputs_[0]; } |
| 1374 Handle<String> name() const {return hydrogen()->name(); } | 1409 Handle<String> name() const {return hydrogen()->name(); } |
| 1375 int arity() const { return hydrogen()->argument_count() - 1; } | 1410 int arity() const { return hydrogen()->argument_count() - 1; } |
| 1376 }; | 1411 }; |
| 1377 | 1412 |
| 1378 | 1413 |
| 1379 class LCallKnownGlobal: public LTemplateInstruction<1, 0, 0> { | 1414 class LCallKnownGlobal: public LTemplateInstruction<1, 0, 0> { |
| 1380 public: | 1415 public: |
| 1381 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global") | 1416 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global") |
| 1382 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal) | 1417 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal) |
| 1383 | 1418 |
| 1384 virtual void PrintDataTo(StringStream* stream); | 1419 virtual void PrintDataTo(StringStream* stream); |
| 1385 | 1420 |
| 1386 Handle<JSFunction> target() const { return hydrogen()->target(); } | 1421 Handle<JSFunction> target() const { return hydrogen()->target(); } |
| 1387 int arity() const { return hydrogen()->argument_count() - 1; } | 1422 int arity() const { return hydrogen()->argument_count() - 1; } |
| 1388 }; | 1423 }; |
| 1389 | 1424 |
| 1390 | 1425 |
| 1391 class LCallNew: public LTemplateInstruction<1, 1, 0> { | 1426 class LCallNew: public LTemplateInstruction<1, 2, 0> { |
| 1392 public: | 1427 public: |
| 1393 explicit LCallNew(LOperand* constructor) { | 1428 LCallNew(LOperand* context, LOperand* constructor) { |
| 1394 inputs_[0] = constructor; | 1429 inputs_[0] = context; |
| 1430 inputs_[1] = constructor; |
| 1395 } | 1431 } |
| 1396 | 1432 |
| 1397 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new") | 1433 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new") |
| 1398 DECLARE_HYDROGEN_ACCESSOR(CallNew) | 1434 DECLARE_HYDROGEN_ACCESSOR(CallNew) |
| 1399 | 1435 |
| 1400 virtual void PrintDataTo(StringStream* stream); | 1436 virtual void PrintDataTo(StringStream* stream); |
| 1401 | 1437 |
| 1438 LOperand* context() { return inputs_[0]; } |
| 1439 LOperand* constructor() { return inputs_[1]; } |
| 1402 int arity() const { return hydrogen()->argument_count() - 1; } | 1440 int arity() const { return hydrogen()->argument_count() - 1; } |
| 1403 }; | 1441 }; |
| 1404 | 1442 |
| 1405 | 1443 |
| 1406 class LCallRuntime: public LTemplateInstruction<1, 0, 0> { | 1444 class LCallRuntime: public LTemplateInstruction<1, 0, 0> { |
| 1407 public: | 1445 public: |
| 1408 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") | 1446 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") |
| 1409 DECLARE_HYDROGEN_ACCESSOR(CallRuntime) | 1447 DECLARE_HYDROGEN_ACCESSOR(CallRuntime) |
| 1410 | 1448 |
| 1411 Runtime::Function* function() const { return hydrogen()->function(); } | 1449 Runtime::Function* function() const { return hydrogen()->function(); } |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1538 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") | 1576 DECLARE_CONCRETE_INSTRUCTION(StoreNamedField, "store-named-field") |
| 1539 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) | 1577 DECLARE_HYDROGEN_ACCESSOR(StoreNamedField) |
| 1540 | 1578 |
| 1541 bool is_in_object() { return hydrogen()->is_in_object(); } | 1579 bool is_in_object() { return hydrogen()->is_in_object(); } |
| 1542 int offset() { return hydrogen()->offset(); } | 1580 int offset() { return hydrogen()->offset(); } |
| 1543 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } | 1581 bool needs_write_barrier() { return hydrogen()->NeedsWriteBarrier(); } |
| 1544 Handle<Map> transition() const { return hydrogen()->transition(); } | 1582 Handle<Map> transition() const { return hydrogen()->transition(); } |
| 1545 }; | 1583 }; |
| 1546 | 1584 |
| 1547 | 1585 |
| 1548 class LStoreNamedGeneric: public LStoreNamed { | 1586 class LStoreNamedGeneric: public LTemplateInstruction<0, 3, 0> { |
| 1549 public: | 1587 public: |
| 1550 LStoreNamedGeneric(LOperand* obj, LOperand* val) | 1588 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) { |
| 1551 : LStoreNamed(obj, val) { } | 1589 inputs_[0] = context; |
| 1590 inputs_[1] = object; |
| 1591 inputs_[2] = value; |
| 1592 } |
| 1552 | 1593 |
| 1553 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") | 1594 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") |
| 1554 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) | 1595 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) |
| 1596 |
| 1597 LOperand* context() { return inputs_[0]; } |
| 1598 LOperand* object() { return inputs_[1]; } |
| 1599 LOperand* value() { return inputs_[2]; } |
| 1600 Handle<Object> name() const { return hydrogen()->name(); } |
| 1555 }; | 1601 }; |
| 1556 | 1602 |
| 1557 | 1603 |
| 1558 class LStoreKeyed: public LTemplateInstruction<0, 3, 0> { | 1604 class LStoreKeyed: public LTemplateInstruction<0, 3, 0> { |
| 1559 public: | 1605 public: |
| 1560 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { | 1606 LStoreKeyed(LOperand* obj, LOperand* key, LOperand* val) { |
| 1561 inputs_[0] = obj; | 1607 inputs_[0] = obj; |
| 1562 inputs_[1] = key; | 1608 inputs_[1] = key; |
| 1563 inputs_[2] = val; | 1609 inputs_[2] = val; |
| 1564 } | 1610 } |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1577 public: | 1623 public: |
| 1578 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) | 1624 LStoreKeyedFastElement(LOperand* obj, LOperand* key, LOperand* val) |
| 1579 : LStoreKeyed(obj, key, val) {} | 1625 : LStoreKeyed(obj, key, val) {} |
| 1580 | 1626 |
| 1581 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, | 1627 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedFastElement, |
| 1582 "store-keyed-fast-element") | 1628 "store-keyed-fast-element") |
| 1583 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) | 1629 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedFastElement) |
| 1584 }; | 1630 }; |
| 1585 | 1631 |
| 1586 | 1632 |
| 1587 class LStoreKeyedGeneric: public LStoreKeyed { | 1633 class LStoreKeyedGeneric: public LTemplateInstruction<0, 4, 0> { |
| 1588 public: | 1634 public: |
| 1589 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* val) | 1635 LStoreKeyedGeneric(LOperand* context, |
| 1590 : LStoreKeyed(obj, key, val) { } | 1636 LOperand* object, |
| 1637 LOperand* key, |
| 1638 LOperand* value) { |
| 1639 inputs_[0] = context; |
| 1640 inputs_[1] = object; |
| 1641 inputs_[2] = key; |
| 1642 inputs_[3] = value; |
| 1643 } |
| 1591 | 1644 |
| 1592 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") | 1645 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") |
| 1646 |
| 1647 LOperand* context() { return inputs_[0]; } |
| 1648 LOperand* object() { return inputs_[1]; } |
| 1649 LOperand* key() { return inputs_[2]; } |
| 1650 LOperand* value() { return inputs_[3]; } |
| 1593 }; | 1651 }; |
| 1594 | 1652 |
| 1595 | 1653 |
| 1596 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { | 1654 class LStringCharCodeAt: public LTemplateInstruction<1, 2, 0> { |
| 1597 public: | 1655 public: |
| 1598 LStringCharCodeAt(LOperand* string, LOperand* index) { | 1656 LStringCharCodeAt(LOperand* string, LOperand* index) { |
| 1599 inputs_[0] = string; | 1657 inputs_[0] = string; |
| 1600 inputs_[1] = index; | 1658 inputs_[1] = index; |
| 1601 } | 1659 } |
| 1602 | 1660 |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1688 }; | 1746 }; |
| 1689 | 1747 |
| 1690 | 1748 |
| 1691 class LArrayLiteral: public LTemplateInstruction<1, 0, 0> { | 1749 class LArrayLiteral: public LTemplateInstruction<1, 0, 0> { |
| 1692 public: | 1750 public: |
| 1693 DECLARE_CONCRETE_INSTRUCTION(ArrayLiteral, "array-literal") | 1751 DECLARE_CONCRETE_INSTRUCTION(ArrayLiteral, "array-literal") |
| 1694 DECLARE_HYDROGEN_ACCESSOR(ArrayLiteral) | 1752 DECLARE_HYDROGEN_ACCESSOR(ArrayLiteral) |
| 1695 }; | 1753 }; |
| 1696 | 1754 |
| 1697 | 1755 |
| 1698 class LObjectLiteral: public LTemplateInstruction<1, 0, 0> { | 1756 class LObjectLiteral: public LTemplateInstruction<1, 1, 0> { |
| 1699 public: | 1757 public: |
| 1758 explicit LObjectLiteral(LOperand* context) { |
| 1759 inputs_[0] = context; |
| 1760 } |
| 1761 |
| 1700 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object-literal") | 1762 DECLARE_CONCRETE_INSTRUCTION(ObjectLiteral, "object-literal") |
| 1701 DECLARE_HYDROGEN_ACCESSOR(ObjectLiteral) | 1763 DECLARE_HYDROGEN_ACCESSOR(ObjectLiteral) |
| 1764 |
| 1765 LOperand* context() { return inputs_[0]; } |
| 1702 }; | 1766 }; |
| 1703 | 1767 |
| 1704 | 1768 |
| 1705 class LRegExpLiteral: public LTemplateInstruction<1, 0, 0> { | 1769 class LRegExpLiteral: public LTemplateInstruction<1, 0, 0> { |
| 1706 public: | 1770 public: |
| 1707 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal") | 1771 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal") |
| 1708 DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral) | 1772 DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral) |
| 1709 }; | 1773 }; |
| 1710 | 1774 |
| 1711 | 1775 |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2017 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2081 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2018 }; | 2082 }; |
| 2019 | 2083 |
| 2020 #undef DECLARE_HYDROGEN_ACCESSOR | 2084 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2021 #undef DECLARE_INSTRUCTION | 2085 #undef DECLARE_INSTRUCTION |
| 2022 #undef DECLARE_CONCRETE_INSTRUCTION | 2086 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2023 | 2087 |
| 2024 } } // namespace v8::internal | 2088 } } // namespace v8::internal |
| 2025 | 2089 |
| 2026 #endif // V8_IA32_LITHIUM_IA32_H_ | 2090 #endif // V8_IA32_LITHIUM_IA32_H_ |
| OLD | NEW |