| 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 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 ClearFlag(kFlexibleRepresentation); | 707 ClearFlag(kFlexibleRepresentation); |
| 708 } | 708 } |
| 709 } | 709 } |
| 710 virtual void AssumeRepresentation(Representation r); | 710 virtual void AssumeRepresentation(Representation r); |
| 711 | 711 |
| 712 virtual Representation KnownOptimalRepresentation() { | 712 virtual Representation KnownOptimalRepresentation() { |
| 713 Representation r = representation(); | 713 Representation r = representation(); |
| 714 if (r.IsTagged()) { | 714 if (r.IsTagged()) { |
| 715 HType t = type(); | 715 HType t = type(); |
| 716 if (t.IsSmi()) return Representation::Smi(); | 716 if (t.IsSmi()) return Representation::Smi(); |
| 717 // TODO(mstarzinger): This is not correct for mutable HeapNumbers. | |
| 718 if (t.IsHeapNumber()) return Representation::Double(); | 717 if (t.IsHeapNumber()) return Representation::Double(); |
| 719 if (t.IsHeapObject()) return r; | 718 if (t.IsHeapObject()) return r; |
| 720 return Representation::None(); | 719 return Representation::None(); |
| 721 } | 720 } |
| 722 return r; | 721 return r; |
| 723 } | 722 } |
| 724 | 723 |
| 725 HType type() const { return type_; } | 724 HType type() const { return type_; } |
| 726 void set_type(HType new_type) { | 725 void set_type(HType new_type) { |
| 727 ASSERT(new_type.IsSubtypeOf(type_)); | 726 ASSERT(new_type.IsSubtypeOf(type_)); |
| (...skipping 4812 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5540 HValue* context() { return OperandAt(0); } | 5539 HValue* context() { return OperandAt(0); } |
| 5541 HValue* size() { return OperandAt(1); } | 5540 HValue* size() { return OperandAt(1); } |
| 5542 | 5541 |
| 5543 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { | 5542 virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE { |
| 5544 if (index == 0) { | 5543 if (index == 0) { |
| 5545 return Representation::Tagged(); | 5544 return Representation::Tagged(); |
| 5546 } else { | 5545 } else { |
| 5547 return Representation::Integer32(); | 5546 return Representation::Integer32(); |
| 5548 } | 5547 } |
| 5549 } | 5548 } |
| 5550 // TODO(mstarzinger): Workaround until we track mutable HeapNumber types. | |
| 5551 virtual Representation KnownOptimalRepresentation() V8_OVERRIDE { | |
| 5552 return representation(); | |
| 5553 } | |
| 5554 | 5549 |
| 5555 virtual Handle<Map> GetMonomorphicJSObjectMap() { | 5550 virtual Handle<Map> GetMonomorphicJSObjectMap() { |
| 5556 return known_initial_map_; | 5551 return known_initial_map_; |
| 5557 } | 5552 } |
| 5558 | 5553 |
| 5559 void set_known_initial_map(Handle<Map> known_initial_map) { | 5554 void set_known_initial_map(Handle<Map> known_initial_map) { |
| 5560 known_initial_map_ = known_initial_map; | 5555 known_initial_map_ = known_initial_map; |
| 5561 } | 5556 } |
| 5562 | 5557 |
| 5563 bool IsNewSpaceAllocation() const { | 5558 bool IsNewSpaceAllocation() const { |
| (...skipping 2239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7803 virtual bool IsDeletable() const V8_OVERRIDE { return true; } | 7798 virtual bool IsDeletable() const V8_OVERRIDE { return true; } |
| 7804 }; | 7799 }; |
| 7805 | 7800 |
| 7806 | 7801 |
| 7807 #undef DECLARE_INSTRUCTION | 7802 #undef DECLARE_INSTRUCTION |
| 7808 #undef DECLARE_CONCRETE_INSTRUCTION | 7803 #undef DECLARE_CONCRETE_INSTRUCTION |
| 7809 | 7804 |
| 7810 } } // namespace v8::internal | 7805 } } // namespace v8::internal |
| 7811 | 7806 |
| 7812 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 7807 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |