Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Side by Side Diff: src/objects.h

Issue 10867033: Disable speculative LICM when it may lead to unnecessary deopts (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: feedback addressed Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/ic.cc ('k') | src/objects-debug.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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_
OLDNEW
« no previous file with comments | « src/ic.cc ('k') | src/objects-debug.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698