OLD | NEW |
1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_PPC_LITHIUM_CODEGEN_PPC_H_ | 5 #ifndef V8_PPC_LITHIUM_CODEGEN_PPC_H_ |
6 #define V8_PPC_LITHIUM_CODEGEN_PPC_H_ | 6 #define V8_PPC_LITHIUM_CODEGEN_PPC_H_ |
7 | 7 |
8 #include "src/ppc/lithium-ppc.h" | 8 #include "src/ppc/lithium-ppc.h" |
9 | 9 |
10 #include "src/ppc/lithium-gap-resolver-ppc.h" | 10 #include "src/ppc/lithium-gap-resolver-ppc.h" |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 LOperand* temp1, LOperand* temp2, | 104 LOperand* temp1, LOperand* temp2, |
105 IntegerSignedness signedness); | 105 IntegerSignedness signedness); |
106 | 106 |
107 void DoDeferredTaggedToI(LTaggedToI* instr); | 107 void DoDeferredTaggedToI(LTaggedToI* instr); |
108 void DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr); | 108 void DoDeferredMathAbsTaggedHeapNumber(LMathAbs* instr); |
109 void DoDeferredStackCheck(LStackCheck* instr); | 109 void DoDeferredStackCheck(LStackCheck* instr); |
110 void DoDeferredMaybeGrowElements(LMaybeGrowElements* instr); | 110 void DoDeferredMaybeGrowElements(LMaybeGrowElements* instr); |
111 void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); | 111 void DoDeferredStringCharCodeAt(LStringCharCodeAt* instr); |
112 void DoDeferredStringCharFromCode(LStringCharFromCode* instr); | 112 void DoDeferredStringCharFromCode(LStringCharFromCode* instr); |
113 void DoDeferredAllocate(LAllocate* instr); | 113 void DoDeferredAllocate(LAllocate* instr); |
114 void DoDeferredInstanceOfKnownGlobal(LInstanceOfKnownGlobal* instr, | |
115 Label* map_check, Label* bool_load); | |
116 void DoDeferredInstanceMigration(LCheckMaps* instr, Register object); | 114 void DoDeferredInstanceMigration(LCheckMaps* instr, Register object); |
117 void DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, Register result, | 115 void DoDeferredLoadMutableDouble(LLoadFieldByIndex* instr, Register result, |
118 Register object, Register index); | 116 Register object, Register index); |
119 | 117 |
120 // Parallel move support. | 118 // Parallel move support. |
121 void DoParallelMove(LParallelMove* move); | 119 void DoParallelMove(LParallelMove* move); |
122 void DoGap(LGap* instr); | 120 void DoGap(LGap* instr); |
123 | 121 |
124 MemOperand PrepareKeyedOperand(Register key, Register base, | 122 MemOperand PrepareKeyedOperand(Register key, Register base, |
125 bool key_is_constant, bool key_is_tagged, | 123 bool key_is_constant, bool key_is_tagged, |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
236 | 234 |
237 void RecordAndWritePosition(int position) override; | 235 void RecordAndWritePosition(int position) override; |
238 | 236 |
239 static Condition TokenToCondition(Token::Value op); | 237 static Condition TokenToCondition(Token::Value op); |
240 void EmitGoto(int block); | 238 void EmitGoto(int block); |
241 | 239 |
242 // EmitBranch expects to be the last instruction of a block. | 240 // EmitBranch expects to be the last instruction of a block. |
243 template <class InstrType> | 241 template <class InstrType> |
244 void EmitBranch(InstrType instr, Condition condition, CRegister cr = cr7); | 242 void EmitBranch(InstrType instr, Condition condition, CRegister cr = cr7); |
245 template <class InstrType> | 243 template <class InstrType> |
| 244 void EmitTrueBranch(InstrType instr, Condition condition, CRegister cr = cr7); |
| 245 template <class InstrType> |
246 void EmitFalseBranch(InstrType instr, Condition condition, | 246 void EmitFalseBranch(InstrType instr, Condition condition, |
247 CRegister cr = cr7); | 247 CRegister cr = cr7); |
248 void EmitNumberUntagD(LNumberUntagD* instr, Register input, | 248 void EmitNumberUntagD(LNumberUntagD* instr, Register input, |
249 DoubleRegister result, NumberUntagDMode mode); | 249 DoubleRegister result, NumberUntagDMode mode); |
250 | 250 |
251 // Emits optimized code for typeof x == "y". Modifies input register. | 251 // Emits optimized code for typeof x == "y". Modifies input register. |
252 // Returns the condition on which a final split to | 252 // Returns the condition on which a final split to |
253 // true and false label should be made, to optimize fallthrough. | 253 // true and false label should be made, to optimize fallthrough. |
254 Condition EmitTypeofIs(Label* true_label, Label* false_label, Register input, | 254 Condition EmitTypeofIs(Label* true_label, Label* false_label, Register input, |
255 Handle<String> type_name); | 255 Handle<String> type_name); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 LCodeGen* codegen_; | 355 LCodeGen* codegen_; |
356 Label entry_; | 356 Label entry_; |
357 Label exit_; | 357 Label exit_; |
358 Label* external_exit_; | 358 Label* external_exit_; |
359 int instruction_index_; | 359 int instruction_index_; |
360 }; | 360 }; |
361 } | 361 } |
362 } // namespace v8::internal | 362 } // namespace v8::internal |
363 | 363 |
364 #endif // V8_PPC_LITHIUM_CODEGEN_PPC_H_ | 364 #endif // V8_PPC_LITHIUM_CODEGEN_PPC_H_ |
OLD | NEW |