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/mips/lithium-mips.h

Issue 185653004: Experimental parser: merge to r19637 (Closed) Base URL: https://v8.googlecode.com/svn/branches/experimental/parser
Patch Set: Created 6 years, 9 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 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 V(DateField) \ 84 V(DateField) \
85 V(DebugBreak) \ 85 V(DebugBreak) \
86 V(DeclareGlobals) \ 86 V(DeclareGlobals) \
87 V(Deoptimize) \ 87 V(Deoptimize) \
88 V(DivI) \ 88 V(DivI) \
89 V(DoubleToI) \ 89 V(DoubleToI) \
90 V(DoubleToSmi) \ 90 V(DoubleToSmi) \
91 V(Drop) \ 91 V(Drop) \
92 V(Dummy) \ 92 V(Dummy) \
93 V(DummyUse) \ 93 V(DummyUse) \
94 V(ElementsKind) \
95 V(ForInCacheArray) \ 94 V(ForInCacheArray) \
96 V(ForInPrepareMap) \ 95 V(ForInPrepareMap) \
97 V(FunctionLiteral) \ 96 V(FunctionLiteral) \
98 V(GetCachedArrayIndex) \ 97 V(GetCachedArrayIndex) \
99 V(GlobalObject) \
100 V(GlobalReceiver) \
101 V(Goto) \ 98 V(Goto) \
102 V(HasCachedArrayIndexAndBranch) \ 99 V(HasCachedArrayIndexAndBranch) \
103 V(HasInstanceTypeAndBranch) \ 100 V(HasInstanceTypeAndBranch) \
104 V(InnerAllocatedObject) \ 101 V(InnerAllocatedObject) \
105 V(InstanceOf) \ 102 V(InstanceOf) \
106 V(InstanceOfKnownGlobal) \ 103 V(InstanceOfKnownGlobal) \
107 V(InstructionGap) \ 104 V(InstructionGap) \
108 V(Integer32ToDouble) \ 105 V(Integer32ToDouble) \
109 V(Integer32ToSmi) \ 106 V(Integer32ToSmi) \
110 V(InvokeFunction) \ 107 V(InvokeFunction) \
111 V(IsConstructCallAndBranch) \ 108 V(IsConstructCallAndBranch) \
112 V(IsObjectAndBranch) \ 109 V(IsObjectAndBranch) \
113 V(IsStringAndBranch) \ 110 V(IsStringAndBranch) \
114 V(IsSmiAndBranch) \ 111 V(IsSmiAndBranch) \
115 V(IsUndetectableAndBranch) \ 112 V(IsUndetectableAndBranch) \
116 V(Label) \ 113 V(Label) \
117 V(LazyBailout) \ 114 V(LazyBailout) \
118 V(LoadContextSlot) \ 115 V(LoadContextSlot) \
119 V(LoadExternalArrayPointer) \
120 V(LoadRoot) \ 116 V(LoadRoot) \
121 V(LoadFieldByIndex) \ 117 V(LoadFieldByIndex) \
122 V(LoadFunctionPrototype) \ 118 V(LoadFunctionPrototype) \
123 V(LoadGlobalCell) \ 119 V(LoadGlobalCell) \
124 V(LoadGlobalGeneric) \ 120 V(LoadGlobalGeneric) \
125 V(LoadKeyed) \ 121 V(LoadKeyed) \
126 V(LoadKeyedGeneric) \ 122 V(LoadKeyedGeneric) \
127 V(LoadNamedField) \ 123 V(LoadNamedField) \
128 V(LoadNamedGeneric) \ 124 V(LoadNamedGeneric) \
129 V(MapEnumLength) \ 125 V(MapEnumLength) \
130 V(MathAbs) \ 126 V(MathAbs) \
131 V(MathExp) \ 127 V(MathExp) \
128 V(MathClz32) \
132 V(MathFloor) \ 129 V(MathFloor) \
133 V(MathFloorOfDiv) \ 130 V(MathFloorOfDiv) \
134 V(MathLog) \ 131 V(MathLog) \
135 V(MathMinMax) \ 132 V(MathMinMax) \
136 V(MathPowHalf) \ 133 V(MathPowHalf) \
137 V(MathRound) \ 134 V(MathRound) \
138 V(MathSqrt) \ 135 V(MathSqrt) \
139 V(ModI) \ 136 V(ModI) \
140 V(MulI) \ 137 V(MulI) \
141 V(MultiplyAddD) \ 138 V(MultiplyAddD) \
142 V(NumberTagD) \ 139 V(NumberTagD) \
143 V(NumberTagI) \ 140 V(NumberTagI) \
144 V(NumberTagU) \ 141 V(NumberTagU) \
145 V(NumberUntagD) \ 142 V(NumberUntagD) \
146 V(OsrEntry) \ 143 V(OsrEntry) \
147 V(OuterContext) \
148 V(Parameter) \ 144 V(Parameter) \
149 V(Power) \ 145 V(Power) \
150 V(PushArgument) \ 146 V(PushArgument) \
151 V(RegExpLiteral) \ 147 V(RegExpLiteral) \
152 V(Return) \ 148 V(Return) \
153 V(SeqStringGetChar) \ 149 V(SeqStringGetChar) \
154 V(SeqStringSetChar) \ 150 V(SeqStringSetChar) \
155 V(ShiftI) \ 151 V(ShiftI) \
156 V(SmiTag) \ 152 V(SmiTag) \
157 V(SmiUntag) \ 153 V(SmiUntag) \
158 V(StackCheck) \ 154 V(StackCheck) \
159 V(StoreCodeEntry) \ 155 V(StoreCodeEntry) \
160 V(StoreContextSlot) \ 156 V(StoreContextSlot) \
161 V(StoreGlobalCell) \ 157 V(StoreGlobalCell) \
162 V(StoreKeyed) \ 158 V(StoreKeyed) \
163 V(StoreKeyedGeneric) \ 159 V(StoreKeyedGeneric) \
164 V(StoreNamedField) \ 160 V(StoreNamedField) \
165 V(StoreNamedGeneric) \ 161 V(StoreNamedGeneric) \
166 V(StringAdd) \ 162 V(StringAdd) \
167 V(StringCharCodeAt) \ 163 V(StringCharCodeAt) \
168 V(StringCharFromCode) \ 164 V(StringCharFromCode) \
169 V(StringCompareAndBranch) \ 165 V(StringCompareAndBranch) \
170 V(SubI) \ 166 V(SubI) \
171 V(TaggedToI) \ 167 V(TaggedToI) \
172 V(ThisFunction) \ 168 V(ThisFunction) \
173 V(Throw) \
174 V(ToFastProperties) \ 169 V(ToFastProperties) \
175 V(TransitionElementsKind) \ 170 V(TransitionElementsKind) \
176 V(TrapAllocationMemento) \ 171 V(TrapAllocationMemento) \
177 V(Typeof) \ 172 V(Typeof) \
178 V(TypeofIsAndBranch) \ 173 V(TypeofIsAndBranch) \
179 V(Uint32ToDouble) \ 174 V(Uint32ToDouble) \
180 V(Uint32ToSmi) \ 175 V(Uint32ToSmi) \
181 V(UnknownOSRValue) \ 176 V(UnknownOSRValue) \
182 V(ValueOf) \
183 V(WrapReceiver) 177 V(WrapReceiver)
184 178
185 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \ 179 #define DECLARE_CONCRETE_INSTRUCTION(type, mnemonic) \
186 virtual Opcode opcode() const V8_FINAL V8_OVERRIDE { \ 180 virtual Opcode opcode() const V8_FINAL V8_OVERRIDE { \
187 return LInstruction::k##type; \ 181 return LInstruction::k##type; \
188 } \ 182 } \
189 virtual void CompileToNative(LCodeGen* generator) V8_FINAL V8_OVERRIDE; \ 183 virtual void CompileToNative(LCodeGen* generator) V8_FINAL V8_OVERRIDE; \
190 virtual const char* Mnemonic() const V8_FINAL V8_OVERRIDE { \ 184 virtual const char* Mnemonic() const V8_FINAL V8_OVERRIDE { \
191 return mnemonic; \ 185 return mnemonic; \
192 } \ 186 } \
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
548 542
549 543
550 class LWrapReceiver V8_FINAL : public LTemplateInstruction<1, 2, 0> { 544 class LWrapReceiver V8_FINAL : public LTemplateInstruction<1, 2, 0> {
551 public: 545 public:
552 LWrapReceiver(LOperand* receiver, LOperand* function) { 546 LWrapReceiver(LOperand* receiver, LOperand* function) {
553 inputs_[0] = receiver; 547 inputs_[0] = receiver;
554 inputs_[1] = function; 548 inputs_[1] = function;
555 } 549 }
556 550
557 DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver") 551 DECLARE_CONCRETE_INSTRUCTION(WrapReceiver, "wrap-receiver")
552 DECLARE_HYDROGEN_ACCESSOR(WrapReceiver)
558 553
559 LOperand* receiver() { return inputs_[0]; } 554 LOperand* receiver() { return inputs_[0]; }
560 LOperand* function() { return inputs_[1]; } 555 LOperand* function() { return inputs_[1]; }
561 }; 556 };
562 557
563 558
564 class LApplyArguments V8_FINAL : public LTemplateInstruction<1, 4, 0> { 559 class LApplyArguments V8_FINAL : public LTemplateInstruction<1, 4, 0> {
565 public: 560 public:
566 LApplyArguments(LOperand* function, 561 LApplyArguments(LOperand* function,
567 LOperand* receiver, 562 LOperand* receiver,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 explicit LMathLog(LOperand* value) { 796 explicit LMathLog(LOperand* value) {
802 inputs_[0] = value; 797 inputs_[0] = value;
803 } 798 }
804 799
805 LOperand* value() { return inputs_[0]; } 800 LOperand* value() { return inputs_[0]; }
806 801
807 DECLARE_CONCRETE_INSTRUCTION(MathLog, "math-log") 802 DECLARE_CONCRETE_INSTRUCTION(MathLog, "math-log")
808 }; 803 };
809 804
810 805
806 class LMathClz32 V8_FINAL : public LTemplateInstruction<1, 1, 0> {
807 public:
808 explicit LMathClz32(LOperand* value) {
809 inputs_[0] = value;
810 }
811
812 LOperand* value() { return inputs_[0]; }
813
814 DECLARE_CONCRETE_INSTRUCTION(MathClz32, "math-clz32")
815 };
816
817
811 class LMathExp V8_FINAL : public LTemplateInstruction<1, 1, 3> { 818 class LMathExp V8_FINAL : public LTemplateInstruction<1, 1, 3> {
812 public: 819 public:
813 LMathExp(LOperand* value, 820 LMathExp(LOperand* value,
814 LOperand* double_temp, 821 LOperand* double_temp,
815 LOperand* temp1, 822 LOperand* temp1,
816 LOperand* temp2) { 823 LOperand* temp2) {
817 inputs_[0] = value; 824 inputs_[0] = value;
818 temps_[0] = temp1; 825 temps_[0] = temp1;
819 temps_[1] = temp2; 826 temps_[1] = temp2;
820 temps_[2] = double_temp; 827 temps_[2] = double_temp;
(...skipping 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 explicit LMapEnumLength(LOperand* value) { 1279 explicit LMapEnumLength(LOperand* value) {
1273 inputs_[0] = value; 1280 inputs_[0] = value;
1274 } 1281 }
1275 1282
1276 LOperand* value() { return inputs_[0]; } 1283 LOperand* value() { return inputs_[0]; }
1277 1284
1278 DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length") 1285 DECLARE_CONCRETE_INSTRUCTION(MapEnumLength, "map-enum-length")
1279 }; 1286 };
1280 1287
1281 1288
1282 class LElementsKind V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1283 public:
1284 explicit LElementsKind(LOperand* value) {
1285 inputs_[0] = value;
1286 }
1287
1288 LOperand* value() { return inputs_[0]; }
1289
1290 DECLARE_CONCRETE_INSTRUCTION(ElementsKind, "elements-kind")
1291 DECLARE_HYDROGEN_ACCESSOR(ElementsKind)
1292 };
1293
1294
1295 class LValueOf V8_FINAL : public LTemplateInstruction<1, 1, 1> {
1296 public:
1297 LValueOf(LOperand* value, LOperand* temp) {
1298 inputs_[0] = value;
1299 temps_[0] = temp;
1300 }
1301
1302 LOperand* value() { return inputs_[0]; }
1303 LOperand* temp() { return temps_[0]; }
1304
1305 DECLARE_CONCRETE_INSTRUCTION(ValueOf, "value-of")
1306 DECLARE_HYDROGEN_ACCESSOR(ValueOf)
1307 };
1308
1309
1310 class LDateField V8_FINAL : public LTemplateInstruction<1, 1, 1> { 1289 class LDateField V8_FINAL : public LTemplateInstruction<1, 1, 1> {
1311 public: 1290 public:
1312 LDateField(LOperand* date, LOperand* temp, Smi* index) : index_(index) { 1291 LDateField(LOperand* date, LOperand* temp, Smi* index) : index_(index) {
1313 inputs_[0] = date; 1292 inputs_[0] = date;
1314 temps_[0] = temp; 1293 temps_[0] = temp;
1315 } 1294 }
1316 1295
1317 LOperand* date() { return inputs_[0]; } 1296 LOperand* date() { return inputs_[0]; }
1318 LOperand* temp() { return temps_[0]; } 1297 LOperand* temp() { return temps_[0]; }
1319 Smi* index() const { return index_; } 1298 Smi* index() const { return index_; }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1355 1334
1356 LOperand* string() { return inputs_[1]; } 1335 LOperand* string() { return inputs_[1]; }
1357 LOperand* index() { return inputs_[2]; } 1336 LOperand* index() { return inputs_[2]; }
1358 LOperand* value() { return inputs_[3]; } 1337 LOperand* value() { return inputs_[3]; }
1359 1338
1360 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char") 1339 DECLARE_CONCRETE_INSTRUCTION(SeqStringSetChar, "seq-string-set-char")
1361 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar) 1340 DECLARE_HYDROGEN_ACCESSOR(SeqStringSetChar)
1362 }; 1341 };
1363 1342
1364 1343
1365 class LThrow V8_FINAL : public LTemplateInstruction<0, 2, 0> {
1366 public:
1367 LThrow(LOperand* context, LOperand* value) {
1368 inputs_[0] = context;
1369 inputs_[1] = value;
1370 }
1371
1372 LOperand* context() { return inputs_[0]; }
1373 LOperand* value() { return inputs_[1]; }
1374
1375 DECLARE_CONCRETE_INSTRUCTION(Throw, "throw")
1376 };
1377
1378
1379 class LAddI V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1344 class LAddI V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1380 public: 1345 public:
1381 LAddI(LOperand* left, LOperand* right) { 1346 LAddI(LOperand* left, LOperand* right) {
1382 inputs_[0] = left; 1347 inputs_[0] = left;
1383 inputs_[1] = right; 1348 inputs_[1] = right;
1384 } 1349 }
1385 1350
1386 LOperand* left() { return inputs_[0]; } 1351 LOperand* left() { return inputs_[0]; }
1387 LOperand* right() { return inputs_[1]; } 1352 LOperand* right() { return inputs_[1]; }
1388 1353
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
1538 1503
1539 class LLoadRoot V8_FINAL : public LTemplateInstruction<1, 0, 0> { 1504 class LLoadRoot V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1540 public: 1505 public:
1541 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root") 1506 DECLARE_CONCRETE_INSTRUCTION(LoadRoot, "load-root")
1542 DECLARE_HYDROGEN_ACCESSOR(LoadRoot) 1507 DECLARE_HYDROGEN_ACCESSOR(LoadRoot)
1543 1508
1544 Heap::RootListIndex index() const { return hydrogen()->index(); } 1509 Heap::RootListIndex index() const { return hydrogen()->index(); }
1545 }; 1510 };
1546 1511
1547 1512
1548 class LLoadExternalArrayPointer V8_FINAL
1549 : public LTemplateInstruction<1, 1, 0> {
1550 public:
1551 explicit LLoadExternalArrayPointer(LOperand* object) {
1552 inputs_[0] = object;
1553 }
1554
1555 LOperand* object() { return inputs_[0]; }
1556
1557 DECLARE_CONCRETE_INSTRUCTION(LoadExternalArrayPointer,
1558 "load-external-array-pointer")
1559 };
1560
1561
1562 class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> { 1513 class LLoadKeyed V8_FINAL : public LTemplateInstruction<1, 2, 0> {
1563 public: 1514 public:
1564 LLoadKeyed(LOperand* elements, LOperand* key) { 1515 LLoadKeyed(LOperand* elements, LOperand* key) {
1565 inputs_[0] = elements; 1516 inputs_[0] = elements;
1566 inputs_[1] = key; 1517 inputs_[1] = key;
1567 } 1518 }
1568 1519
1569 LOperand* elements() { return inputs_[0]; } 1520 LOperand* elements() { return inputs_[0]; }
1570 LOperand* key() { return inputs_[1]; } 1521 LOperand* key() { return inputs_[1]; }
1571 ElementsKind elements_kind() const { 1522 ElementsKind elements_kind() const {
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
1746 }; 1697 };
1747 1698
1748 1699
1749 class LContext V8_FINAL : public LTemplateInstruction<1, 0, 0> { 1700 class LContext V8_FINAL : public LTemplateInstruction<1, 0, 0> {
1750 public: 1701 public:
1751 DECLARE_CONCRETE_INSTRUCTION(Context, "context") 1702 DECLARE_CONCRETE_INSTRUCTION(Context, "context")
1752 DECLARE_HYDROGEN_ACCESSOR(Context) 1703 DECLARE_HYDROGEN_ACCESSOR(Context)
1753 }; 1704 };
1754 1705
1755 1706
1756 class LOuterContext V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1757 public:
1758 explicit LOuterContext(LOperand* context) {
1759 inputs_[0] = context;
1760 }
1761
1762 LOperand* context() { return inputs_[0]; }
1763
1764 DECLARE_CONCRETE_INSTRUCTION(OuterContext, "outer-context")
1765 };
1766
1767
1768 class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> { 1707 class LDeclareGlobals V8_FINAL : public LTemplateInstruction<0, 1, 0> {
1769 public: 1708 public:
1770 explicit LDeclareGlobals(LOperand* context) { 1709 explicit LDeclareGlobals(LOperand* context) {
1771 inputs_[0] = context; 1710 inputs_[0] = context;
1772 } 1711 }
1773 1712
1774 LOperand* context() { return inputs_[0]; } 1713 LOperand* context() { return inputs_[0]; }
1775 1714
1776 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals") 1715 DECLARE_CONCRETE_INSTRUCTION(DeclareGlobals, "declare-globals")
1777 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals) 1716 DECLARE_HYDROGEN_ACCESSOR(DeclareGlobals)
1778 }; 1717 };
1779 1718
1780 1719
1781 class LGlobalObject V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1782 public:
1783 explicit LGlobalObject(LOperand* context) {
1784 inputs_[0] = context;
1785 }
1786
1787 LOperand* context() { return inputs_[0]; }
1788
1789 DECLARE_CONCRETE_INSTRUCTION(GlobalObject, "global-object")
1790 };
1791
1792
1793 class LGlobalReceiver V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1794 public:
1795 explicit LGlobalReceiver(LOperand* global_object) {
1796 inputs_[0] = global_object;
1797 }
1798
1799 LOperand* global_object() { return inputs_[0]; }
1800
1801 DECLARE_CONCRETE_INSTRUCTION(GlobalReceiver, "global-receiver")
1802 };
1803
1804
1805 class LCallJSFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> { 1720 class LCallJSFunction V8_FINAL : public LTemplateInstruction<1, 1, 0> {
1806 public: 1721 public:
1807 explicit LCallJSFunction(LOperand* function) { 1722 explicit LCallJSFunction(LOperand* function) {
1808 inputs_[0] = function; 1723 inputs_[0] = function;
1809 } 1724 }
1810 1725
1811 LOperand* function() { return inputs_[0]; } 1726 LOperand* function() { return inputs_[0]; }
1812 1727
1813 DECLARE_CONCRETE_INSTRUCTION(CallJSFunction, "call-js-function") 1728 DECLARE_CONCRETE_INSTRUCTION(CallJSFunction, "call-js-function")
1814 DECLARE_HYDROGEN_ACCESSOR(CallJSFunction) 1729 DECLARE_HYDROGEN_ACCESSOR(CallJSFunction)
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
2645 LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) 2560 LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator)
2646 : LChunkBuilderBase(graph->zone()), 2561 : LChunkBuilderBase(graph->zone()),
2647 chunk_(NULL), 2562 chunk_(NULL),
2648 info_(info), 2563 info_(info),
2649 graph_(graph), 2564 graph_(graph),
2650 status_(UNUSED), 2565 status_(UNUSED),
2651 current_instruction_(NULL), 2566 current_instruction_(NULL),
2652 current_block_(NULL), 2567 current_block_(NULL),
2653 next_block_(NULL), 2568 next_block_(NULL),
2654 allocator_(allocator), 2569 allocator_(allocator),
2655 position_(RelocInfo::kNoPosition),
2656 instruction_pending_deoptimization_environment_(NULL), 2570 instruction_pending_deoptimization_environment_(NULL),
2657 pending_deoptimization_ast_id_(BailoutId::None()) { } 2571 pending_deoptimization_ast_id_(BailoutId::None()) { }
2658 2572
2659 // Build the sequence for the graph. 2573 // Build the sequence for the graph.
2660 LPlatformChunk* Build(); 2574 LPlatformChunk* Build();
2661 2575
2662 LInstruction* CheckElideControlInstruction(HControlInstruction* instr); 2576 LInstruction* CheckElideControlInstruction(HControlInstruction* instr);
2663 2577
2664 // Declare methods that deal with the individual node types. 2578 // Declare methods that deal with the individual node types.
2665 #define DECLARE_DO(type) LInstruction* Do##type(H##type* node); 2579 #define DECLARE_DO(type) LInstruction* Do##type(H##type* node);
2666 HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) 2580 HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO)
2667 #undef DECLARE_DO 2581 #undef DECLARE_DO
2668 2582
2669 LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend); 2583 LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend);
2670 2584
2671 static bool HasMagicNumberForDivisor(int32_t divisor); 2585 static bool HasMagicNumberForDivisor(int32_t divisor);
2672 static HValue* SimplifiedDivisorForMathFloorOfDiv(HValue* val);
2673 2586
2674 LInstruction* DoMathFloor(HUnaryMathOperation* instr); 2587 LInstruction* DoMathFloor(HUnaryMathOperation* instr);
2675 LInstruction* DoMathRound(HUnaryMathOperation* instr); 2588 LInstruction* DoMathRound(HUnaryMathOperation* instr);
2676 LInstruction* DoMathAbs(HUnaryMathOperation* instr); 2589 LInstruction* DoMathAbs(HUnaryMathOperation* instr);
2677 LInstruction* DoMathLog(HUnaryMathOperation* instr); 2590 LInstruction* DoMathLog(HUnaryMathOperation* instr);
2678 LInstruction* DoMathExp(HUnaryMathOperation* instr); 2591 LInstruction* DoMathExp(HUnaryMathOperation* instr);
2679 LInstruction* DoMathSqrt(HUnaryMathOperation* instr); 2592 LInstruction* DoMathSqrt(HUnaryMathOperation* instr);
2680 LInstruction* DoMathPowHalf(HUnaryMathOperation* instr); 2593 LInstruction* DoMathPowHalf(HUnaryMathOperation* instr);
2594 LInstruction* DoMathClz32(HUnaryMathOperation* instr);
2681 2595
2682 private: 2596 private:
2683 enum Status { 2597 enum Status {
2684 UNUSED, 2598 UNUSED,
2685 BUILDING, 2599 BUILDING,
2686 DONE, 2600 DONE,
2687 ABORTED 2601 ABORTED
2688 }; 2602 };
2689 2603
2690 LPlatformChunk* chunk() const { return chunk_; } 2604 LPlatformChunk* chunk() const { return chunk_; }
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2782 HBinaryOperation* instr); 2696 HBinaryOperation* instr);
2783 2697
2784 LPlatformChunk* chunk_; 2698 LPlatformChunk* chunk_;
2785 CompilationInfo* info_; 2699 CompilationInfo* info_;
2786 HGraph* const graph_; 2700 HGraph* const graph_;
2787 Status status_; 2701 Status status_;
2788 HInstruction* current_instruction_; 2702 HInstruction* current_instruction_;
2789 HBasicBlock* current_block_; 2703 HBasicBlock* current_block_;
2790 HBasicBlock* next_block_; 2704 HBasicBlock* next_block_;
2791 LAllocator* allocator_; 2705 LAllocator* allocator_;
2792 int position_;
2793 LInstruction* instruction_pending_deoptimization_environment_; 2706 LInstruction* instruction_pending_deoptimization_environment_;
2794 BailoutId pending_deoptimization_ast_id_; 2707 BailoutId pending_deoptimization_ast_id_;
2795 2708
2796 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); 2709 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder);
2797 }; 2710 };
2798 2711
2799 #undef DECLARE_HYDROGEN_ACCESSOR 2712 #undef DECLARE_HYDROGEN_ACCESSOR
2800 #undef DECLARE_CONCRETE_INSTRUCTION 2713 #undef DECLARE_CONCRETE_INSTRUCTION
2801 2714
2802 } } // namespace v8::internal 2715 } } // namespace v8::internal
2803 2716
2804 #endif // V8_MIPS_LITHIUM_MIPS_H_ 2717 #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