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 |