| 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_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_HYDROGEN_INSTRUCTIONS_H_ |
| 6 #define V8_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_HYDROGEN_INSTRUCTIONS_H_ |
| 7 | 7 |
| 8 #include "v8.h" | 8 #include "v8.h" |
| 9 | 9 |
| 10 #include "allocation.h" | 10 #include "allocation.h" |
| (...skipping 7758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7769 set_representation(Representation::Tagged()); | 7769 set_representation(Representation::Tagged()); |
| 7770 } | 7770 } |
| 7771 | 7771 |
| 7772 int idx_; | 7772 int idx_; |
| 7773 HForInCacheArray* index_cache_; | 7773 HForInCacheArray* index_cache_; |
| 7774 }; | 7774 }; |
| 7775 | 7775 |
| 7776 | 7776 |
| 7777 class HLoadFieldByIndex V8_FINAL : public HTemplateInstruction<2> { | 7777 class HLoadFieldByIndex V8_FINAL : public HTemplateInstruction<2> { |
| 7778 public: | 7778 public: |
| 7779 DECLARE_INSTRUCTION_FACTORY_P2(HLoadFieldByIndex, HValue*, HValue*); |
| 7780 |
| 7779 HLoadFieldByIndex(HValue* object, | 7781 HLoadFieldByIndex(HValue* object, |
| 7780 HValue* index) { | 7782 HValue* index) { |
| 7781 SetOperandAt(0, object); | 7783 SetOperandAt(0, object); |
| 7782 SetOperandAt(1, index); | 7784 SetOperandAt(1, index); |
| 7783 SetChangesFlag(kNewSpacePromotion); | 7785 SetChangesFlag(kNewSpacePromotion); |
| 7784 set_representation(Representation::Tagged()); | 7786 set_representation(Representation::Tagged()); |
| 7785 } | 7787 } |
| 7786 | 7788 |
| 7787 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { | 7789 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
| 7788 return Representation::Tagged(); | 7790 if (index == 1) { |
| 7791 return Representation::Smi(); |
| 7792 } else { |
| 7793 return Representation::Tagged(); |
| 7794 } |
| 7789 } | 7795 } |
| 7790 | 7796 |
| 7791 HValue* object() { return OperandAt(0); } | 7797 HValue* object() { return OperandAt(0); } |
| 7792 HValue* index() { return OperandAt(1); } | 7798 HValue* index() { return OperandAt(1); } |
| 7793 | 7799 |
| 7794 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; | 7800 virtual void PrintDataTo(StringStream* stream) V8_OVERRIDE; |
| 7795 | 7801 |
| 7796 virtual HType CalculateInferredType() V8_OVERRIDE { | 7802 virtual HType CalculateInferredType() V8_OVERRIDE { |
| 7797 return HType::Tagged(); | 7803 return HType::Tagged(); |
| 7798 } | 7804 } |
| 7799 | 7805 |
| 7800 DECLARE_CONCRETE_INSTRUCTION(LoadFieldByIndex); | 7806 DECLARE_CONCRETE_INSTRUCTION(LoadFieldByIndex); |
| 7801 | 7807 |
| 7802 private: | 7808 private: |
| 7803 virtual bool IsDeletable() const V8_OVERRIDE { return true; } | 7809 virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
| 7804 }; | 7810 }; |
| 7805 | 7811 |
| 7806 | 7812 |
| 7807 #undef DECLARE_INSTRUCTION | 7813 #undef DECLARE_INSTRUCTION |
| 7808 #undef DECLARE_CONCRETE_INSTRUCTION | 7814 #undef DECLARE_CONCRETE_INSTRUCTION |
| 7809 | 7815 |
| 7810 } } // namespace v8::internal | 7816 } } // namespace v8::internal |
| 7811 | 7817 |
| 7812 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7818 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |