| 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 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 V(LoadFunctionPrototype) \ | 118 V(LoadFunctionPrototype) \ |
| 119 V(LoadGlobalCell) \ | 119 V(LoadGlobalCell) \ |
| 120 V(LoadGlobalGeneric) \ | 120 V(LoadGlobalGeneric) \ |
| 121 V(LoadKeyed) \ | 121 V(LoadKeyed) \ |
| 122 V(LoadKeyedGeneric) \ | 122 V(LoadKeyedGeneric) \ |
| 123 V(LoadNamedField) \ | 123 V(LoadNamedField) \ |
| 124 V(LoadNamedGeneric) \ | 124 V(LoadNamedGeneric) \ |
| 125 V(MapEnumLength) \ | 125 V(MapEnumLength) \ |
| 126 V(MathAbs) \ | 126 V(MathAbs) \ |
| 127 V(MathExp) \ | 127 V(MathExp) \ |
| 128 V(MathClz32) \ | |
| 129 V(MathFloor) \ | 128 V(MathFloor) \ |
| 130 V(MathFloorOfDiv) \ | 129 V(MathFloorOfDiv) \ |
| 131 V(MathLog) \ | 130 V(MathLog) \ |
| 132 V(MathMinMax) \ | 131 V(MathMinMax) \ |
| 133 V(MathPowHalf) \ | 132 V(MathPowHalf) \ |
| 134 V(MathRound) \ | 133 V(MathRound) \ |
| 135 V(MathSqrt) \ | 134 V(MathSqrt) \ |
| 136 V(ModI) \ | 135 V(ModI) \ |
| 137 V(MulI) \ | 136 V(MulI) \ |
| 138 V(MultiplyAddD) \ | 137 V(MultiplyAddD) \ |
| (...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 796 explicit LMathLog(LOperand* value) { | 795 explicit LMathLog(LOperand* value) { |
| 797 inputs_[0] = value; | 796 inputs_[0] = value; |
| 798 } | 797 } |
| 799 | 798 |
| 800 LOperand* value() { return inputs_[0]; } | 799 LOperand* value() { return inputs_[0]; } |
| 801 | 800 |
| 802 DECLARE_CONCRETE_INSTRUCTION(MathLog, "math-log") | 801 DECLARE_CONCRETE_INSTRUCTION(MathLog, "math-log") |
| 803 }; | 802 }; |
| 804 | 803 |
| 805 | 804 |
| 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 | |
| 818 class LMathExp V8_FINAL : public LTemplateInstruction<1, 1, 3> { | 805 class LMathExp V8_FINAL : public LTemplateInstruction<1, 1, 3> { |
| 819 public: | 806 public: |
| 820 LMathExp(LOperand* value, | 807 LMathExp(LOperand* value, |
| 821 LOperand* double_temp, | 808 LOperand* double_temp, |
| 822 LOperand* temp1, | 809 LOperand* temp1, |
| 823 LOperand* temp2) { | 810 LOperand* temp2) { |
| 824 inputs_[0] = value; | 811 inputs_[0] = value; |
| 825 temps_[0] = temp1; | 812 temps_[0] = temp1; |
| 826 temps_[1] = temp2; | 813 temps_[1] = temp2; |
| 827 temps_[2] = double_temp; | 814 temps_[2] = double_temp; |
| (...skipping 1732 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2560 LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) | 2547 LChunkBuilder(CompilationInfo* info, HGraph* graph, LAllocator* allocator) |
| 2561 : LChunkBuilderBase(graph->zone()), | 2548 : LChunkBuilderBase(graph->zone()), |
| 2562 chunk_(NULL), | 2549 chunk_(NULL), |
| 2563 info_(info), | 2550 info_(info), |
| 2564 graph_(graph), | 2551 graph_(graph), |
| 2565 status_(UNUSED), | 2552 status_(UNUSED), |
| 2566 current_instruction_(NULL), | 2553 current_instruction_(NULL), |
| 2567 current_block_(NULL), | 2554 current_block_(NULL), |
| 2568 next_block_(NULL), | 2555 next_block_(NULL), |
| 2569 allocator_(allocator), | 2556 allocator_(allocator), |
| 2557 position_(RelocInfo::kNoPosition), |
| 2570 instruction_pending_deoptimization_environment_(NULL), | 2558 instruction_pending_deoptimization_environment_(NULL), |
| 2571 pending_deoptimization_ast_id_(BailoutId::None()) { } | 2559 pending_deoptimization_ast_id_(BailoutId::None()) { } |
| 2572 | 2560 |
| 2573 // Build the sequence for the graph. | 2561 // Build the sequence for the graph. |
| 2574 LPlatformChunk* Build(); | 2562 LPlatformChunk* Build(); |
| 2575 | 2563 |
| 2576 LInstruction* CheckElideControlInstruction(HControlInstruction* instr); | 2564 LInstruction* CheckElideControlInstruction(HControlInstruction* instr); |
| 2577 | 2565 |
| 2578 // Declare methods that deal with the individual node types. | 2566 // Declare methods that deal with the individual node types. |
| 2579 #define DECLARE_DO(type) LInstruction* Do##type(H##type* node); | 2567 #define DECLARE_DO(type) LInstruction* Do##type(H##type* node); |
| 2580 HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) | 2568 HYDROGEN_CONCRETE_INSTRUCTION_LIST(DECLARE_DO) |
| 2581 #undef DECLARE_DO | 2569 #undef DECLARE_DO |
| 2582 | 2570 |
| 2583 LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend); | 2571 LInstruction* DoMultiplyAdd(HMul* mul, HValue* addend); |
| 2584 | 2572 |
| 2585 static bool HasMagicNumberForDivisor(int32_t divisor); | 2573 static bool HasMagicNumberForDivisor(int32_t divisor); |
| 2586 | 2574 |
| 2587 LInstruction* DoMathFloor(HUnaryMathOperation* instr); | 2575 LInstruction* DoMathFloor(HUnaryMathOperation* instr); |
| 2588 LInstruction* DoMathRound(HUnaryMathOperation* instr); | 2576 LInstruction* DoMathRound(HUnaryMathOperation* instr); |
| 2589 LInstruction* DoMathAbs(HUnaryMathOperation* instr); | 2577 LInstruction* DoMathAbs(HUnaryMathOperation* instr); |
| 2590 LInstruction* DoMathLog(HUnaryMathOperation* instr); | 2578 LInstruction* DoMathLog(HUnaryMathOperation* instr); |
| 2591 LInstruction* DoMathExp(HUnaryMathOperation* instr); | 2579 LInstruction* DoMathExp(HUnaryMathOperation* instr); |
| 2592 LInstruction* DoMathSqrt(HUnaryMathOperation* instr); | 2580 LInstruction* DoMathSqrt(HUnaryMathOperation* instr); |
| 2593 LInstruction* DoMathPowHalf(HUnaryMathOperation* instr); | 2581 LInstruction* DoMathPowHalf(HUnaryMathOperation* instr); |
| 2594 LInstruction* DoMathClz32(HUnaryMathOperation* instr); | |
| 2595 | 2582 |
| 2596 private: | 2583 private: |
| 2597 enum Status { | 2584 enum Status { |
| 2598 UNUSED, | 2585 UNUSED, |
| 2599 BUILDING, | 2586 BUILDING, |
| 2600 DONE, | 2587 DONE, |
| 2601 ABORTED | 2588 ABORTED |
| 2602 }; | 2589 }; |
| 2603 | 2590 |
| 2604 LPlatformChunk* chunk() const { return chunk_; } | 2591 LPlatformChunk* chunk() const { return chunk_; } |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2696 HBinaryOperation* instr); | 2683 HBinaryOperation* instr); |
| 2697 | 2684 |
| 2698 LPlatformChunk* chunk_; | 2685 LPlatformChunk* chunk_; |
| 2699 CompilationInfo* info_; | 2686 CompilationInfo* info_; |
| 2700 HGraph* const graph_; | 2687 HGraph* const graph_; |
| 2701 Status status_; | 2688 Status status_; |
| 2702 HInstruction* current_instruction_; | 2689 HInstruction* current_instruction_; |
| 2703 HBasicBlock* current_block_; | 2690 HBasicBlock* current_block_; |
| 2704 HBasicBlock* next_block_; | 2691 HBasicBlock* next_block_; |
| 2705 LAllocator* allocator_; | 2692 LAllocator* allocator_; |
| 2693 int position_; |
| 2706 LInstruction* instruction_pending_deoptimization_environment_; | 2694 LInstruction* instruction_pending_deoptimization_environment_; |
| 2707 BailoutId pending_deoptimization_ast_id_; | 2695 BailoutId pending_deoptimization_ast_id_; |
| 2708 | 2696 |
| 2709 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); | 2697 DISALLOW_COPY_AND_ASSIGN(LChunkBuilder); |
| 2710 }; | 2698 }; |
| 2711 | 2699 |
| 2712 #undef DECLARE_HYDROGEN_ACCESSOR | 2700 #undef DECLARE_HYDROGEN_ACCESSOR |
| 2713 #undef DECLARE_CONCRETE_INSTRUCTION | 2701 #undef DECLARE_CONCRETE_INSTRUCTION |
| 2714 | 2702 |
| 2715 } } // namespace v8::internal | 2703 } } // namespace v8::internal |
| 2716 | 2704 |
| 2717 #endif // V8_MIPS_LITHIUM_MIPS_H_ | 2705 #endif // V8_MIPS_LITHIUM_MIPS_H_ |
| OLD | NEW |