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 // Review notes: | 5 // Review notes: |
6 // | 6 // |
7 // - The use of macros in these inline functions may seem superfluous | 7 // - The use of macros in these inline functions may seem superfluous |
8 // but it is absolutely needed to make sure gcc generates optimal | 8 // but it is absolutely needed to make sure gcc generates optimal |
9 // code. gcc is not happy when attempting to inline too deep. | 9 // code. gcc is not happy when attempting to inline too deep. |
10 // | 10 // |
(...skipping 4839 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
4850 | 4850 |
4851 | 4851 |
4852 inline void Code::set_is_turbofanned(bool value) { | 4852 inline void Code::set_is_turbofanned(bool value) { |
4853 DCHECK(kind() == OPTIMIZED_FUNCTION || kind() == STUB); | 4853 DCHECK(kind() == OPTIMIZED_FUNCTION || kind() == STUB); |
4854 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); | 4854 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); |
4855 int updated = IsTurbofannedField::update(previous, value); | 4855 int updated = IsTurbofannedField::update(previous, value); |
4856 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); | 4856 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); |
4857 } | 4857 } |
4858 | 4858 |
4859 | 4859 |
4860 inline bool Code::can_have_weak_objects() { | |
4861 DCHECK(kind() == OPTIMIZED_FUNCTION); | |
Hannes Payer (out of office)
2015/01/22 14:38:59
Let's DCHECk !is_turbofanned().
ulan
2015/01/22 15:01:16
Added a check that turbofanned code cannot have we
| |
4862 return CanHaveWeakObjectsField::decode( | |
4863 READ_UINT32_FIELD(this, kKindSpecificFlags1Offset)); | |
4864 } | |
4865 | |
4866 | |
4867 inline void Code::set_can_have_weak_objects(bool value) { | |
4868 DCHECK(kind() == OPTIMIZED_FUNCTION); | |
4869 int previous = READ_UINT32_FIELD(this, kKindSpecificFlags1Offset); | |
4870 int updated = CanHaveWeakObjectsField::update(previous, value); | |
4871 WRITE_UINT32_FIELD(this, kKindSpecificFlags1Offset, updated); | |
4872 } | |
4873 | |
4874 | |
4860 bool Code::optimizable() { | 4875 bool Code::optimizable() { |
4861 DCHECK_EQ(FUNCTION, kind()); | 4876 DCHECK_EQ(FUNCTION, kind()); |
4862 return READ_BYTE_FIELD(this, kOptimizableOffset) == 1; | 4877 return READ_BYTE_FIELD(this, kOptimizableOffset) == 1; |
4863 } | 4878 } |
4864 | 4879 |
4865 | 4880 |
4866 void Code::set_optimizable(bool value) { | 4881 void Code::set_optimizable(bool value) { |
4867 DCHECK_EQ(FUNCTION, kind()); | 4882 DCHECK_EQ(FUNCTION, kind()); |
4868 WRITE_BYTE_FIELD(this, kOptimizableOffset, value ? 1 : 0); | 4883 WRITE_BYTE_FIELD(this, kOptimizableOffset, value ? 1 : 0); |
4869 } | 4884 } |
(...skipping 2632 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7502 #undef READ_SHORT_FIELD | 7517 #undef READ_SHORT_FIELD |
7503 #undef WRITE_SHORT_FIELD | 7518 #undef WRITE_SHORT_FIELD |
7504 #undef READ_BYTE_FIELD | 7519 #undef READ_BYTE_FIELD |
7505 #undef WRITE_BYTE_FIELD | 7520 #undef WRITE_BYTE_FIELD |
7506 #undef NOBARRIER_READ_BYTE_FIELD | 7521 #undef NOBARRIER_READ_BYTE_FIELD |
7507 #undef NOBARRIER_WRITE_BYTE_FIELD | 7522 #undef NOBARRIER_WRITE_BYTE_FIELD |
7508 | 7523 |
7509 } } // namespace v8::internal | 7524 } } // namespace v8::internal |
7510 | 7525 |
7511 #endif // V8_OBJECTS_INL_H_ | 7526 #endif // V8_OBJECTS_INL_H_ |
OLD | NEW |