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_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 5 #ifndef V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 6 #define V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
7 | 7 |
8 #include <cstring> | 8 #include <cstring> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 | 10 |
(...skipping 5674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5685 if (object == dominator && object->IsAllocate()) { | 5685 if (object == dominator && object->IsAllocate()) { |
5686 // Stores to new space allocations require no write barriers. | 5686 // Stores to new space allocations require no write barriers. |
5687 if (HAllocate::cast(object)->IsNewSpaceAllocation()) { | 5687 if (HAllocate::cast(object)->IsNewSpaceAllocation()) { |
5688 return false; | 5688 return false; |
5689 } | 5689 } |
5690 // Stores to old space allocations require no write barriers if the value is | 5690 // Stores to old space allocations require no write barriers if the value is |
5691 // a constant provably not in new space. | 5691 // a constant provably not in new space. |
5692 if (value->IsConstant() && HConstant::cast(value)->NotInNewSpace()) { | 5692 if (value->IsConstant() && HConstant::cast(value)->NotInNewSpace()) { |
5693 return false; | 5693 return false; |
5694 } | 5694 } |
| 5695 // Stores to old space allocations require no write barriers if the value is |
| 5696 // an old space allocation. |
| 5697 while (value->IsInnerAllocatedObject()) { |
| 5698 value = HInnerAllocatedObject::cast(value)->base_object(); |
| 5699 } |
| 5700 if (value->IsAllocate() && |
| 5701 !HAllocate::cast(value)->IsNewSpaceAllocation()) { |
| 5702 return false; |
| 5703 } |
5695 } | 5704 } |
5696 return true; | 5705 return true; |
5697 } | 5706 } |
5698 | 5707 |
5699 | 5708 |
5700 inline PointersToHereCheck PointersToHereCheckForObject(HValue* object, | 5709 inline PointersToHereCheck PointersToHereCheckForObject(HValue* object, |
5701 HValue* dominator) { | 5710 HValue* dominator) { |
5702 while (object->IsInnerAllocatedObject()) { | 5711 while (object->IsInnerAllocatedObject()) { |
5703 object = HInnerAllocatedObject::cast(object)->base_object(); | 5712 object = HInnerAllocatedObject::cast(object)->base_object(); |
5704 } | 5713 } |
(...skipping 2113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7818 | 7827 |
7819 | 7828 |
7820 | 7829 |
7821 #undef DECLARE_INSTRUCTION | 7830 #undef DECLARE_INSTRUCTION |
7822 #undef DECLARE_CONCRETE_INSTRUCTION | 7831 #undef DECLARE_CONCRETE_INSTRUCTION |
7823 | 7832 |
7824 } // namespace internal | 7833 } // namespace internal |
7825 } // namespace v8 | 7834 } // namespace v8 |
7826 | 7835 |
7827 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ | 7836 #endif // V8_CRANKSHAFT_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |