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

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

Issue 71163006: Merge bleeding_edge r17376:17693. (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: Fix all.gyp Created 7 years, 1 month 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/ia32/lithium-gap-resolver-ia32.cc ('k') | src/ia32/lithium-ia32.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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
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
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
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
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
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
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
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
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_
OLDNEW
« no previous file with comments | « src/ia32/lithium-gap-resolver-ia32.cc ('k') | src/ia32/lithium-ia32.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698