OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 6838 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6849 DISALLOW_IMPLICIT_CONSTRUCTORS(PolymorphicCodeCacheHashTable); | 6849 DISALLOW_IMPLICIT_CONSTRUCTORS(PolymorphicCodeCacheHashTable); |
6850 }; | 6850 }; |
6851 | 6851 |
6852 | 6852 |
6853 class TypeFeedbackInfo: public Struct { | 6853 class TypeFeedbackInfo: public Struct { |
6854 public: | 6854 public: |
6855 inline int ic_total_count(); | 6855 inline int ic_total_count(); |
6856 inline void set_ic_total_count(int count); | 6856 inline void set_ic_total_count(int count); |
6857 | 6857 |
6858 inline int ic_with_type_info_count(); | 6858 inline int ic_with_type_info_count(); |
6859 inline void set_ic_with_type_info_count(int count); | 6859 inline void change_ic_with_type_info_count(int count); |
| 6860 |
| 6861 inline void initialize_storage(); |
| 6862 |
| 6863 inline void change_own_type_change_checksum(); |
| 6864 inline int own_type_change_checksum(); |
| 6865 |
| 6866 inline void set_inlined_type_change_checksum(int checksum); |
| 6867 inline bool matches_inlined_type_change_checksum(int checksum); |
6860 | 6868 |
6861 DECL_ACCESSORS(type_feedback_cells, TypeFeedbackCells) | 6869 DECL_ACCESSORS(type_feedback_cells, TypeFeedbackCells) |
6862 | 6870 |
6863 static inline TypeFeedbackInfo* cast(Object* obj); | 6871 static inline TypeFeedbackInfo* cast(Object* obj); |
6864 | 6872 |
6865 #ifdef OBJECT_PRINT | 6873 #ifdef OBJECT_PRINT |
6866 inline void TypeFeedbackInfoPrint() { | 6874 inline void TypeFeedbackInfoPrint() { |
6867 TypeFeedbackInfoPrint(stdout); | 6875 TypeFeedbackInfoPrint(stdout); |
6868 } | 6876 } |
6869 void TypeFeedbackInfoPrint(FILE* out); | 6877 void TypeFeedbackInfoPrint(FILE* out); |
6870 #endif | 6878 #endif |
6871 #ifdef DEBUG | 6879 #ifdef DEBUG |
6872 void TypeFeedbackInfoVerify(); | 6880 void TypeFeedbackInfoVerify(); |
6873 #endif | 6881 #endif |
6874 | 6882 |
6875 static const int kIcTotalCountOffset = HeapObject::kHeaderSize; | 6883 static const int kStorage1Offset = HeapObject::kHeaderSize; |
6876 static const int kIcWithTypeinfoCountOffset = | 6884 static const int kStorage2Offset = kStorage1Offset + kPointerSize; |
6877 kIcTotalCountOffset + kPointerSize; | 6885 static const int kTypeFeedbackCellsOffset = kStorage2Offset + kPointerSize; |
6878 static const int kTypeFeedbackCellsOffset = | |
6879 kIcWithTypeinfoCountOffset + kPointerSize; | |
6880 static const int kSize = kTypeFeedbackCellsOffset + kPointerSize; | 6886 static const int kSize = kTypeFeedbackCellsOffset + kPointerSize; |
6881 | 6887 |
6882 private: | 6888 private: |
| 6889 static const int kTypeChangeChecksumBits = 7; |
| 6890 |
| 6891 class ICTotalCountField: public BitField<int, 0, |
| 6892 kSmiValueSize - kTypeChangeChecksumBits> {}; // NOLINT |
| 6893 class OwnTypeChangeChecksum: public BitField<int, |
| 6894 kSmiValueSize - kTypeChangeChecksumBits, |
| 6895 kTypeChangeChecksumBits> {}; // NOLINT |
| 6896 class ICsWithTypeInfoCountField: public BitField<int, 0, |
| 6897 kSmiValueSize - kTypeChangeChecksumBits> {}; // NOLINT |
| 6898 class InlinedTypeChangeChecksum: public BitField<int, |
| 6899 kSmiValueSize - kTypeChangeChecksumBits, |
| 6900 kTypeChangeChecksumBits> {}; // NOLINT |
| 6901 |
6883 DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackInfo); | 6902 DISALLOW_IMPLICIT_CONSTRUCTORS(TypeFeedbackInfo); |
6884 }; | 6903 }; |
6885 | 6904 |
6886 | 6905 |
6887 // Representation of a slow alias as part of a non-strict arguments objects. | 6906 // Representation of a slow alias as part of a non-strict arguments objects. |
6888 // For fast aliases (if HasNonStrictArgumentsElements()): | 6907 // For fast aliases (if HasNonStrictArgumentsElements()): |
6889 // - the parameter map contains an index into the context | 6908 // - the parameter map contains an index into the context |
6890 // - all attributes of the element have default values | 6909 // - all attributes of the element have default values |
6891 // For slow aliases (if HasDictionaryArgumentsElements()): | 6910 // For slow aliases (if HasDictionaryArgumentsElements()): |
6892 // - the parameter map contains no fast alias mapping (i.e. the hole) | 6911 // - the parameter map contains no fast alias mapping (i.e. the hole) |
(...skipping 2022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8915 } else { | 8934 } else { |
8916 value &= ~(1 << bit_position); | 8935 value &= ~(1 << bit_position); |
8917 } | 8936 } |
8918 return value; | 8937 return value; |
8919 } | 8938 } |
8920 }; | 8939 }; |
8921 | 8940 |
8922 } } // namespace v8::internal | 8941 } } // namespace v8::internal |
8923 | 8942 |
8924 #endif // V8_OBJECTS_H_ | 8943 #endif // V8_OBJECTS_H_ |
OLD | NEW |