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

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

Issue 25420002: MIPS: Let the register allocator handle the context register. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Added missing ASSERT. Created 7 years, 2 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
« no previous file with comments | « src/mips/lithium-codegen-mips.cc ('k') | src/mips/lithium-mips.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 464 matching lines...) Expand 10 before | Expand all | Expand 10 after
475 475
476 class LParameter V8_FINAL : public LTemplateInstruction<1, 0, 0> { 476 class LParameter V8_FINAL : public LTemplateInstruction<1, 0, 0> {
477 public: 477 public:
478 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE { 478 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE {
479 return false; 479 return false;
480 } 480 }
481 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter") 481 DECLARE_CONCRETE_INSTRUCTION(Parameter, "parameter")
482 }; 482 };
483 483
484 484
485 class LCallStub V8_FINAL : public LTemplateInstruction<1, 0, 0> { 485 class LCallStub V8_FINAL : public LTemplateInstruction<1, 1, 0> {
486 public: 486 public:
487 explicit LCallStub(LOperand* context) {
488 inputs_[0] = context;
489 }
490
491 LOperand* context() { return inputs_[0]; }
492
487 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub") 493 DECLARE_CONCRETE_INSTRUCTION(CallStub, "call-stub")
488 DECLARE_HYDROGEN_ACCESSOR(CallStub) 494 DECLARE_HYDROGEN_ACCESSOR(CallStub)
489 495
490 TranscendentalCache::Type transcendental_type() { 496 TranscendentalCache::Type transcendental_type() {
491 return hydrogen()->transcendental_type(); 497 return hydrogen()->transcendental_type();
492 } 498 }
493 }; 499 };
494 500
495 501
496 class LUnknownOSRValue V8_FINAL : public LTemplateInstruction<1, 0, 0> { 502 class LUnknownOSRValue V8_FINAL : public LTemplateInstruction<1, 0, 0> {
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
773 } 779 }
774 780
775 LOperand* value() { return inputs_[0]; } 781 LOperand* value() { return inputs_[0]; }
776 LOperand* temp() { return temps_[0]; } 782 LOperand* temp() { return temps_[0]; }
777 783
778 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round") 784 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round")
779 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) 785 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
780 }; 786 };
781 787
782 788
783 class LMathAbs V8_FINAL : public LTemplateInstruction<1, 1, 0> { 789 class LMathAbs V8_FINAL : public LTemplateInstruction<1, 2, 0> {
784 public: 790 public:
785 explicit LMathAbs(LOperand* value) { 791 LMathAbs(LOperand* context, LOperand* value) {
792 inputs_[1] = context;
786 inputs_[0] = value; 793 inputs_[0] = value;
787 } 794 }
788 795
796 LOperand* context() { return inputs_[1]; }
789 LOperand* value() { return inputs_[0]; } 797 LOperand* value() { return inputs_[0]; }
790 798
791 DECLARE_CONCRETE_INSTRUCTION(MathAbs, "math-abs") 799 DECLARE_CONCRETE_INSTRUCTION(MathAbs, "math-abs")
792 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) 800 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation)
793 }; 801 };
794 802
795 803
796 class LMathLog V8_FINAL : public LTemplateInstruction<1, 1, 0> { 804 class LMathLog V8_FINAL : public LTemplateInstruction<1, 1, 0> {
797 public: 805 public:
798 explicit LMathLog(LOperand* value) { 806 explicit LMathLog(LOperand* value) {
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
977 LOperand* temp() { return temps_[0]; } 985 LOperand* temp() { return temps_[0]; }
978 986
979 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch, 987 DECLARE_CONCRETE_INSTRUCTION(IsUndetectableAndBranch,
980 "is-undetectable-and-branch") 988 "is-undetectable-and-branch")
981 DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch) 989 DECLARE_HYDROGEN_ACCESSOR(IsUndetectableAndBranch)
982 990
983 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 991 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
984 }; 992 };
985 993
986 994
987 class LStringCompareAndBranch V8_FINAL : public LControlInstruction<2, 0> { 995 class LStringCompareAndBranch V8_FINAL : public LControlInstruction<3, 0> {
988 public: 996 public:
989 LStringCompareAndBranch(LOperand* left, LOperand* right) { 997 LStringCompareAndBranch(LOperand* context, LOperand* left, LOperand* right) {
990 inputs_[0] = left; 998 inputs_[0] = context;
991 inputs_[1] = right; 999 inputs_[1] = left;
1000 inputs_[2] = right;
992 } 1001 }
993 1002
994 LOperand* left() { return inputs_[0]; } 1003 LOperand* context() { return inputs_[0]; }
995 LOperand* right() { return inputs_[1]; } 1004 LOperand* left() { return inputs_[1]; }
1005 LOperand* right() { return inputs_[2]; }
996 1006
997 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch, 1007 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch,
998 "string-compare-and-branch") 1008 "string-compare-and-branch")
999 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch) 1009 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch)
1000 1010
1001 Token::Value op() const { return hydrogen()->token(); } 1011 Token::Value op() const { return hydrogen()->token(); }
1002 1012
1003 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1013 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1004 }; 1014 };
1005 1015
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1061 LOperand* temp() { return temps_[0]; } 1071 LOperand* temp() { return temps_[0]; }
1062 1072
1063 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch, 1073 DECLARE_CONCRETE_INSTRUCTION(ClassOfTestAndBranch,
1064 "class-of-test-and-branch") 1074 "class-of-test-and-branch")
1065 DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch) 1075 DECLARE_HYDROGEN_ACCESSOR(ClassOfTestAndBranch)
1066 1076
1067 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1077 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1068 }; 1078 };
1069 1079
1070 1080
1071 class LCmpT V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1081 class LCmpT V8_FINAL : public LTemplateInstruction<1, 3, 0> {
1072 public: 1082 public:
1073 LCmpT(LOperand* left, LOperand* right) { 1083 LCmpT(LOperand* context, LOperand* left, LOperand* right) {
1074 inputs_[0] = left; 1084 inputs_[0] = context;
1075 inputs_[1] = right; 1085 inputs_[1] = left;
1086 inputs_[2] = right;
1076 } 1087 }
1077 1088
1078 LOperand* left() { return inputs_[0]; } 1089 LOperand* context() { return inputs_[0]; }
1079 LOperand* right() { return inputs_[1]; } 1090 LOperand* left() { return inputs_[1]; }
1091 LOperand* right() { return inputs_[2]; }
1080 1092
1081 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t") 1093 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t")
1082 DECLARE_HYDROGEN_ACCESSOR(CompareGeneric) 1094 DECLARE_HYDROGEN_ACCESSOR(CompareGeneric)
1083 1095
1084 Token::Value op() const { return hydrogen()->token(); } 1096 Token::Value op() const { return hydrogen()->token(); }
1085 }; 1097 };
1086 1098
1087 1099
1088 class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1100 class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 3, 0> {
1089 public: 1101 public:
1090 LInstanceOf(LOperand* left, LOperand* right) { 1102 LInstanceOf(LOperand* context, LOperand* left, LOperand* right) {
1091 inputs_[0] = left; 1103 inputs_[0] = context;
1092 inputs_[1] = right; 1104 inputs_[1] = left;
1105 inputs_[2] = right;
1093 } 1106 }
1094 1107
1095 LOperand* left() { return inputs_[0]; } 1108 LOperand* context() { return inputs_[0]; }
1096 LOperand* right() { return inputs_[1]; } 1109 LOperand* left() { return inputs_[1]; }
1110 LOperand* right() { return inputs_[2]; }
1097 1111
1098 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") 1112 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of")
1099 }; 1113 };
1100 1114
1101 1115
1102 class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 1, 1> { 1116 class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 2, 1> {
1103 public: 1117 public:
1104 LInstanceOfKnownGlobal(LOperand* value, LOperand* temp) { 1118 LInstanceOfKnownGlobal(LOperand* context, LOperand* value, LOperand* temp) {
1105 inputs_[0] = value; 1119 inputs_[0] = context;
1120 inputs_[1] = value;
1106 temps_[0] = temp; 1121 temps_[0] = temp;
1107 } 1122 }
1108 1123
1109 LOperand* value() { return inputs_[0]; } 1124 LOperand* context() { return inputs_[0]; }
1125 LOperand* value() { return inputs_[1]; }
1110 LOperand* temp() { return temps_[0]; } 1126 LOperand* temp() { return temps_[0]; }
1111 1127
1112 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal, 1128 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal,
1113 "instance-of-known-global") 1129 "instance-of-known-global")
1114 DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal) 1130 DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal)
1115 1131
1116 Handle<JSFunction> function() const { return hydrogen()->function(); } 1132 Handle<JSFunction> function() const { return hydrogen()->function(); }
1117 LEnvironment* GetDeferredLazyDeoptimizationEnvironment() { 1133 LEnvironment* GetDeferredLazyDeoptimizationEnvironment() {
1118 return lazy_deopt_env_; 1134 return lazy_deopt_env_;
1119 } 1135 }
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 LOperand* value() { return inputs_[2]; } 1381 LOperand* value() { return inputs_[2]; }
1366 1382
1367 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") 1383 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char")
1368 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) 1384 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar)
1369 1385
1370 private: 1386 private:
1371 String::Encoding encoding_; 1387 String::Encoding encoding_;
1372 }; 1388 };
1373 1389
1374 1390
1375 class LThrow V8_FINAL : public LTemplateInstruction<0, 1, 0> { 1391 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1376 public: 1392 public:
1377 explicit LThrow(LOperand* value) { 1393 LThrow(LOperand* context, LOperand* value) {
1378 inputs_[0] = value; 1394 inputs_[0] = context;
1395 inputs_[1] = value;
1379 } 1396 }
1380 1397
1381 LOperand* value() { return inputs_[0]; } 1398 LOperand* context() { return inputs_[0]; }
1399 LOperand* value() { return inputs_[1]; }
1382 1400
1383 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw") 1401 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
1384 }; 1402 };
1385 1403
1386 1404
1387 class LAddI V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1405 class LAddI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1388 public: 1406 public:
1389 LAddI(LOperand* left, LOperand* right) { 1407 LAddI(LOperand* left, LOperand* right) {
1390 inputs_[0] = left; 1408 inputs_[0] = left;
1391 inputs_[1] = right; 1409 inputs_[1] = right;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
1467 return LInstruction::kArithmeticD; 1485 return LInstruction::kArithmeticD;
1468 } 1486 }
1469 virtual void CompileToNative(LCodeGen* generator) V8_OVERRIDE; 1487 virtual void CompileToNative(LCodeGen* generator) V8_OVERRIDE;
1470 virtual const char* Mnemonic() const V8_OVERRIDE; 1488 virtual const char* Mnemonic() const V8_OVERRIDE;
1471 1489
1472 private: 1490 private:
1473 Token::Value op_; 1491 Token::Value op_;
1474 }; 1492 };
1475 1493
1476 1494
1477 class LArithmeticT V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1495 class LArithmeticT V8_FINAL : public LTemplateInstruction<1, 3, 0> {
1478 public: 1496 public:
1479 LArithmeticT(Token::Value op, LOperand* left, LOperand* right) 1497 LArithmeticT(Token::Value op,
1498 LOperand* context,
1499 LOperand* left,
1500 LOperand* right)
1480 : op_(op) { 1501 : op_(op) {
1481 inputs_[0] = left; 1502 inputs_[0] = context;
1482 inputs_[1] = right; 1503 inputs_[1] = left;
1504 inputs_[2] = right;
1483 } 1505 }
1484 1506
1485 LOperand* left() { return inputs_[0]; } 1507 LOperand* context() { return inputs_[0]; }
1486 LOperand* right() { return inputs_[1]; } 1508 LOperand* left() { return inputs_[1]; }
1509 LOperand* right() { return inputs_[2]; }
1487 Token::Value op() const { return op_; } 1510 Token::Value op() const { return op_; }
1488 1511
1489 virtual Opcode opcode() const V8_FINAL { return LInstruction::kArithmeticT; } 1512 virtual Opcode opcode() const V8_FINAL { return LInstruction::kArithmeticT; }
1490 virtual void CompileToNative(LCodeGen* generator) V8_OVERRIDE; 1513 virtual void CompileToNative(LCodeGen* generator) V8_OVERRIDE;
1491 virtual const char* Mnemonic() const V8_OVERRIDE; 1514 virtual const char* Mnemonic() const V8_OVERRIDE;
1492 1515
1493 private: 1516 private:
1494 Token::Value op_; 1517 Token::Value op_;
1495 }; 1518 };
1496 1519
1497 1520
1498 class LReturn V8_FINAL : public LTemplateInstruction<0, 2, 0> { 1521 class LReturn V8_FINAL : public LTemplateInstruction<0, 3, 0> {
1499 public: 1522 public:
1500 explicit LReturn(LOperand* value, LOperand* parameter_count) { 1523 LReturn(LOperand* value, LOperand* context, LOperand* parameter_count) {
1501 inputs_[0] = value; 1524 inputs_[0] = value;
1502 inputs_[1] = parameter_count; 1525 inputs_[1] = context;
1526 inputs_[2] = parameter_count;
1503 } 1527 }
1504 1528
1505 LOperand* value() { return inputs_[0]; } 1529 LOperand* value() { return inputs_[0]; }
1506 1530
1507 bool has_constant_parameter_count() { 1531 bool has_constant_parameter_count() {
1508 return parameter_count()->IsConstantOperand(); 1532 return parameter_count()->IsConstantOperand();
1509 } 1533 }
1510 LConstantOperand* constant_parameter_count() { 1534 LConstantOperand* constant_parameter_count() {
1511 ASSERT(has_constant_parameter_count()); 1535 ASSERT(has_constant_parameter_count());
1512 return LConstantOperand::cast(parameter_count()); 1536 return LConstantOperand::cast(parameter_count());
1513 } 1537 }
1514 LOperand* parameter_count() { return inputs_[1]; } 1538 LOperand* parameter_count() { return inputs_[2]; }
1515 1539
1516 DECLARE_CONCRETE_INSTRUCTION(Return, "return") 1540 DECLARE_CONCRETE_INSTRUCTION(Return, "return")
1517 }; 1541 };
1518 1542
1519 1543
1520 class LLoadNamedField V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1544 class LLoadNamedField V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1521 public: 1545 public:
1522 explicit LLoadNamedField(LOperand* object) { 1546 explicit LLoadNamedField(LOperand* object) {
1523 inputs_[0] = object; 1547 inputs_[0] = object;
1524 } 1548 }
1525 1549
1526 LOperand* object() { return inputs_[0]; } 1550 LOperand* object() { return inputs_[0]; }
1527 1551
1528 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field") 1552 DECLARE_CONCRETE_INSTRUCTION(LoadNamedField, "load-named-field")
1529 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField) 1553 DECLARE_HYDROGEN_ACCESSOR(LoadNamedField)
1530 }; 1554 };
1531 1555
1532 1556
1533 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1557 class LLoadNamedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1534 public: 1558 public:
1535 explicit LLoadNamedGeneric(LOperand* object) { 1559 LLoadNamedGeneric(LOperand* context, LOperand* object) {
1536 inputs_[0] = object; 1560 inputs_[0] = context;
1561 inputs_[1] = object;
1537 } 1562 }
1538 1563
1539 LOperand* object() { return inputs_[0]; } 1564 LOperand* context() { return inputs_[0]; }
1565 LOperand* object() { return inputs_[1]; }
1540 1566
1541 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic") 1567 DECLARE_CONCRETE_INSTRUCTION(LoadNamedGeneric, "load-named-generic")
1542 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric) 1568 DECLARE_HYDROGEN_ACCESSOR(LoadNamedGeneric)
1543 1569
1544 Handle<Object> name() const { return hydrogen()->name(); } 1570 Handle<Object> name() const { return hydrogen()->name(); }
1545 }; 1571 };
1546 1572
1547 1573
1548 class LLoadFunctionPrototype V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1574 class LLoadFunctionPrototype V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1549 public: 1575 public:
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
1598 } 1624 }
1599 1625
1600 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed") 1626 DECLARE_CONCRETE_INSTRUCTION(LoadKeyed, "load-keyed")
1601 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed) 1627 DECLARE_HYDROGEN_ACCESSOR(LoadKeyed)
1602 1628
1603 virtual void PrintDataTo(StringStream* stream); 1629 virtual void PrintDataTo(StringStream* stream);
1604 uint32_t additional_index() const { return hydrogen()->index_offset(); } 1630 uint32_t additional_index() const { return hydrogen()->index_offset(); }
1605 }; 1631 };
1606 1632
1607 1633
1608 class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1634 class LLoadKeyedGeneric V8_FINAL : public LTemplateInstruction<1, 3, 0> {
1609 public: 1635 public:
1610 LLoadKeyedGeneric(LOperand* object, LOperand* key) { 1636 LLoadKeyedGeneric(LOperand* context, LOperand* object, LOperand* key) {
1611 inputs_[0] = object; 1637 inputs_[0] = context;
1612 inputs_[1] = key; 1638 inputs_[1] = object;
1639 inputs_[2] = key;
1613 } 1640 }
1614 1641
1615 LOperand* object() { return inputs_[0]; } 1642 LOperand* context() { return inputs_[0]; }
1616 LOperand* key() { return inputs_[1]; } 1643 LOperand* object() { return inputs_[1]; }
1644 LOperand* key() { return inputs_[2]; }
1617 1645
1618 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic") 1646 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedGeneric, "load-keyed-generic")
1619 }; 1647 };
1620 1648
1621 1649
1622 class LLoadGlobalCell V8_FINAL : public LTemplateInstruction<1, 0, 0> { 1650 class LLoadGlobalCell V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1623 public: 1651 public:
1624 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell") 1652 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell, "load-global-cell")
1625 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell) 1653 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalCell)
1626 }; 1654 };
1627 1655
1628 1656
1629 class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1657 class LLoadGlobalGeneric V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1630 public: 1658 public:
1631 explicit LLoadGlobalGeneric(LOperand* global_object) { 1659 LLoadGlobalGeneric(LOperand* context, LOperand* global_object) {
1632 inputs_[0] = global_object; 1660 inputs_[0] = context;
1661 inputs_[1] = global_object;
1633 } 1662 }
1634 1663
1635 LOperand* global_object() { return inputs_[0]; } 1664 LOperand* context() { return inputs_[0]; }
1665 LOperand* global_object() { return inputs_[1]; }
1636 1666
1637 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic") 1667 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalGeneric, "load-global-generic")
1638 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric) 1668 DECLARE_HYDROGEN_ACCESSOR(LoadGlobalGeneric)
1639 1669
1640 Handle<Object> name() const { return hydrogen()->name(); } 1670 Handle<Object> name() const { return hydrogen()->name(); }
1641 bool for_typeof() const { return hydrogen()->for_typeof(); } 1671 bool for_typeof() const { return hydrogen()->for_typeof(); }
1642 }; 1672 };
1643 1673
1644 1674
1645 class LStoreGlobalCell V8_FINAL : public LTemplateInstruction<0, 1, 1> { 1675 class LStoreGlobalCell V8_FINAL : public LTemplateInstruction<0, 1, 1> {
1646 public: 1676 public:
1647 LStoreGlobalCell(LOperand* value, LOperand* temp) { 1677 LStoreGlobalCell(LOperand* value, LOperand* temp) {
1648 inputs_[0] = value; 1678 inputs_[0] = value;
1649 temps_[0] = temp; 1679 temps_[0] = temp;
1650 } 1680 }
1651 1681
1652 LOperand* value() { return inputs_[0]; } 1682 LOperand* value() { return inputs_[0]; }
1653 LOperand* temp() { return temps_[0]; } 1683 LOperand* temp() { return temps_[0]; }
1654 1684
1655 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell") 1685 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell, "store-global-cell")
1656 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell) 1686 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalCell)
1657 }; 1687 };
1658 1688
1659 1689
1660 class LStoreGlobalGeneric V8_FINAL : public LTemplateInstruction<0, 2, 0> { 1690 class LStoreGlobalGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
1661 public: 1691 public:
1662 explicit LStoreGlobalGeneric(LOperand* global_object, 1692 LStoreGlobalGeneric(LOperand* context,
1663 LOperand* value) { 1693 LOperand* global_object,
1664 inputs_[0] = global_object; 1694 LOperand* value) {
1665 inputs_[1] = value; 1695 inputs_[0] = context;
1696 inputs_[1] = global_object;
1697 inputs_[2] = value;
1666 } 1698 }
1667 1699
1668 LOperand* global_object() { return inputs_[0]; } 1700 LOperand* context() { return inputs_[0]; }
1669 LOperand* value() { return inputs_[1]; } 1701 LOperand* global_object() { return inputs_[1]; }
1702 LOperand* value() { return inputs_[2]; }
1670 1703
1671 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic") 1704 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalGeneric, "store-global-generic")
1672 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric) 1705 DECLARE_HYDROGEN_ACCESSOR(StoreGlobalGeneric)
1673 1706
1674 Handle<Object> name() const { return hydrogen()->name(); } 1707 Handle<Object> name() const { return hydrogen()->name(); }
1675 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } 1708 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
1676 }; 1709 };
1677 1710
1678 1711
1679 class LLoadContextSlot V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1712 class LLoadContextSlot V8_FINAL : public LTemplateInstruction<1, 1, 0> {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
1789 explicit LOuterContext(LOperand* context) { 1822 explicit LOuterContext(LOperand* context) {
1790 inputs_[0] = context; 1823 inputs_[0] = context;
1791 } 1824 }
1792 1825
1793 LOperand* context() { return inputs_[0]; } 1826 LOperand* context() { return inputs_[0]; }
1794 1827
1795 DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context") 1828 DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
1796 }; 1829 };
1797 1830
1798 1831
1799 class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 0, 0> { 1832 class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> {
1800 public: 1833 public:
1834 explicit LDeclareGlobals(LOperand* context) {
1835 inputs_[0] = context;
1836 }
1837
1838 LOperand* context() { return inputs_[0]; }
1839
1801 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals") 1840 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals")
1802 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals) 1841 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals)
1803 }; 1842 };
1804 1843
1805 1844
1806 class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1845 class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1807 public: 1846 public:
1808 explicit LGlobalObject(LOperand* context) { 1847 explicit LGlobalObject(LOperand* context) {
1809 inputs_[0] = context; 1848 inputs_[0] = context;
1810 } 1849 }
(...skipping 21 matching lines...) Expand all
1832 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function") 1871 DECLARE_CONCRETE_INSTRUCTION(CallConstantFunction, "call-constant-function")
1833 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction) 1872 DECLARE_HYDROGEN_ACCESSOR(CallConstantFunction)
1834 1873
1835 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1874 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1836 1875
1837 Handle<JSFunction> function() { return hydrogen()->function(); } 1876 Handle<JSFunction> function() { return hydrogen()->function(); }
1838 int arity() const { return hydrogen()->argument_count() - 1; } 1877 int arity() const { return hydrogen()->argument_count() - 1; }
1839 }; 1878 };
1840 1879
1841 1880
1842 class LInvokeFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1881 class LInvokeFunction V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1843 public: 1882 public:
1844 explicit LInvokeFunction(LOperand* function) { 1883 LInvokeFunction(LOperand* context, LOperand* function) {
1845 inputs_[0] = function; 1884 inputs_[0] = context;
1885 inputs_[1] = function;
1846 } 1886 }
1847 1887
1848 LOperand* function() { return inputs_[0]; } 1888 LOperand* context() { return inputs_[0]; }
1889 LOperand* function() { return inputs_[1]; }
1849 1890
1850 DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function") 1891 DECLARE_CONCRETE_INSTRUCTION(InvokeFunction, "invoke-function")
1851 DECLARE_HYDROGEN_ACCESSOR(InvokeFunction) 1892 DECLARE_HYDROGEN_ACCESSOR(InvokeFunction)
1852 1893
1853 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1894 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1854 1895
1855 int arity() const { return hydrogen()->argument_count() - 1; } 1896 int arity() const { return hydrogen()->argument_count() - 1; }
1856 }; 1897 };
1857 1898
1858 1899
1859 class LCallKeyed V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1900 class LCallKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1860 public: 1901 public:
1861 explicit LCallKeyed(LOperand* key) { 1902 LCallKeyed(LOperand* context, LOperand* key) {
1862 inputs_[0] = key; 1903 inputs_[0] = context;
1904 inputs_[1] = key;
1863 } 1905 }
1864 1906
1865 LOperand* key() { return inputs_[0]; } 1907 LOperand* context() { return inputs_[0]; }
1908 LOperand* key() { return inputs_[1]; }
1866 1909
1867 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed") 1910 DECLARE_CONCRETE_INSTRUCTION(CallKeyed, "call-keyed")
1868 DECLARE_HYDROGEN_ACCESSOR(CallKeyed) 1911 DECLARE_HYDROGEN_ACCESSOR(CallKeyed)
1869 1912
1870 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1913 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1871 1914
1872 int arity() const { return hydrogen()->argument_count() - 1; } 1915 int arity() const { return hydrogen()->argument_count() - 1; }
1873 }; 1916 };
1874 1917
1875 1918
1876 1919
1877 class LCallNamed V8_FINAL : public LTemplateInstruction<1, 0, 0> { 1920 class LCallNamed V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1878 public: 1921 public:
1922 explicit LCallNamed(LOperand* context) {
1923 inputs_[0] = context;
1924 }
1925
1926 LOperand* context() { return inputs_[0]; }
1927
1879 DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named") 1928 DECLARE_CONCRETE_INSTRUCTION(CallNamed, "call-named")
1880 DECLARE_HYDROGEN_ACCESSOR(CallNamed) 1929 DECLARE_HYDROGEN_ACCESSOR(CallNamed)
1881 1930
1882 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1931 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1883 1932
1884 Handle<String> name() const { return hydrogen()->name(); } 1933 Handle<String> name() const { return hydrogen()->name(); }
1885 int arity() const { return hydrogen()->argument_count() - 1; } 1934 int arity() const { return hydrogen()->argument_count() - 1; }
1886 }; 1935 };
1887 1936
1888 1937
1889 class LCallFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1938 class LCallFunction V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1890 public: 1939 public:
1891 explicit LCallFunction(LOperand* function) { 1940 LCallFunction(LOperand* context, LOperand* function) {
1892 inputs_[0] = function; 1941 inputs_[0] = context;
1942 inputs_[1] = function;
1893 } 1943 }
1894 1944
1895 LOperand* function() { return inputs_[0]; } 1945 LOperand* context() { return inputs_[0]; }
1946 LOperand* function() { return inputs_[1]; }
1896 1947
1897 DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function") 1948 DECLARE_CONCRETE_INSTRUCTION(CallFunction, "call-function")
1898 DECLARE_HYDROGEN_ACCESSOR(CallFunction) 1949 DECLARE_HYDROGEN_ACCESSOR(CallFunction)
1899 1950
1900 int arity() const { return hydrogen()->argument_count() - 1; } 1951 int arity() const { return hydrogen()->argument_count() - 1; }
1901 }; 1952 };
1902 1953
1903 1954
1904 class LCallGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> { 1955 class LCallGlobal V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1905 public: 1956 public:
1957 explicit LCallGlobal(LOperand* context) {
1958 inputs_[0] = context;
1959 }
1960
1961 LOperand* context() { return inputs_[0]; }
1962
1906 DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global") 1963 DECLARE_CONCRETE_INSTRUCTION(CallGlobal, "call-global")
1907 DECLARE_HYDROGEN_ACCESSOR(CallGlobal) 1964 DECLARE_HYDROGEN_ACCESSOR(CallGlobal)
1908 1965
1909 virtual void PrintDataTo(StringStream* stream); 1966 virtual void PrintDataTo(StringStream* stream);
1910 1967
1911 Handle<String> name() const {return hydrogen()->name(); } 1968 Handle<String> name() const {return hydrogen()->name(); }
1912 int arity() const { return hydrogen()->argument_count() - 1; } 1969 int arity() const { return hydrogen()->argument_count() - 1; }
1913 }; 1970 };
1914 1971
1915 1972
1916 class LCallKnownGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> { 1973 class LCallKnownGlobal V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1917 public: 1974 public:
1918 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global") 1975 DECLARE_CONCRETE_INSTRUCTION(CallKnownGlobal, "call-known-global")
1919 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal) 1976 DECLARE_HYDROGEN_ACCESSOR(CallKnownGlobal)
1920 1977
1921 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1978 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1922 1979
1923 int arity() const { return hydrogen()->argument_count() - 1; } 1980 int arity() const { return hydrogen()->argument_count() - 1; }
1924 }; 1981 };
1925 1982
1926 1983
1927 class LCallNew V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1984 class LCallNew V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1928 public: 1985 public:
1929 explicit LCallNew(LOperand* constructor) { 1986 LCallNew(LOperand* context, LOperand* constructor) {
1930 inputs_[0] = constructor; 1987 inputs_[0] = context;
1988 inputs_[1] = constructor;
1931 } 1989 }
1932 1990
1933 LOperand* constructor() { return inputs_[0]; } 1991 LOperand* context() { return inputs_[0]; }
1992 LOperand* constructor() { return inputs_[1]; }
1934 1993
1935 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new") 1994 DECLARE_CONCRETE_INSTRUCTION(CallNew, "call-new")
1936 DECLARE_HYDROGEN_ACCESSOR(CallNew) 1995 DECLARE_HYDROGEN_ACCESSOR(CallNew)
1937 1996
1938 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 1997 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1939 1998
1940 int arity() const { return hydrogen()->argument_count() - 1; } 1999 int arity() const { return hydrogen()->argument_count() - 1; }
1941 }; 2000 };
1942 2001
1943 2002
1944 class LCallNewArray V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2003 class LCallNewArray V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1945 public: 2004 public:
1946 explicit LCallNewArray(LOperand* constructor) { 2005 LCallNewArray(LOperand* context, LOperand* constructor) {
1947 inputs_[0] = constructor; 2006 inputs_[0] = context;
2007 inputs_[1] = constructor;
1948 } 2008 }
1949 2009
1950 LOperand* constructor() { return inputs_[0]; } 2010 LOperand* context() { return inputs_[0]; }
2011 LOperand* constructor() { return inputs_[1]; }
1951 2012
1952 DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array") 2013 DECLARE_CONCRETE_INSTRUCTION(CallNewArray, "call-new-array")
1953 DECLARE_HYDROGEN_ACCESSOR(CallNewArray) 2014 DECLARE_HYDROGEN_ACCESSOR(CallNewArray)
1954 2015
1955 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 2016 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
1956 2017
1957 int arity() const { return hydrogen()->argument_count() - 1; } 2018 int arity() const { return hydrogen()->argument_count() - 1; }
1958 }; 2019 };
1959 2020
1960 2021
1961 class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 0, 0> { 2022 class LCallRuntime V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1962 public: 2023 public:
2024 explicit LCallRuntime(LOperand* context) {
2025 inputs_[0] = context;
2026 }
2027
2028 LOperand* context() { return inputs_[0]; }
2029
1963 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime") 2030 DECLARE_CONCRETE_INSTRUCTION(CallRuntime, "call-runtime")
1964 DECLARE_HYDROGEN_ACCESSOR(CallRuntime) 2031 DECLARE_HYDROGEN_ACCESSOR(CallRuntime)
1965 2032
1966 const Runtime::Function* function() const { return hydrogen()->function(); } 2033 const Runtime::Function* function() const { return hydrogen()->function(); }
1967 int arity() const { return hydrogen()->argument_count(); } 2034 int arity() const { return hydrogen()->argument_count(); }
1968 }; 2035 };
1969 2036
1970 2037
1971 class LInteger32ToDouble V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2038 class LInteger32ToDouble V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1972 public: 2039 public:
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
2158 2225
2159 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 2226 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2160 2227
2161 Handle<Map> transition() const { return hydrogen()->transition_map(); } 2228 Handle<Map> transition() const { return hydrogen()->transition_map(); }
2162 Representation representation() const { 2229 Representation representation() const {
2163 return hydrogen()->field_representation(); 2230 return hydrogen()->field_representation();
2164 } 2231 }
2165 }; 2232 };
2166 2233
2167 2234
2168 class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 2, 0> { 2235 class LStoreNamedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> {
2169 public: 2236 public:
2170 LStoreNamedGeneric(LOperand* object, LOperand* value) { 2237 LStoreNamedGeneric(LOperand* context, LOperand* object, LOperand* value) {
2171 inputs_[0] = object; 2238 inputs_[0] = context;
2172 inputs_[1] = value; 2239 inputs_[1] = object;
2240 inputs_[2] = value;
2173 } 2241 }
2174 2242
2175 LOperand* object() { return inputs_[0]; } 2243 LOperand* context() { return inputs_[0]; }
2176 LOperand* value() { return inputs_[1]; } 2244 LOperand* object() { return inputs_[1]; }
2245 LOperand* value() { return inputs_[2]; }
2177 2246
2178 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic") 2247 DECLARE_CONCRETE_INSTRUCTION(StoreNamedGeneric, "store-named-generic")
2179 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric) 2248 DECLARE_HYDROGEN_ACCESSOR(StoreNamedGeneric)
2180 2249
2181 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 2250 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2182 2251
2183 Handle<Object> name() const { return hydrogen()->name(); } 2252 Handle<Object> name() const { return hydrogen()->name(); }
2184 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } 2253 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
2185 }; 2254 };
2186 2255
(...skipping 16 matching lines...) Expand all
2203 2272
2204 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed") 2273 DECLARE_CONCRETE_INSTRUCTION(StoreKeyed, "store-keyed")
2205 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed) 2274 DECLARE_HYDROGEN_ACCESSOR(StoreKeyed)
2206 2275
2207 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 2276 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2208 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); } 2277 bool NeedsCanonicalization() { return hydrogen()->NeedsCanonicalization(); }
2209 uint32_t additional_index() const { return hydrogen()->index_offset(); } 2278 uint32_t additional_index() const { return hydrogen()->index_offset(); }
2210 }; 2279 };
2211 2280
2212 2281
2213 class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 3, 0> { 2282 class LStoreKeyedGeneric V8_FINAL : public LTemplateInstruction<0, 4, 0> {
2214 public: 2283 public:
2215 LStoreKeyedGeneric(LOperand* obj, LOperand* key, LOperand* value) { 2284 LStoreKeyedGeneric(LOperand* context,
2216 inputs_[0] = obj; 2285 LOperand* obj,
2217 inputs_[1] = key; 2286 LOperand* key,
2218 inputs_[2] = value; 2287 LOperand* value) {
2288 inputs_[0] = context;
2289 inputs_[1] = obj;
2290 inputs_[2] = key;
2291 inputs_[3] = value;
2219 } 2292 }
2220 2293
2221 LOperand* object() { return inputs_[0]; } 2294 LOperand* context() { return inputs_[0]; }
2222 LOperand* key() { return inputs_[1]; } 2295 LOperand* object() { return inputs_[1]; }
2223 LOperand* value() { return inputs_[2]; } 2296 LOperand* key() { return inputs_[2]; }
2297 LOperand* value() { return inputs_[3]; }
2224 2298
2225 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic") 2299 DECLARE_CONCRETE_INSTRUCTION(StoreKeyedGeneric, "store-keyed-generic")
2226 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric) 2300 DECLARE_HYDROGEN_ACCESSOR(StoreKeyedGeneric)
2227 2301
2228 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 2302 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2229 2303
2230 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); } 2304 StrictModeFlag strict_mode_flag() { return hydrogen()->strict_mode_flag(); }
2231 }; 2305 };
2232 2306
2233 2307
2234 class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 1, 1> { 2308 class LTransitionElementsKind V8_FINAL : public LTemplateInstruction<0, 2, 1> {
2235 public: 2309 public:
2236 LTransitionElementsKind(LOperand* object, 2310 LTransitionElementsKind(LOperand* object,
2311 LOperand* context,
2237 LOperand* new_map_temp) { 2312 LOperand* new_map_temp) {
2238 inputs_[0] = object; 2313 inputs_[0] = object;
2314 inputs_[1] = context;
2239 temps_[0] = new_map_temp; 2315 temps_[0] = new_map_temp;
2240 } 2316 }
2241 2317
2318 LOperand* context() { return inputs_[1]; }
2242 LOperand* object() { return inputs_[0]; } 2319 LOperand* object() { return inputs_[0]; }
2243 LOperand* new_map_temp() { return temps_[0]; } 2320 LOperand* new_map_temp() { return temps_[0]; }
2244 2321
2245 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind, 2322 DECLARE_CONCRETE_INSTRUCTION(TransitionElementsKind,
2246 "transition-elements-kind") 2323 "transition-elements-kind")
2247 DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind) 2324 DECLARE_HYDROGEN_ACCESSOR(TransitionElementsKind)
2248 2325
2249 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; 2326 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE;
2250 2327
2251 Handle<Map> original_map() { return hydrogen()->original_map().handle(); } 2328 Handle<Map> original_map() { return hydrogen()->original_map().handle(); }
(...skipping 14 matching lines...) Expand all
2266 } 2343 }
2267 2344
2268 LOperand* object() { return inputs_[0]; } 2345 LOperand* object() { return inputs_[0]; }
2269 LOperand* temp() { return temps_[0]; } 2346 LOperand* temp() { return temps_[0]; }
2270 2347
2271 DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento, 2348 DECLARE_CONCRETE_INSTRUCTION(TrapAllocationMemento,
2272 "trap-allocation-memento") 2349 "trap-allocation-memento")
2273 }; 2350 };
2274 2351
2275 2352
2276 class LStringAdd V8_FINAL : public LTemplateInstruction<1, 2, 0> { 2353 class LStringAdd V8_FINAL : public LTemplateInstruction<1, 3, 0> {
2277 public: 2354 public:
2278 LStringAdd(LOperand* left, LOperand* right) { 2355 LStringAdd(LOperand* context, LOperand* left, LOperand* right) {
2279 inputs_[0] = left; 2356 inputs_[0] = context;
2280 inputs_[1] = right; 2357 inputs_[1] = left;
2358 inputs_[2] = right;
2281 } 2359 }
2282 2360
2283 LOperand* left() { return inputs_[0]; } 2361 LOperand* context() { return inputs_[0]; }
2284 LOperand* right() { return inputs_[1]; } 2362 LOperand* left() { return inputs_[1]; }
2363 LOperand* right() { return inputs_[2]; }
2285 2364
2286 DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add") 2365 DECLARE_CONCRETE_INSTRUCTION(StringAdd, "string-add")
2287 DECLARE_HYDROGEN_ACCESSOR(StringAdd) 2366 DECLARE_HYDROGEN_ACCESSOR(StringAdd)
2288 }; 2367 };
2289 2368
2290 2369
2291 2370
2292 class LStringCharCodeAt V8_FINAL : public LTemplateInstruction<1, 2, 0> { 2371 class LStringCharCodeAt V8_FINAL : public LTemplateInstruction<1, 3, 0> {
2293 public: 2372 public:
2294 LStringCharCodeAt(LOperand* string, LOperand* index) { 2373 LStringCharCodeAt(LOperand* context, LOperand* string, LOperand* index) {
2295 inputs_[0] = string; 2374 inputs_[0] = context;
2296 inputs_[1] = index; 2375 inputs_[1] = string;
2376 inputs_[2] = index;
2297 } 2377 }
2298 2378
2299 LOperand* string() { return inputs_[0]; } 2379 LOperand* context() { return inputs_[0]; }
2300 LOperand* index() { return inputs_[1]; } 2380 LOperand* string() { return inputs_[1]; }
2381 LOperand* index() { return inputs_[2]; }
2301 2382
2302 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at") 2383 DECLARE_CONCRETE_INSTRUCTION(StringCharCodeAt, "string-char-code-at")
2303 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt) 2384 DECLARE_HYDROGEN_ACCESSOR(StringCharCodeAt)
2304 }; 2385 };
2305 2386
2306 2387
2307 class LStringCharFromCode V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2388 class LStringCharFromCode V8_FINAL : public LTemplateInstruction<1, 2, 0> {
2308 public: 2389 public:
2309 explicit LStringCharFromCode(LOperand* char_code) { 2390 explicit LStringCharFromCode(LOperand* context, LOperand* char_code) {
2310 inputs_[0] = char_code; 2391 inputs_[0] = context;
2392 inputs_[1] = char_code;
2311 } 2393 }
2312 2394
2313 LOperand* char_code() { return inputs_[0]; } 2395 LOperand* context() { return inputs_[0]; }
2396 LOperand* char_code() { return inputs_[1]; }
2314 2397
2315 DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code") 2398 DECLARE_CONCRETE_INSTRUCTION(StringCharFromCode, "string-char-from-code")
2316 DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode) 2399 DECLARE_HYDROGEN_ACCESSOR(StringCharFromCode)
2317 }; 2400 };
2318 2401
2319 2402
2320 class LCheckValue V8_FINAL : public LTemplateInstruction<0, 1, 0> { 2403 class LCheckValue V8_FINAL : public LTemplateInstruction<0, 1, 0> {
2321 public: 2404 public:
2322 explicit LCheckValue(LOperand* value) { 2405 explicit LCheckValue(LOperand* value) {
2323 inputs_[0] = value; 2406 inputs_[0] = value;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
2416 2499
2417 LOperand* unclamped() { return inputs_[0]; } 2500 LOperand* unclamped() { return inputs_[0]; }
2418 LOperand* temp() { return temps_[0]; } 2501 LOperand* temp() { return temps_[0]; }
2419 2502
2420 DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8") 2503 DECLARE_CONCRETE_INSTRUCTION(ClampTToUint8, "clamp-t-to-uint8")
2421 }; 2504 };
2422 2505
2423 2506
2424 class LAllocate V8_FINAL : public LTemplateInstruction<1, 2, 2> { 2507 class LAllocate V8_FINAL : public LTemplateInstruction<1, 2, 2> {
2425 public: 2508 public:
2426 LAllocate(LOperand* size, LOperand* temp1, LOperand* temp2) { 2509 LAllocate(LOperand* context,
2510 LOperand* size,
2511 LOperand* temp1,
2512 LOperand* temp2) {
2513 inputs_[0] = context;
2427 inputs_[1] = size; 2514 inputs_[1] = size;
2428 temps_[0] = temp1; 2515 temps_[0] = temp1;
2429 temps_[1] = temp2; 2516 temps_[1] = temp2;
2430 } 2517 }
2431 2518
2519 LOperand* context() { return inputs_[0]; }
2432 LOperand* size() { return inputs_[1]; } 2520 LOperand* size() { return inputs_[1]; }
2433 LOperand* temp1() { return temps_[0]; } 2521 LOperand* temp1() { return temps_[0]; }
2434 LOperand* temp2() { return temps_[1]; } 2522 LOperand* temp2() { return temps_[1]; }
2435 2523
2436 DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate") 2524 DECLARE_CONCRETE_INSTRUCTION(Allocate, "allocate")
2437 DECLARE_HYDROGEN_ACCESSOR(Allocate) 2525 DECLARE_HYDROGEN_ACCESSOR(Allocate)
2438 }; 2526 };
2439 2527
2440 2528
2441 class LRegExpLiteral V8_FINAL : public LTemplateInstruction<1, 0, 0> { 2529 class LRegExpLiteral V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2442 public: 2530 public:
2531 explicit LRegExpLiteral(LOperand* context) {
2532 inputs_[0] = context;
2533 }
2534
2535 LOperand* context() { return inputs_[0]; }
2536
2443 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal") 2537 DECLARE_CONCRETE_INSTRUCTION(RegExpLiteral, "regexp-literal")
2444 DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral) 2538 DECLARE_HYDROGEN_ACCESSOR(RegExpLiteral)
2445 }; 2539 };
2446 2540
2447 2541
2448 class LFunctionLiteral V8_FINAL : public LTemplateInstruction<1, 0, 0> { 2542 class LFunctionLiteral V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2449 public: 2543 public:
2544 explicit LFunctionLiteral(LOperand* context) {
2545 inputs_[0] = context;
2546 }
2547
2548 LOperand* context() { return inputs_[0]; }
2549
2450 DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal") 2550 DECLARE_CONCRETE_INSTRUCTION(FunctionLiteral, "function-literal")
2451 DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral) 2551 DECLARE_HYDROGEN_ACCESSOR(FunctionLiteral)
2452 }; 2552 };
2453 2553
2454 2554
2455 class LToFastProperties V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2555 class LToFastProperties V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2456 public: 2556 public:
2457 explicit LToFastProperties(LOperand* value) { 2557 explicit LToFastProperties(LOperand* value) {
2458 inputs_[0] = value; 2558 inputs_[0] = value;
2459 } 2559 }
2460 2560
2461 LOperand* value() { return inputs_[0]; } 2561 LOperand* value() { return inputs_[0]; }
2462 2562
2463 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties") 2563 DECLARE_CONCRETE_INSTRUCTION(ToFastProperties, "to-fast-properties")
2464 DECLARE_HYDROGEN_ACCESSOR(ToFastProperties) 2564 DECLARE_HYDROGEN_ACCESSOR(ToFastProperties)
2465 }; 2565 };
2466 2566
2467 2567
2468 class LTypeof V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2568 class LTypeof V8_FINAL : public LTemplateInstruction<1, 2, 0> {
2469 public: 2569 public:
2470 explicit LTypeof(LOperand* value) { 2570 LTypeof(LOperand* context, LOperand* value) {
2471 inputs_[0] = value; 2571 inputs_[0] = context;
2572 inputs_[1] = value;
2472 } 2573 }
2473 2574
2474 LOperand* value() { return inputs_[0]; } 2575 LOperand* context() { return inputs_[0]; }
2576 LOperand* value() { return inputs_[1]; }
2475 2577
2476 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof") 2578 DECLARE_CONCRETE_INSTRUCTION(Typeof, "typeof")
2477 }; 2579 };
2478 2580
2479 2581
2480 class LTypeofIsAndBranch V8_FINAL : public LControlInstruction<1, 0> { 2582 class LTypeofIsAndBranch V8_FINAL : public LControlInstruction<1, 0> {
2481 public: 2583 public:
2482 explicit LTypeofIsAndBranch(LOperand* value) { 2584 explicit LTypeofIsAndBranch(LOperand* value) {
2483 inputs_[0] = value; 2585 inputs_[0] = value;
2484 } 2586 }
(...skipping 26 matching lines...) Expand all
2511 public: 2613 public:
2512 LOsrEntry() {} 2614 LOsrEntry() {}
2513 2615
2514 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE { 2616 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE {
2515 return false; 2617 return false;
2516 } 2618 }
2517 DECLARE_CONCRETE_INSTRUCTION(OsrEntry, "osr-entry") 2619 DECLARE_CONCRETE_INSTRUCTION(OsrEntry, "osr-entry")
2518 }; 2620 };
2519 2621
2520 2622
2521 class LStackCheck V8_FINAL : public LTemplateInstruction<0, 0, 0> { 2623 class LStackCheck V8_FINAL : public LTemplateInstruction<0, 1, 0> {
2522 public: 2624 public:
2625 explicit LStackCheck(LOperand* context) {
2626 inputs_[0] = context;
2627 }
2628
2629 LOperand* context() { return inputs_[0]; }
2630
2523 DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check") 2631 DECLARE_CONCRETE_INSTRUCTION(StackCheck, "stack-check")
2524 DECLARE_HYDROGEN_ACCESSOR(StackCheck) 2632 DECLARE_HYDROGEN_ACCESSOR(StackCheck)
2525 2633
2526 Label* done_label() { return &done_label_; } 2634 Label* done_label() { return &done_label_; }
2527 2635
2528 private: 2636 private:
2529 Label done_label_; 2637 Label done_label_;
2530 }; 2638 };
2531 2639
2532 2640
2533 class LForInPrepareMap V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2641 class LForInPrepareMap V8_FINAL : public LTemplateInstruction<1, 2, 0> {
2534 public: 2642 public:
2535 explicit LForInPrepareMap(LOperand* object) { 2643 LForInPrepareMap(LOperand* context, LOperand* object) {
2536 inputs_[0] = object; 2644 inputs_[0] = context;
2645 inputs_[1] = object;
2537 } 2646 }
2538 2647
2539 LOperand* object() { return inputs_[0]; } 2648 LOperand* context() { return inputs_[0]; }
2649 LOperand* object() { return inputs_[1]; }
2540 2650
2541 DECLARE_CONCRETE_INSTRUCTION(ForInPrepareMap, "for-in-prepare-map") 2651 DECLARE_CONCRETE_INSTRUCTION(ForInPrepareMap, "for-in-prepare-map")
2542 }; 2652 };
2543 2653
2544 2654
2545 class LForInCacheArray V8_FINAL : public LTemplateInstruction<1, 1, 0> { 2655 class LForInCacheArray V8_FINAL : public LTemplateInstruction<1, 1, 0> {
2546 public: 2656 public:
2547 explicit LForInCacheArray(LOperand* map) { 2657 explicit LForInCacheArray(LOperand* map) {
2548 inputs_[0] = map; 2658 inputs_[0] = map;
2549 } 2659 }
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
2767 2877
2768 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2878 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2769 }; 2879 };
2770 2880
2771 #undef DECLARE_HYDROGEN_ACCESSOR 2881 #undef DECLARE_HYDROGEN_ACCESSOR
2772 #undef DECLARE_CONCRETE_INSTRUCTION 2882 #undef DECLARE_CONCRETE_INSTRUCTION
2773 2883
2774 } } // namespace v8::internal 2884 } } // namespace v8::internal
2775 2885
2776 #endif // V8_MIPS_LITHIUM_MIPS_H_ 2886 #endif // V8_MIPS_LITHIUM_MIPS_H_
OLDNEW
« no previous file with comments | « src/mips/lithium-codegen-mips.cc ('k') | src/mips/lithium-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698