OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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_X87_LITHIUM_CODEGEN_X87_H_ | 5 #ifndef V8_X87_LITHIUM_CODEGEN_X87_H_ |
6 #define V8_X87_LITHIUM_CODEGEN_X87_H_ | 6 #define V8_X87_LITHIUM_CODEGEN_X87_H_ |
7 | 7 |
8 #include "src/x87/lithium-x87.h" | 8 #include "src/x87/lithium-x87.h" |
9 | 9 |
10 #include "src/base/logging.h" | 10 #include "src/base/logging.h" |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 int formal_parameter_count, | 227 int formal_parameter_count, |
228 int arity, | 228 int arity, |
229 LInstruction* instr, | 229 LInstruction* instr, |
230 EDIState edi_state); | 230 EDIState edi_state); |
231 | 231 |
232 void RecordSafepointWithLazyDeopt(LInstruction* instr, | 232 void RecordSafepointWithLazyDeopt(LInstruction* instr, |
233 SafepointMode safepoint_mode); | 233 SafepointMode safepoint_mode); |
234 | 234 |
235 void RegisterEnvironmentForDeoptimization(LEnvironment* environment, | 235 void RegisterEnvironmentForDeoptimization(LEnvironment* environment, |
236 Safepoint::DeoptMode mode); | 236 Safepoint::DeoptMode mode); |
237 void DeoptimizeIf(Condition cc, | 237 void DeoptimizeIf(Condition cc, LInstruction* instr, |
238 LEnvironment* environment, | |
239 Deoptimizer::BailoutType bailout_type); | 238 Deoptimizer::BailoutType bailout_type); |
240 void DeoptimizeIf(Condition cc, LEnvironment* environment); | 239 void DeoptimizeIf(Condition cc, LInstruction* instr); |
241 | 240 |
242 bool DeoptEveryNTimes() { | 241 bool DeoptEveryNTimes() { |
243 return FLAG_deopt_every_n_times != 0 && !info()->IsStub(); | 242 return FLAG_deopt_every_n_times != 0 && !info()->IsStub(); |
244 } | 243 } |
245 | 244 |
246 void AddToTranslation(LEnvironment* environment, | 245 void AddToTranslation(LEnvironment* environment, |
247 Translation* translation, | 246 Translation* translation, |
248 LOperand* op, | 247 LOperand* op, |
249 bool is_tagged, | 248 bool is_tagged, |
250 bool is_uint32, | 249 bool is_uint32, |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 void RecordAndWritePosition(int position) OVERRIDE; | 286 void RecordAndWritePosition(int position) OVERRIDE; |
288 | 287 |
289 static Condition TokenToCondition(Token::Value op, bool is_unsigned); | 288 static Condition TokenToCondition(Token::Value op, bool is_unsigned); |
290 void EmitGoto(int block); | 289 void EmitGoto(int block); |
291 | 290 |
292 // EmitBranch expects to be the last instruction of a block. | 291 // EmitBranch expects to be the last instruction of a block. |
293 template<class InstrType> | 292 template<class InstrType> |
294 void EmitBranch(InstrType instr, Condition cc); | 293 void EmitBranch(InstrType instr, Condition cc); |
295 template<class InstrType> | 294 template<class InstrType> |
296 void EmitFalseBranch(InstrType instr, Condition cc); | 295 void EmitFalseBranch(InstrType instr, Condition cc); |
297 void EmitNumberUntagDNoSSE2( | 296 void EmitNumberUntagDNoSSE2(LNumberUntagD* instr, Register input, |
298 Register input, | 297 Register temp, X87Register res_reg, |
299 Register temp, | 298 NumberUntagDMode mode); |
300 X87Register res_reg, | |
301 bool allow_undefined_as_nan, | |
302 bool deoptimize_on_minus_zero, | |
303 LEnvironment* env, | |
304 NumberUntagDMode mode = NUMBER_CANDIDATE_IS_ANY_TAGGED); | |
305 | 299 |
306 // Emits optimized code for typeof x == "y". Modifies input register. | 300 // Emits optimized code for typeof x == "y". Modifies input register. |
307 // Returns the condition on which a final split to | 301 // Returns the condition on which a final split to |
308 // true and false label should be made, to optimize fallthrough. | 302 // true and false label should be made, to optimize fallthrough. |
309 Condition EmitTypeofIs(LTypeofIsAndBranch* instr, Register input); | 303 Condition EmitTypeofIs(LTypeofIsAndBranch* instr, Register input); |
310 | 304 |
311 // Emits optimized code for %_IsObject(x). Preserves input register. | 305 // Emits optimized code for %_IsObject(x). Preserves input register. |
312 // Returns the condition on which a final split to | 306 // Returns the condition on which a final split to |
313 // true and false label should be made, to optimize fallthrough. | 307 // true and false label should be made, to optimize fallthrough. |
314 Condition EmitIsObject(Register input, | 308 Condition EmitIsObject(Register input, |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 Label exit_; | 492 Label exit_; |
499 Label* external_exit_; | 493 Label* external_exit_; |
500 Label done_; | 494 Label done_; |
501 int instruction_index_; | 495 int instruction_index_; |
502 LCodeGen::X87Stack x87_stack_; | 496 LCodeGen::X87Stack x87_stack_; |
503 }; | 497 }; |
504 | 498 |
505 } } // namespace v8::internal | 499 } } // namespace v8::internal |
506 | 500 |
507 #endif // V8_X87_LITHIUM_CODEGEN_X87_H_ | 501 #endif // V8_X87_LITHIUM_CODEGEN_X87_H_ |
OLD | NEW |