| OLD | NEW |
| 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 V(CheckMapValue) \ | 67 V(CheckMapValue) \ |
| 68 V(CheckNonSmi) \ | 68 V(CheckNonSmi) \ |
| 69 V(CheckSmi) \ | 69 V(CheckSmi) \ |
| 70 V(CheckValue) \ | 70 V(CheckValue) \ |
| 71 V(ClampDToUint8) \ | 71 V(ClampDToUint8) \ |
| 72 V(ClampIToUint8) \ | 72 V(ClampIToUint8) \ |
| 73 V(ClampTToUint8) \ | 73 V(ClampTToUint8) \ |
| 74 V(ClampTToUint8NoSSE2) \ | 74 V(ClampTToUint8NoSSE2) \ |
| 75 V(ClassOfTestAndBranch) \ | 75 V(ClassOfTestAndBranch) \ |
| 76 V(ClobberDoubles) \ | 76 V(ClobberDoubles) \ |
| 77 V(CompareMinusZeroAndBranch) \ |
| 77 V(CompareNumericAndBranch) \ | 78 V(CompareNumericAndBranch) \ |
| 78 V(CmpObjectEqAndBranch) \ | 79 V(CmpObjectEqAndBranch) \ |
| 79 V(CmpHoleAndBranch) \ | 80 V(CmpHoleAndBranch) \ |
| 80 V(CmpMapAndBranch) \ | 81 V(CmpMapAndBranch) \ |
| 81 V(CmpT) \ | 82 V(CmpT) \ |
| 82 V(ConstantD) \ | 83 V(ConstantD) \ |
| 83 V(ConstantE) \ | 84 V(ConstantE) \ |
| 84 V(ConstantI) \ | 85 V(ConstantI) \ |
| 85 V(ConstantS) \ | 86 V(ConstantS) \ |
| 86 V(ConstantT) \ | 87 V(ConstantT) \ |
| 87 V(Context) \ | 88 V(Context) \ |
| 88 V(DateField) \ | 89 V(DateField) \ |
| 89 V(DebugBreak) \ | 90 V(DebugBreak) \ |
| 90 V(DeclareGlobals) \ | 91 V(DeclareGlobals) \ |
| 91 V(Deoptimize) \ | 92 V(Deoptimize) \ |
| 92 V(DivI) \ | 93 V(DivI) \ |
| 93 V(DoubleToI) \ | 94 V(DoubleToI) \ |
| 94 V(DoubleToSmi) \ | 95 V(DoubleToSmi) \ |
| 95 V(Drop) \ | 96 V(Drop) \ |
| 97 V(Dummy) \ |
| 96 V(DummyUse) \ | 98 V(DummyUse) \ |
| 97 V(ElementsKind) \ | 99 V(ElementsKind) \ |
| 98 V(ForInCacheArray) \ | 100 V(ForInCacheArray) \ |
| 99 V(ForInPrepareMap) \ | 101 V(ForInPrepareMap) \ |
| 100 V(FunctionLiteral) \ | 102 V(FunctionLiteral) \ |
| 101 V(GetCachedArrayIndex) \ | 103 V(GetCachedArrayIndex) \ |
| 102 V(GlobalObject) \ | 104 V(GlobalObject) \ |
| 103 V(GlobalReceiver) \ | 105 V(GlobalReceiver) \ |
| 104 V(Goto) \ | 106 V(Goto) \ |
| 105 V(HasCachedArrayIndexAndBranch) \ | 107 V(HasCachedArrayIndexAndBranch) \ |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 149 V(NumberTagU) \ | 151 V(NumberTagU) \ |
| 150 V(NumberUntagD) \ | 152 V(NumberUntagD) \ |
| 151 V(OsrEntry) \ | 153 V(OsrEntry) \ |
| 152 V(OuterContext) \ | 154 V(OuterContext) \ |
| 153 V(Parameter) \ | 155 V(Parameter) \ |
| 154 V(Power) \ | 156 V(Power) \ |
| 155 V(Random) \ | 157 V(Random) \ |
| 156 V(PushArgument) \ | 158 V(PushArgument) \ |
| 157 V(RegExpLiteral) \ | 159 V(RegExpLiteral) \ |
| 158 V(Return) \ | 160 V(Return) \ |
| 161 V(SeqStringGetChar) \ |
| 159 V(SeqStringSetChar) \ | 162 V(SeqStringSetChar) \ |
| 160 V(ShiftI) \ | 163 V(ShiftI) \ |
| 161 V(SmiTag) \ | 164 V(SmiTag) \ |
| 162 V(SmiUntag) \ | 165 V(SmiUntag) \ |
| 163 V(StackCheck) \ | 166 V(StackCheck) \ |
| 164 V(StoreCodeEntry) \ | 167 V(StoreCodeEntry) \ |
| 165 V(StoreContextSlot) \ | 168 V(StoreContextSlot) \ |
| 166 V(StoreGlobalCell) \ | 169 V(StoreGlobalCell) \ |
| 167 V(StoreGlobalGeneric) \ | 170 V(StoreGlobalGeneric) \ |
| 168 V(StoreKeyed) \ | 171 V(StoreKeyed) \ |
| 169 V(StoreKeyedGeneric) \ | 172 V(StoreKeyedGeneric) \ |
| 170 V(StoreNamedField) \ | 173 V(StoreNamedField) \ |
| 171 V(StoreNamedGeneric) \ | 174 V(StoreNamedGeneric) \ |
| 172 V(StringAdd) \ | 175 V(StringAdd) \ |
| 173 V(StringCharCodeAt) \ | 176 V(StringCharCodeAt) \ |
| 174 V(StringCharFromCode) \ | 177 V(StringCharFromCode) \ |
| 175 V(StringCompareAndBranch) \ | 178 V(StringCompareAndBranch) \ |
| 176 V(SubI) \ | 179 V(SubI) \ |
| 177 V(TaggedToI) \ | 180 V(TaggedToI) \ |
| 178 V(ThisFunction) \ | 181 V(ThisFunction) \ |
| 179 V(Throw) \ | 182 V(Throw) \ |
| 180 V(ToFastProperties) \ | 183 V(ToFastProperties) \ |
| 181 V(TransitionElementsKind) \ | 184 V(TransitionElementsKind) \ |
| 182 V(TrapAllocationMemento) \ | 185 V(TrapAllocationMemento) \ |
| 183 V(Typeof) \ | 186 V(Typeof) \ |
| 184 V(TypeofIsAndBranch) \ | 187 V(TypeofIsAndBranch) \ |
| 185 V(Uint32ToDouble) \ | 188 V(Uint32ToDouble) \ |
| 189 V(Uint32ToSmi) \ |
| 186 V(UnknownOSRValue) \ | 190 V(UnknownOSRValue) \ |
| 187 V(ValueOf) \ | 191 V(ValueOf) \ |
| 188 V(WrapReceiver) | 192 V(WrapReceiver) |
| 189 | 193 |
| 190 | 194 |
| 191 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ | 195 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ |
| 192 virtual Opcode opcode() const V8_FINAL V8_OVERRIDE { \ | 196 virtual Opcode opcode() const V8_FINAL V8_OVERRIDE { \ |
| 193 return LInstruction::k##type; \ | 197 return LInstruction::k##type; \ |
| 194 } \ | 198 } \ |
| 195 virtual void CompileToNative(LCodeGen* generator) V8_FINAL V8_OVERRIDE; \ | 199 virtual void CompileToNative(LCodeGen* generator) V8_FINAL V8_OVERRIDE; \ |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 423 HBasicBlock* block_; | 427 HBasicBlock* block_; |
| 424 }; | 428 }; |
| 425 | 429 |
| 426 | 430 |
| 427 class LLazyBailout V8_FINAL : public LTemplateInstruction<0, 0, 0> { | 431 class LLazyBailout V8_FINAL : public LTemplateInstruction<0, 0, 0> { |
| 428 public: | 432 public: |
| 429 DECLARE_CONCRETE_INSTRUCTION(LazyBailout, "lazy-bailout") | 433 DECLARE_CONCRETE_INSTRUCTION(LazyBailout, "lazy-bailout") |
| 430 }; | 434 }; |
| 431 | 435 |
| 432 | 436 |
| 437 class LDummy V8_FINAL : public LTemplateInstruction<1, 0, 0> { |
| 438 public: |
| 439 explicit LDummy() { } |
| 440 DECLARE_CONCRETE_INSTRUCTION(Dummy, "dummy") |
| 441 }; |
| 442 |
| 443 |
| 433 class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> { | 444 class LDummyUse V8_FINAL : public LTemplateInstruction<1, 1, 0> { |
| 434 public: | 445 public: |
| 435 explicit LDummyUse(LOperand* value) { | 446 explicit LDummyUse(LOperand* value) { |
| 436 inputs_[0] = value; | 447 inputs_[0] = value; |
| 437 } | 448 } |
| 438 DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use") | 449 DECLARE_CONCRETE_INSTRUCTION(DummyUse, "dummy-use") |
| 439 }; | 450 }; |
| 440 | 451 |
| 441 | 452 |
| 442 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> { | 453 class LDeoptimize V8_FINAL : public LTemplateInstruction<0, 0, 0> { |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 733 inputs_[0] = value; | 744 inputs_[0] = value; |
| 734 } | 745 } |
| 735 | 746 |
| 736 LOperand* value() { return inputs_[0]; } | 747 LOperand* value() { return inputs_[0]; } |
| 737 | 748 |
| 738 DECLARE_CONCRETE_INSTRUCTION(MathFloor, "math-floor") | 749 DECLARE_CONCRETE_INSTRUCTION(MathFloor, "math-floor") |
| 739 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) | 750 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) |
| 740 }; | 751 }; |
| 741 | 752 |
| 742 | 753 |
| 743 class LMathRound V8_FINAL : public LTemplateInstruction<1, 2, 1> { | 754 class LMathRound V8_FINAL : public LTemplateInstruction<1, 1, 1> { |
| 744 public: | 755 public: |
| 745 LMathRound(LOperand* context, LOperand* value, LOperand* temp) { | 756 LMathRound(LOperand* value, LOperand* temp) { |
| 746 inputs_[1] = context; | |
| 747 inputs_[0] = value; | 757 inputs_[0] = value; |
| 748 temps_[0] = temp; | 758 temps_[0] = temp; |
| 749 } | 759 } |
| 750 | 760 |
| 751 LOperand* context() { return inputs_[1]; } | |
| 752 LOperand* value() { return inputs_[0]; } | 761 LOperand* value() { return inputs_[0]; } |
| 753 LOperand* temp() { return temps_[0]; } | 762 LOperand* temp() { return temps_[0]; } |
| 754 | 763 |
| 755 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round") | 764 DECLARE_CONCRETE_INSTRUCTION(MathRound, "math-round") |
| 756 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) | 765 DECLARE_HYDROGEN_ACCESSOR(UnaryMathOperation) |
| 757 }; | 766 }; |
| 758 | 767 |
| 759 | 768 |
| 760 class LMathAbs V8_FINAL : public LTemplateInstruction<1, 2, 0> { | 769 class LMathAbs V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
| 761 public: | 770 public: |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 explicit LMathSqrt(LOperand* value) { | 853 explicit LMathSqrt(LOperand* value) { |
| 845 inputs_[0] = value; | 854 inputs_[0] = value; |
| 846 } | 855 } |
| 847 | 856 |
| 848 LOperand* value() { return inputs_[0]; } | 857 LOperand* value() { return inputs_[0]; } |
| 849 | 858 |
| 850 DECLARE_CONCRETE_INSTRUCTION(MathSqrt, "math-sqrt") | 859 DECLARE_CONCRETE_INSTRUCTION(MathSqrt, "math-sqrt") |
| 851 }; | 860 }; |
| 852 | 861 |
| 853 | 862 |
| 854 class LMathPowHalf V8_FINAL : public LTemplateInstruction<1, 2, 1> { | 863 class LMathPowHalf V8_FINAL : public LTemplateInstruction<1, 1, 1> { |
| 855 public: | 864 public: |
| 856 LMathPowHalf(LOperand* context, LOperand* value, LOperand* temp) { | 865 LMathPowHalf(LOperand* value, LOperand* temp) { |
| 857 inputs_[1] = context; | |
| 858 inputs_[0] = value; | 866 inputs_[0] = value; |
| 859 temps_[0] = temp; | 867 temps_[0] = temp; |
| 860 } | 868 } |
| 861 | 869 |
| 862 LOperand* context() { return inputs_[1]; } | |
| 863 LOperand* value() { return inputs_[0]; } | 870 LOperand* value() { return inputs_[0]; } |
| 864 LOperand* temp() { return temps_[0]; } | 871 LOperand* temp() { return temps_[0]; } |
| 865 | 872 |
| 866 DECLARE_CONCRETE_INSTRUCTION(MathPowHalf, "math-pow-half") | 873 DECLARE_CONCRETE_INSTRUCTION(MathPowHalf, "math-pow-half") |
| 867 }; | 874 }; |
| 868 | 875 |
| 869 | 876 |
| 870 class LCmpObjectEqAndBranch V8_FINAL : public LControlInstruction<2, 0> { | 877 class LCmpObjectEqAndBranch V8_FINAL : public LControlInstruction<2, 0> { |
| 871 public: | 878 public: |
| 872 LCmpObjectEqAndBranch(LOperand* left, LOperand* right) { | 879 LCmpObjectEqAndBranch(LOperand* left, LOperand* right) { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 887 inputs_[0] = object; | 894 inputs_[0] = object; |
| 888 } | 895 } |
| 889 | 896 |
| 890 LOperand* object() { return inputs_[0]; } | 897 LOperand* object() { return inputs_[0]; } |
| 891 | 898 |
| 892 DECLARE_CONCRETE_INSTRUCTION(CmpHoleAndBranch, "cmp-hole-and-branch") | 899 DECLARE_CONCRETE_INSTRUCTION(CmpHoleAndBranch, "cmp-hole-and-branch") |
| 893 DECLARE_HYDROGEN_ACCESSOR(CompareHoleAndBranch) | 900 DECLARE_HYDROGEN_ACCESSOR(CompareHoleAndBranch) |
| 894 }; | 901 }; |
| 895 | 902 |
| 896 | 903 |
| 904 class LCompareMinusZeroAndBranch V8_FINAL : public LControlInstruction<1, 1> { |
| 905 public: |
| 906 LCompareMinusZeroAndBranch(LOperand* value, LOperand* temp) { |
| 907 inputs_[0] = value; |
| 908 temps_[0] = temp; |
| 909 } |
| 910 |
| 911 LOperand* value() { return inputs_[0]; } |
| 912 LOperand* temp() { return temps_[0]; } |
| 913 |
| 914 DECLARE_CONCRETE_INSTRUCTION(CompareMinusZeroAndBranch, |
| 915 "cmp-minus-zero-and-branch") |
| 916 DECLARE_HYDROGEN_ACCESSOR(CompareMinusZeroAndBranch) |
| 917 }; |
| 918 |
| 919 |
| 897 class LIsObjectAndBranch V8_FINAL : public LControlInstruction<1, 1> { | 920 class LIsObjectAndBranch V8_FINAL : public LControlInstruction<1, 1> { |
| 898 public: | 921 public: |
| 899 LIsObjectAndBranch(LOperand* value, LOperand* temp) { | 922 LIsObjectAndBranch(LOperand* value, LOperand* temp) { |
| 900 inputs_[0] = value; | 923 inputs_[0] = value; |
| 901 temps_[0] = temp; | 924 temps_[0] = temp; |
| 902 } | 925 } |
| 903 | 926 |
| 904 LOperand* value() { return inputs_[0]; } | 927 LOperand* value() { return inputs_[0]; } |
| 905 LOperand* temp() { return temps_[0]; } | 928 LOperand* temp() { return temps_[0]; } |
| 906 | 929 |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 961 | 984 |
| 962 | 985 |
| 963 class LStringCompareAndBranch V8_FINAL : public LControlInstruction<3, 0> { | 986 class LStringCompareAndBranch V8_FINAL : public LControlInstruction<3, 0> { |
| 964 public: | 987 public: |
| 965 LStringCompareAndBranch(LOperand* context, LOperand* left, LOperand* right) { | 988 LStringCompareAndBranch(LOperand* context, LOperand* left, LOperand* right) { |
| 966 inputs_[0] = context; | 989 inputs_[0] = context; |
| 967 inputs_[1] = left; | 990 inputs_[1] = left; |
| 968 inputs_[2] = right; | 991 inputs_[2] = right; |
| 969 } | 992 } |
| 970 | 993 |
| 994 LOperand* context() { return inputs_[1]; } |
| 971 LOperand* left() { return inputs_[1]; } | 995 LOperand* left() { return inputs_[1]; } |
| 972 LOperand* right() { return inputs_[2]; } | 996 LOperand* right() { return inputs_[2]; } |
| 973 | 997 |
| 974 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch, | 998 DECLARE_CONCRETE_INSTRUCTION(StringCompareAndBranch, |
| 975 "string-compare-and-branch") | 999 "string-compare-and-branch") |
| 976 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch) | 1000 DECLARE_HYDROGEN_ACCESSOR(StringCompareAndBranch) |
| 977 | 1001 |
| 978 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; | 1002 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
| 979 | 1003 |
| 980 Token::Value op() const { return hydrogen()->token(); } | 1004 Token::Value op() const { return hydrogen()->token(); } |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1065 public: | 1089 public: |
| 1066 LCmpT(LOperand* context, LOperand* left, LOperand* right) { | 1090 LCmpT(LOperand* context, LOperand* left, LOperand* right) { |
| 1067 inputs_[0] = context; | 1091 inputs_[0] = context; |
| 1068 inputs_[1] = left; | 1092 inputs_[1] = left; |
| 1069 inputs_[2] = right; | 1093 inputs_[2] = right; |
| 1070 } | 1094 } |
| 1071 | 1095 |
| 1072 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t") | 1096 DECLARE_CONCRETE_INSTRUCTION(CmpT, "cmp-t") |
| 1073 DECLARE_HYDROGEN_ACCESSOR(CompareGeneric) | 1097 DECLARE_HYDROGEN_ACCESSOR(CompareGeneric) |
| 1074 | 1098 |
| 1099 LOperand* context() { return inputs_[0]; } |
| 1075 Token::Value op() const { return hydrogen()->token(); } | 1100 Token::Value op() const { return hydrogen()->token(); } |
| 1076 }; | 1101 }; |
| 1077 | 1102 |
| 1078 | 1103 |
| 1079 class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 3, 0> { | 1104 class LInstanceOf V8_FINAL : public LTemplateInstruction<1, 3, 0> { |
| 1080 public: | 1105 public: |
| 1081 LInstanceOf(LOperand* context, LOperand* left, LOperand* right) { | 1106 LInstanceOf(LOperand* context, LOperand* left, LOperand* right) { |
| 1082 inputs_[0] = context; | 1107 inputs_[0] = context; |
| 1083 inputs_[1] = left; | 1108 inputs_[1] = left; |
| 1084 inputs_[2] = right; | 1109 inputs_[2] = right; |
| 1085 } | 1110 } |
| 1086 | 1111 |
| 1087 LOperand* context() { return inputs_[0]; } | 1112 LOperand* context() { return inputs_[0]; } |
| 1088 | 1113 |
| 1089 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") | 1114 DECLARE_CONCRETE_INSTRUCTION(InstanceOf, "instance-of") |
| 1090 }; | 1115 }; |
| 1091 | 1116 |
| 1092 | 1117 |
| 1093 class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 2, 1> { | 1118 class LInstanceOfKnownGlobal V8_FINAL : public LTemplateInstruction<1, 2, 1> { |
| 1094 public: | 1119 public: |
| 1095 LInstanceOfKnownGlobal(LOperand* context, LOperand* value, LOperand* temp) { | 1120 LInstanceOfKnownGlobal(LOperand* context, LOperand* value, LOperand* temp) { |
| 1096 inputs_[0] = context; | 1121 inputs_[0] = context; |
| 1097 inputs_[1] = value; | 1122 inputs_[1] = value; |
| 1098 temps_[0] = temp; | 1123 temps_[0] = temp; |
| 1099 } | 1124 } |
| 1100 | 1125 |
| 1126 LOperand* context() { return inputs_[0]; } |
| 1101 LOperand* value() { return inputs_[1]; } | 1127 LOperand* value() { return inputs_[1]; } |
| 1102 LOperand* temp() { return temps_[0]; } | 1128 LOperand* temp() { return temps_[0]; } |
| 1103 | 1129 |
| 1104 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal, | 1130 DECLARE_CONCRETE_INSTRUCTION(InstanceOfKnownGlobal, |
| 1105 "instance-of-known-global") | 1131 "instance-of-known-global") |
| 1106 DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal) | 1132 DECLARE_HYDROGEN_ACCESSOR(InstanceOfKnownGlobal) |
| 1107 | 1133 |
| 1108 Handle<JSFunction> function() const { return hydrogen()->function(); } | 1134 Handle<JSFunction> function() const { return hydrogen()->function(); } |
| 1109 LEnvironment* GetDeferredLazyDeoptimizationEnvironment() { | 1135 LEnvironment* GetDeferredLazyDeoptimizationEnvironment() { |
| 1110 return lazy_deopt_env_; | 1136 return lazy_deopt_env_; |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1329 DECLARE_CONCRETE_INSTRUCTION(DateField, "date-field") | 1355 DECLARE_CONCRETE_INSTRUCTION(DateField, "date-field") |
| 1330 DECLARE_HYDROGEN_ACCESSOR(DateField) | 1356 DECLARE_HYDROGEN_ACCESSOR(DateField) |
| 1331 | 1357 |
| 1332 Smi* index() const { return index_; } | 1358 Smi* index() const { return index_; } |
| 1333 | 1359 |
| 1334 private: | 1360 private: |
| 1335 Smi* index_; | 1361 Smi* index_; |
| 1336 }; | 1362 }; |
| 1337 | 1363 |
| 1338 | 1364 |
| 1365 class LSeqStringGetChar V8_FINAL : public LTemplateInstruction<1, 2, 0> { |
| 1366 public: |
| 1367 LSeqStringGetChar(LOperand* string, LOperand* index) { |
| 1368 inputs_[0] = string; |
| 1369 inputs_[1] = index; |
| 1370 } |
| 1371 |
| 1372 LOperand* string() const { return inputs_[0]; } |
| 1373 LOperand* index() const { return inputs_[1]; } |
| 1374 |
| 1375 DECLARE_CONCRETE_INSTRUCTION(SeqStringGetChar, "seq-string-get-char") |
| 1376 DECLARE_HYDROGEN_ACCESSOR(SeqStringGetChar) |
| 1377 }; |
| 1378 |
| 1379 |
| 1339 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> { | 1380 class LSeqStringSetChar V8_FINAL : public LTemplateInstruction<1, 3, 0> { |
| 1340 public: | 1381 public: |
| 1341 LSeqStringSetChar(String::Encoding encoding, | 1382 LSeqStringSetChar(LOperand* string, |
| 1342 LOperand* string, | |
| 1343 LOperand* index, | 1383 LOperand* index, |
| 1344 LOperand* value) : encoding_(encoding) { | 1384 LOperand* value) { |
| 1345 inputs_[0] = string; | 1385 inputs_[0] = string; |
| 1346 inputs_[1] = index; | 1386 inputs_[1] = index; |
| 1347 inputs_[2] = value; | 1387 inputs_[2] = value; |
| 1348 } | 1388 } |
| 1349 | 1389 |
| 1350 String::Encoding encoding() { return encoding_; } | |
| 1351 LOperand* string() { return inputs_[0]; } | 1390 LOperand* string() { return inputs_[0]; } |
| 1352 LOperand* index() { return inputs_[1]; } | 1391 LOperand* index() { return inputs_[1]; } |
| 1353 LOperand* value() { return inputs_[2]; } | 1392 LOperand* value() { return inputs_[2]; } |
| 1354 | 1393 |
| 1355 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") | 1394 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") |
| 1356 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) | 1395 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) |
| 1357 | |
| 1358 private: | |
| 1359 String::Encoding encoding_; | |
| 1360 }; | 1396 }; |
| 1361 | 1397 |
| 1362 | 1398 |
| 1363 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { | 1399 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> { |
| 1364 public: | 1400 public: |
| 1365 LThrow(LOperand* context, LOperand* value) { | 1401 LThrow(LOperand* context, LOperand* value) { |
| 1366 inputs_[0] = context; | 1402 inputs_[0] = context; |
| 1367 inputs_[1] = value; | 1403 inputs_[1] = value; |
| 1368 } | 1404 } |
| 1369 | 1405 |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1494 | 1530 |
| 1495 Token::Value op() const { return op_; } | 1531 Token::Value op() const { return op_; } |
| 1496 | 1532 |
| 1497 private: | 1533 private: |
| 1498 Token::Value op_; | 1534 Token::Value op_; |
| 1499 }; | 1535 }; |
| 1500 | 1536 |
| 1501 | 1537 |
| 1502 class LReturn V8_FINAL : public LTemplateInstruction<0, 3, 0> { | 1538 class LReturn V8_FINAL : public LTemplateInstruction<0, 3, 0> { |
| 1503 public: | 1539 public: |
| 1504 explicit LReturn(LOperand* value, LOperand* context, | 1540 explicit LReturn(LOperand* value, |
| 1541 LOperand* context, |
| 1505 LOperand* parameter_count) { | 1542 LOperand* parameter_count) { |
| 1506 inputs_[0] = value; | 1543 inputs_[0] = value; |
| 1507 inputs_[1] = context; | 1544 inputs_[1] = context; |
| 1508 inputs_[2] = parameter_count; | 1545 inputs_[2] = parameter_count; |
| 1509 } | 1546 } |
| 1510 | 1547 |
| 1511 bool has_constant_parameter_count() { | 1548 bool has_constant_parameter_count() { |
| 1512 return parameter_count()->IsConstantOperand(); | 1549 return parameter_count()->IsConstantOperand(); |
| 1513 } | 1550 } |
| 1514 LConstantOperand* constant_parameter_count() { | 1551 LConstantOperand* constant_parameter_count() { |
| (...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2069 temps_[0] = temp; | 2106 temps_[0] = temp; |
| 2070 } | 2107 } |
| 2071 | 2108 |
| 2072 LOperand* value() { return inputs_[0]; } | 2109 LOperand* value() { return inputs_[0]; } |
| 2073 LOperand* temp() { return temps_[0]; } | 2110 LOperand* temp() { return temps_[0]; } |
| 2074 | 2111 |
| 2075 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double") | 2112 DECLARE_CONCRETE_INSTRUCTION(Uint32ToDouble, "uint32-to-double") |
| 2076 }; | 2113 }; |
| 2077 | 2114 |
| 2078 | 2115 |
| 2116 class LUint32ToSmi V8_FINAL : public LTemplateInstruction<1, 1, 0> { |
| 2117 public: |
| 2118 explicit LUint32ToSmi(LOperand* value) { |
| 2119 inputs_[0] = value; |
| 2120 } |
| 2121 |
| 2122 LOperand* value() { return inputs_[0]; } |
| 2123 |
| 2124 DECLARE_CONCRETE_INSTRUCTION(Uint32ToSmi, "uint32-to-smi") |
| 2125 DECLARE_HYDROGEN_ACCESSOR(Change) |
| 2126 }; |
| 2127 |
| 2128 |
| 2079 class LNumberTagI V8_FINAL : public LTemplateInstruction<1, 1, 0> { | 2129 class LNumberTagI V8_FINAL : public LTemplateInstruction<1, 1, 0> { |
| 2080 public: | 2130 public: |
| 2081 explicit LNumberTagI(LOperand* value) { | 2131 explicit LNumberTagI(LOperand* value) { |
| 2082 inputs_[0] = value; | 2132 inputs_[0] = value; |
| 2083 } | 2133 } |
| 2084 | 2134 |
| 2085 LOperand* value() { return inputs_[0]; } | 2135 LOperand* value() { return inputs_[0]; } |
| 2086 | 2136 |
| 2087 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i") | 2137 DECLARE_CONCRETE_INSTRUCTION(NumberTagI, "number-tag-i") |
| 2088 }; | 2138 }; |
| (...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2811 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value); | 2861 MUST_USE_RESULT LOperand* UseTempRegister(HValue* value); |
| 2812 | 2862 |
| 2813 // An input operand in a register or stack slot. | 2863 // An input operand in a register or stack slot. |
| 2814 MUST_USE_RESULT LOperand* Use(HValue* value); | 2864 MUST_USE_RESULT LOperand* Use(HValue* value); |
| 2815 MUST_USE_RESULT LOperand* UseAtStart(HValue* value); | 2865 MUST_USE_RESULT LOperand* UseAtStart(HValue* value); |
| 2816 | 2866 |
| 2817 // An input operand in a register, stack slot or a constant operand. | 2867 // An input operand in a register, stack slot or a constant operand. |
| 2818 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value); | 2868 MUST_USE_RESULT LOperand* UseOrConstant(HValue* value); |
| 2819 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value); | 2869 MUST_USE_RESULT LOperand* UseOrConstantAtStart(HValue* value); |
| 2820 | 2870 |
| 2871 // An input operand in a fixed register or a constant operand. |
| 2872 MUST_USE_RESULT LOperand* UseFixedOrConstant(HValue* value, |
| 2873 Register fixed_register); |
| 2874 |
| 2821 // An input operand in a register or a constant operand. | 2875 // An input operand in a register or a constant operand. |
| 2822 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); | 2876 MUST_USE_RESULT LOperand* UseRegisterOrConstant(HValue* value); |
| 2823 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); | 2877 MUST_USE_RESULT LOperand* UseRegisterOrConstantAtStart(HValue* value); |
| 2824 | 2878 |
| 2825 // An input operand in a constant operand. | 2879 // An input operand in a constant operand. |
| 2826 MUST_USE_RESULT LOperand* UseConstant(HValue* value); | 2880 MUST_USE_RESULT LOperand* UseConstant(HValue* value); |
| 2827 | 2881 |
| 2828 // An input operand in register, stack slot or a constant operand. | 2882 // An input operand in register, stack slot or a constant operand. |
| 2829 // Will not be moved to a register even if one is freely available. | 2883 // Will not be moved to a register even if one is freely available. |
| 2830 MUST_USE_RESULT LOperand* UseAny(HValue* value); | 2884 MUST_USE_RESULT LOperand* UseAny(HValue* value); |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2901 | 2955 |
| 2902 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2956 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2903 }; | 2957 }; |
| 2904 | 2958 |
| 2905 #undef DECLARE_HYDROGEN_ACCESSOR | 2959 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2906 #undef DECLARE_CONCRETE_INSTRUCTION | 2960 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2907 | 2961 |
| 2908 } } // namespace v8::internal | 2962 } } // namespace v8::internal |
| 2909 | 2963 |
| 2910 #endif // V8_IA32_LITHIUM_IA32_H_ | 2964 #endif // V8_IA32_LITHIUM_IA32_H_ |
| OLD | NEW |