Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(243)

Side by Side Diff: src/ia32/lithium-ia32.h

Issue 6452001: Allow esi to be an allocatable register on IA32. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698