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 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
397 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE { | 397 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE { |
398 return !IsRedundant(); | 398 return !IsRedundant(); |
399 } | 399 } |
400 | 400 |
401 DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap") | 401 DECLARE_CONCRETE_INSTRUCTION(InstructionGap, "gap") |
402 }; | 402 }; |
403 | 403 |
404 | 404 |
405 class LGoto V8_FINAL : public LTemplateInstruction<0, 0, 0> { | 405 class LGoto V8_FINAL : public LTemplateInstruction<0, 0, 0> { |
406 public: | 406 public: |
407 explicit LGoto(int block_id) : block_id_(block_id) { } | 407 explicit LGoto(HBasicBlock* block) : block_(block) { } |
408 | 408 |
409 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE; | 409 virtual bool HasInterestingComment(LCodeGen* gen) const V8_OVERRIDE; |
410 DECLARE_CONCRETE_INSTRUCTION(Goto, "goto") | 410 DECLARE_CONCRETE_INSTRUCTION(Goto, "goto") |
411 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; | 411 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
412 virtual bool IsControl() const V8_OVERRIDE { return true; } | 412 virtual bool IsControl() const V8_OVERRIDE { return true; } |
413 | 413 |
414 int block_id() const { return block_id_; } | 414 int block_id() const { return block_->block_id(); } |
415 | 415 |
416 private: | 416 private: |
417 int block_id_; | 417 HBasicBlock* block_; |
418 }; | 418 }; |
419 | 419 |
420 | 420 |
421 class LLazyBailout V8_FINAL : public LTemplateInstruction<0, 0, 0> { | 421 class LLazyBailout V8_FINAL : public LTemplateInstruction<0, 0, 0> { |
422 public: | 422 public: |
423 LLazyBailout() : gap_instructions_size_(0) { } | 423 LLazyBailout() : gap_instructions_size_(0) { } |
424 | 424 |
425 DECLARE_CONCRETE_INSTRUCTION(LazyBailout, "lazy-bailout") | 425 DECLARE_CONCRETE_INSTRUCTION(LazyBailout, "lazy-bailout") |
426 | 426 |
427 void set_gap_instructions_size(int gap_instructions_size) { | 427 void set_gap_instructions_size(int gap_instructions_size) { |
(...skipping 2318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2746 next_block_(NULL), | 2746 next_block_(NULL), |
2747 argument_count_(0), | 2747 argument_count_(0), |
2748 allocator_(allocator), | 2748 allocator_(allocator), |
2749 position_(RelocInfo::kNoPosition), | 2749 position_(RelocInfo::kNoPosition), |
2750 instruction_pending_deoptimization_environment_(NULL), | 2750 instruction_pending_deoptimization_environment_(NULL), |
2751 pending_deoptimization_ast_id_(BailoutId::None()) { } | 2751 pending_deoptimization_ast_id_(BailoutId::None()) { } |
2752 | 2752 |
2753 // Build the sequence for the graph. | 2753 // Build the sequence for the graph. |
2754 LPlatformChunk* Build(); | 2754 LPlatformChunk* Build(); |
2755 | 2755 |
| 2756 LInstruction* CheckElideControlInstruction(HControlInstruction* instr); |
| 2757 |
2756 // Declare methods that deal with the individual node types. | 2758 // Declare methods that deal with the individual node types. |
2757 #define DECLARE_DO(type) LInstruction* Do##type(H##type* node); | 2759 #define DECLARE_DO(type) LInstruction* Do##type(H##type* node); |
2758 HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) | 2760 HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) |
2759 #undef DECLARE_DO | 2761 #undef DECLARE_DO |
2760 | 2762 |
2761 LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend); | 2763 LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend); |
2762 LInstruction* DoMultiplySub(HValue* minuend, HMul* mul); | 2764 LInstruction* DoMultiplySub(HValue* minuend, HMul* mul); |
2763 LInstruction* DoRSub(HSub* instr); | 2765 LInstruction* DoRSub(HSub* instr); |
2764 | 2766 |
2765 static bool HasMagicNumberForDivisor(int32_t divisor); | 2767 static bool HasMagicNumberForDivisor(int32_t divisor); |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2904 | 2906 |
2905 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2907 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
2906 }; | 2908 }; |
2907 | 2909 |
2908 #undef DECLARE_HYDROGEN_ACCESSOR | 2910 #undef DECLARE_HYDROGEN_ACCESSOR |
2909 #undef DECLARE_CONCRETE_INSTRUCTION | 2911 #undef DECLARE_CONCRETE_INSTRUCTION |
2910 | 2912 |
2911 } } // namespace v8::internal | 2913 } } // namespace v8::internal |
2912 | 2914 |
2913 #endif // V8_ARM_LITHIUM_ARM_H_ | 2915 #endif // V8_ARM_LITHIUM_ARM_H_ |
OLD | NEW |