| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 3635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3646 inline int relocation_size(); | 3646 inline int relocation_size(); |
| 3647 | 3647 |
| 3648 // [flags]: Various code flags. | 3648 // [flags]: Various code flags. |
| 3649 inline Flags flags(); | 3649 inline Flags flags(); |
| 3650 inline void set_flags(Flags flags); | 3650 inline void set_flags(Flags flags); |
| 3651 | 3651 |
| 3652 // [flags]: Access to specific code flags. | 3652 // [flags]: Access to specific code flags. |
| 3653 inline Kind kind(); | 3653 inline Kind kind(); |
| 3654 inline InlineCacheState ic_state(); // Only valid for IC stubs. | 3654 inline InlineCacheState ic_state(); // Only valid for IC stubs. |
| 3655 inline ExtraICState extra_ic_state(); // Only valid for IC stubs. | 3655 inline ExtraICState extra_ic_state(); // Only valid for IC stubs. |
| 3656 inline InLoopFlag ic_in_loop(); // Only valid for IC stubs. | |
| 3657 inline PropertyType type(); // Only valid for monomorphic IC stubs. | 3656 inline PropertyType type(); // Only valid for monomorphic IC stubs. |
| 3658 inline int arguments_count(); // Only valid for call IC stubs. | 3657 inline int arguments_count(); // Only valid for call IC stubs. |
| 3659 | 3658 |
| 3660 // Testers for IC stub kinds. | 3659 // Testers for IC stub kinds. |
| 3661 inline bool is_inline_cache_stub(); | 3660 inline bool is_inline_cache_stub(); |
| 3662 inline bool is_load_stub() { return kind() == LOAD_IC; } | 3661 inline bool is_load_stub() { return kind() == LOAD_IC; } |
| 3663 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; } | 3662 inline bool is_keyed_load_stub() { return kind() == KEYED_LOAD_IC; } |
| 3664 inline bool is_store_stub() { return kind() == STORE_IC; } | 3663 inline bool is_store_stub() { return kind() == STORE_IC; } |
| 3665 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; } | 3664 inline bool is_keyed_store_stub() { return kind() == KEYED_STORE_IC; } |
| 3666 inline bool is_call_stub() { return kind() == CALL_IC; } | 3665 inline bool is_call_stub() { return kind() == CALL_IC; } |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3734 // Mark this code object as not having a stack check table. Assumes kind | 3733 // Mark this code object as not having a stack check table. Assumes kind |
| 3735 // is FUNCTION. | 3734 // is FUNCTION. |
| 3736 void SetNoStackCheckTable(); | 3735 void SetNoStackCheckTable(); |
| 3737 | 3736 |
| 3738 // Find the first map in an IC stub. | 3737 // Find the first map in an IC stub. |
| 3739 Map* FindFirstMap(); | 3738 Map* FindFirstMap(); |
| 3740 | 3739 |
| 3741 // Flags operations. | 3740 // Flags operations. |
| 3742 static inline Flags ComputeFlags( | 3741 static inline Flags ComputeFlags( |
| 3743 Kind kind, | 3742 Kind kind, |
| 3744 InLoopFlag in_loop = NOT_IN_LOOP, | |
| 3745 InlineCacheState ic_state = UNINITIALIZED, | 3743 InlineCacheState ic_state = UNINITIALIZED, |
| 3746 ExtraICState extra_ic_state = kNoExtraICState, | 3744 ExtraICState extra_ic_state = kNoExtraICState, |
| 3747 PropertyType type = NORMAL, | 3745 PropertyType type = NORMAL, |
| 3748 int argc = -1, | 3746 int argc = -1, |
| 3749 InlineCacheHolderFlag holder = OWN_MAP); | 3747 InlineCacheHolderFlag holder = OWN_MAP); |
| 3750 | 3748 |
| 3751 static inline Flags ComputeMonomorphicFlags( | 3749 static inline Flags ComputeMonomorphicFlags( |
| 3752 Kind kind, | 3750 Kind kind, |
| 3753 PropertyType type, | 3751 PropertyType type, |
| 3754 ExtraICState extra_ic_state = kNoExtraICState, | 3752 ExtraICState extra_ic_state = kNoExtraICState, |
| 3755 InlineCacheHolderFlag holder = OWN_MAP, | 3753 InlineCacheHolderFlag holder = OWN_MAP, |
| 3756 InLoopFlag in_loop = NOT_IN_LOOP, | |
| 3757 int argc = -1); | 3754 int argc = -1); |
| 3758 | 3755 |
| 3759 static inline InlineCacheState ExtractICStateFromFlags(Flags flags); | 3756 static inline InlineCacheState ExtractICStateFromFlags(Flags flags); |
| 3760 static inline InLoopFlag ExtractICInLoopFromFlags(Flags flags); | |
| 3761 static inline PropertyType ExtractTypeFromFlags(Flags flags); | 3757 static inline PropertyType ExtractTypeFromFlags(Flags flags); |
| 3762 static inline Kind ExtractKindFromFlags(Flags flags); | 3758 static inline Kind ExtractKindFromFlags(Flags flags); |
| 3763 static inline InlineCacheHolderFlag ExtractCacheHolderFromFlags(Flags flags); | 3759 static inline InlineCacheHolderFlag ExtractCacheHolderFromFlags(Flags flags); |
| 3764 static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags); | 3760 static inline ExtraICState ExtractExtraICStateFromFlags(Flags flags); |
| 3765 static inline int ExtractArgumentsCountFromFlags(Flags flags); | 3761 static inline int ExtractArgumentsCountFromFlags(Flags flags); |
| 3766 | 3762 |
| 3767 static inline Flags RemoveTypeFromFlags(Flags flags); | 3763 static inline Flags RemoveTypeFromFlags(Flags flags); |
| 3768 | 3764 |
| 3769 // Convert a target address into a code object. | 3765 // Convert a target address into a code object. |
| 3770 static inline Code* GetCodeFromTargetAddress(Address address); | 3766 static inline Code* GetCodeFromTargetAddress(Address address); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3878 | 3874 |
| 3879 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; | 3875 static const int kBinaryOpReturnTypeOffset = kBinaryOpTypeOffset + 1; |
| 3880 static const int kAllowOSRAtLoopNestingLevelOffset = | 3876 static const int kAllowOSRAtLoopNestingLevelOffset = |
| 3881 kHasDeoptimizationSupportOffset + 1; | 3877 kHasDeoptimizationSupportOffset + 1; |
| 3882 | 3878 |
| 3883 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize; | 3879 static const int kSafepointTableOffsetOffset = kStackSlotsOffset + kIntSize; |
| 3884 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize; | 3880 static const int kStackCheckTableOffsetOffset = kStackSlotsOffset + kIntSize; |
| 3885 | 3881 |
| 3886 // Flags layout. BitField<type, shift, size>. | 3882 // Flags layout. BitField<type, shift, size>. |
| 3887 class ICStateField: public BitField<InlineCacheState, 0, 3> {}; | 3883 class ICStateField: public BitField<InlineCacheState, 0, 3> {}; |
| 3888 class ICInLoopField: public BitField<InLoopFlag, 3, 1> {}; | 3884 class TypeField: public BitField<PropertyType, 3, 4> {}; |
| 3889 class TypeField: public BitField<PropertyType, 4, 4> {}; | 3885 class KindField: public BitField<Kind, 7, 4> {}; |
| 3890 class KindField: public BitField<Kind, 8, 4> {}; | 3886 class CacheHolderField: public BitField<InlineCacheHolderFlag, 11, 1> {}; |
| 3891 class CacheHolderField: public BitField<InlineCacheHolderFlag, 12, 1> {}; | 3887 class ExtraICStateField: public BitField<ExtraICState, 12, 2> {}; |
| 3892 class ExtraICStateField: public BitField<ExtraICState, 13, 2> {}; | |
| 3893 | 3888 |
| 3894 // Signed field cannot be encoded using the BitField class. | 3889 // Signed field cannot be encoded using the BitField class. |
| 3895 static const int kFlagsArgumentsCountShift = 15; | 3890 static const int kArgumentsCountShift = 14; |
| 3896 static const int kFlagsArgumentsCountMask = 0xffff8000; | 3891 static const int kArgumentsCountMask = ~((1 << kArgumentsCountShift) - 1); |
| 3897 | 3892 |
| 3898 static const int kFlagsNotUsedInLookup = | 3893 static const int kFlagsNotUsedInLookup = |
| 3899 ICInLoopField::kMask | TypeField::kMask | CacheHolderField::kMask; | 3894 TypeField::kMask | CacheHolderField::kMask; |
| 3900 | 3895 |
| 3901 private: | 3896 private: |
| 3902 DISALLOW_IMPLICIT_CONSTRUCTORS(Code); | 3897 DISALLOW_IMPLICIT_CONSTRUCTORS(Code); |
| 3903 }; | 3898 }; |
| 3904 | 3899 |
| 3905 | 3900 |
| 3906 // All heap objects have a Map that describes their structure. | 3901 // All heap objects have a Map that describes their structure. |
| 3907 // A Map contains information about: | 3902 // A Map contains information about: |
| 3908 // - Size information about the object | 3903 // - Size information about the object |
| 3909 // - How to iterate over an object (for garbage collection) | 3904 // - How to iterate over an object (for garbage collection) |
| (...skipping 3541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7451 } else { | 7446 } else { |
| 7452 value &= ~(1 << bit_position); | 7447 value &= ~(1 << bit_position); |
| 7453 } | 7448 } |
| 7454 return value; | 7449 return value; |
| 7455 } | 7450 } |
| 7456 }; | 7451 }; |
| 7457 | 7452 |
| 7458 } } // namespace v8::internal | 7453 } } // namespace v8::internal |
| 7459 | 7454 |
| 7460 #endif // V8_OBJECTS_H_ | 7455 #endif // V8_OBJECTS_H_ |
| OLD | NEW |