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 <cstring> | 8 #include <cstring> |
9 #include <iosfwd> | 9 #include <iosfwd> |
10 | 10 |
(...skipping 3605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3616 | 3616 |
3617 bool HasExternalReferenceValue() const { | 3617 bool HasExternalReferenceValue() const { |
3618 return HasExternalReferenceValueField::decode(bit_field_); | 3618 return HasExternalReferenceValueField::decode(bit_field_); |
3619 } | 3619 } |
3620 ExternalReference ExternalReferenceValue() const { | 3620 ExternalReference ExternalReferenceValue() const { |
3621 return external_reference_value_; | 3621 return external_reference_value_; |
3622 } | 3622 } |
3623 | 3623 |
3624 bool HasBooleanValue() const { return type_.IsBoolean(); } | 3624 bool HasBooleanValue() const { return type_.IsBoolean(); } |
3625 bool BooleanValue() const { return BooleanValueField::decode(bit_field_); } | 3625 bool BooleanValue() const { return BooleanValueField::decode(bit_field_); } |
| 3626 bool IsCallable() const { return IsCallableField::decode(bit_field_); } |
3626 bool IsUndetectable() const { | 3627 bool IsUndetectable() const { |
3627 return IsUndetectableField::decode(bit_field_); | 3628 return IsUndetectableField::decode(bit_field_); |
3628 } | 3629 } |
3629 InstanceType GetInstanceType() const { | 3630 InstanceType GetInstanceType() const { |
3630 return InstanceTypeField::decode(bit_field_); | 3631 return InstanceTypeField::decode(bit_field_); |
3631 } | 3632 } |
3632 | 3633 |
3633 bool HasMapValue() const { return GetInstanceType() == MAP_TYPE; } | 3634 bool HasMapValue() const { return GetInstanceType() == MAP_TYPE; } |
3634 Unique<Map> MapValue() const { | 3635 Unique<Map> MapValue() const { |
3635 DCHECK(HasMapValue()); | 3636 DCHECK(HasMapValue()); |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3748 // representations of the constant. More specific flags imply more general | 3749 // representations of the constant. More specific flags imply more general |
3749 // flags, but not the converse (i.e. smi => int32 => double). | 3750 // flags, but not the converse (i.e. smi => int32 => double). |
3750 class HasSmiValueField : public BitField<bool, 1, 1> {}; | 3751 class HasSmiValueField : public BitField<bool, 1, 1> {}; |
3751 class HasInt32ValueField : public BitField<bool, 2, 1> {}; | 3752 class HasInt32ValueField : public BitField<bool, 2, 1> {}; |
3752 class HasDoubleValueField : public BitField<bool, 3, 1> {}; | 3753 class HasDoubleValueField : public BitField<bool, 3, 1> {}; |
3753 | 3754 |
3754 class HasExternalReferenceValueField : public BitField<bool, 4, 1> {}; | 3755 class HasExternalReferenceValueField : public BitField<bool, 4, 1> {}; |
3755 class IsNotInNewSpaceField : public BitField<bool, 5, 1> {}; | 3756 class IsNotInNewSpaceField : public BitField<bool, 5, 1> {}; |
3756 class BooleanValueField : public BitField<bool, 6, 1> {}; | 3757 class BooleanValueField : public BitField<bool, 6, 1> {}; |
3757 class IsUndetectableField : public BitField<bool, 7, 1> {}; | 3758 class IsUndetectableField : public BitField<bool, 7, 1> {}; |
| 3759 class IsCallableField : public BitField<bool, 8, 1> {}; |
3758 | 3760 |
3759 static const InstanceType kUnknownInstanceType = FILLER_TYPE; | 3761 static const InstanceType kUnknownInstanceType = FILLER_TYPE; |
3760 class InstanceTypeField : public BitField<InstanceType, 8, 8> {}; | 3762 class InstanceTypeField : public BitField<InstanceType, 16, 8> {}; |
3761 | 3763 |
3762 // If this is a numerical constant, object_ either points to the | 3764 // If this is a numerical constant, object_ either points to the |
3763 // HeapObject the constant originated from or is null. If the | 3765 // HeapObject the constant originated from or is null. If the |
3764 // constant is non-numeric, object_ always points to a valid | 3766 // constant is non-numeric, object_ always points to a valid |
3765 // constant HeapObject. | 3767 // constant HeapObject. |
3766 Unique<Object> object_; | 3768 Unique<Object> object_; |
3767 | 3769 |
3768 // If object_ is a heap object, this points to the stable map of the object. | 3770 // If object_ is a heap object, this points to the stable map of the object. |
3769 Unique<Map> object_map_; | 3771 Unique<Map> object_map_; |
3770 | 3772 |
(...skipping 4260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8031 }; | 8033 }; |
8032 | 8034 |
8033 | 8035 |
8034 | 8036 |
8035 #undef DECLARE_INSTRUCTION | 8037 #undef DECLARE_INSTRUCTION |
8036 #undef DECLARE_CONCRETE_INSTRUCTION | 8038 #undef DECLARE_CONCRETE_INSTRUCTION |
8037 | 8039 |
8038 } } // namespace v8::internal | 8040 } } // namespace v8::internal |
8039 | 8041 |
8040 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 8042 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
OLD | NEW |