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

Side by Side Diff: src/objects.h

Issue 9148006: [objects] seed NumberDictionary (only ia32 now) Base URL: gh:v8/v8@master
Patch Set: fixed lint issues Created 8 years, 11 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
OLDNEW
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 2736 matching lines...) Expand 10 before | Expand all | Expand 10 after
2747 MUST_USE_RESULT virtual MaybeObject* AsObject() = 0; 2747 MUST_USE_RESULT virtual MaybeObject* AsObject() = 0;
2748 // Required. 2748 // Required.
2749 virtual ~HashTableKey() {} 2749 virtual ~HashTableKey() {}
2750 }; 2750 };
2751 2751
2752 class SymbolTableShape { 2752 class SymbolTableShape {
2753 public: 2753 public:
2754 static inline bool IsMatch(HashTableKey* key, Object* value) { 2754 static inline bool IsMatch(HashTableKey* key, Object* value) {
2755 return key->IsMatch(value); 2755 return key->IsMatch(value);
2756 } 2756 }
2757 static inline uint32_t Hash(HashTableKey* key) { 2757 static inline uint32_t Hash(HashTableKey* key, uint32_t) {
2758 return key->Hash(); 2758 return key->Hash();
2759 } 2759 }
2760 static inline uint32_t HashForObject(HashTableKey* key, Object* object) { 2760 static inline uint32_t HashForObject(HashTableKey* key, uint32_t,
Erik Corry 2012/01/09 23:52:48 Formatting.
2761 Object* object) {
2761 return key->HashForObject(object); 2762 return key->HashForObject(object);
2762 } 2763 }
2763 MUST_USE_RESULT static inline MaybeObject* AsObject(HashTableKey* key) { 2764 MUST_USE_RESULT static inline MaybeObject* AsObject(HashTableKey* key) {
2764 return key->AsObject(); 2765 return key->AsObject();
2765 } 2766 }
2766 2767
2767 static const int kPrefixSize = 0; 2768 static const int kPrefixSize = 0;
2768 static const int kEntrySize = 1; 2769 static const int kEntrySize = 1;
2769 }; 2770 };
2770 2771
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2806 2807
2807 DISALLOW_IMPLICIT_CONSTRUCTORS(SymbolTable); 2808 DISALLOW_IMPLICIT_CONSTRUCTORS(SymbolTable);
2808 }; 2809 };
2809 2810
2810 2811
2811 class MapCacheShape { 2812 class MapCacheShape {
2812 public: 2813 public:
2813 static inline bool IsMatch(HashTableKey* key, Object* value) { 2814 static inline bool IsMatch(HashTableKey* key, Object* value) {
2814 return key->IsMatch(value); 2815 return key->IsMatch(value);
2815 } 2816 }
2816 static inline uint32_t Hash(HashTableKey* key) { 2817 static inline uint32_t Hash(HashTableKey* key, uint32_t) {
2817 return key->Hash(); 2818 return key->Hash();
2818 } 2819 }
2819 2820
2820 static inline uint32_t HashForObject(HashTableKey* key, Object* object) { 2821 static inline uint32_t HashForObject(HashTableKey* key, uint32_t,
Erik Corry 2012/01/09 23:52:48 Formatting.
2822 Object* object) {
2821 return key->HashForObject(object); 2823 return key->HashForObject(object);
2822 } 2824 }
2823 2825
2824 MUST_USE_RESULT static inline MaybeObject* AsObject(HashTableKey* key) { 2826 MUST_USE_RESULT static inline MaybeObject* AsObject(HashTableKey* key) {
2825 return key->AsObject(); 2827 return key->AsObject();
2826 } 2828 }
2827 2829
2828 static const int kPrefixSize = 0; 2830 static const int kPrefixSize = 0;
2829 static const int kEntrySize = 2; 2831 static const int kEntrySize = 2;
2830 }; 2832 };
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
2960 MUST_USE_RESULT MaybeObject* GenerateNewEnumerationIndices(); 2962 MUST_USE_RESULT MaybeObject* GenerateNewEnumerationIndices();
2961 static const int kMaxNumberKeyIndex = 2963 static const int kMaxNumberKeyIndex =
2962 HashTable<Shape, Key>::kPrefixStartIndex; 2964 HashTable<Shape, Key>::kPrefixStartIndex;
2963 static const int kNextEnumerationIndexIndex = kMaxNumberKeyIndex + 1; 2965 static const int kNextEnumerationIndexIndex = kMaxNumberKeyIndex + 1;
2964 }; 2966 };
2965 2967
2966 2968
2967 class StringDictionaryShape { 2969 class StringDictionaryShape {
2968 public: 2970 public:
2969 static inline bool IsMatch(String* key, Object* other); 2971 static inline bool IsMatch(String* key, Object* other);
2970 static inline uint32_t Hash(String* key); 2972 static inline uint32_t Hash(String* key, uint32_t);
Erik Corry 2012/01/09 23:52:48 Parameter should have a name. I'm unhappy that we
2971 static inline uint32_t HashForObject(String* key, Object* object); 2973 static inline uint32_t HashForObject(String* key, uint32_t,
Erik Corry 2012/01/09 23:52:48 Formatting, and the parameter should have a name.
2974 Object* object);
2972 MUST_USE_RESULT static inline MaybeObject* AsObject(String* key); 2975 MUST_USE_RESULT static inline MaybeObject* AsObject(String* key);
2973 static const int kPrefixSize = 2; 2976 static const int kPrefixSize = 2;
2974 static const int kEntrySize = 3; 2977 static const int kEntrySize = 3;
2975 static const bool kIsEnumerable = true; 2978 static const bool kIsEnumerable = true;
2976 }; 2979 };
2977 2980
2978 2981
2979 class StringDictionary: public Dictionary<StringDictionaryShape, String*> { 2982 class StringDictionary: public Dictionary<StringDictionaryShape, String*> {
2980 public: 2983 public:
2981 static inline StringDictionary* cast(Object* obj) { 2984 static inline StringDictionary* cast(Object* obj) {
(...skipping 11 matching lines...) Expand all
2993 2996
2994 // Find entry for key, otherwise return kNotFound. Optimized version of 2997 // Find entry for key, otherwise return kNotFound. Optimized version of
2995 // HashTable::FindEntry. 2998 // HashTable::FindEntry.
2996 int FindEntry(String* key); 2999 int FindEntry(String* key);
2997 }; 3000 };
2998 3001
2999 3002
3000 class NumberDictionaryShape { 3003 class NumberDictionaryShape {
3001 public: 3004 public:
3002 static inline bool IsMatch(uint32_t key, Object* other); 3005 static inline bool IsMatch(uint32_t key, Object* other);
3003 static inline uint32_t Hash(uint32_t key); 3006 static inline uint32_t Hash(uint32_t key, uint32_t seed);
3004 static inline uint32_t HashForObject(uint32_t key, Object* object); 3007 static inline uint32_t HashForObject(uint32_t key, uint32_t seed,
Erik Corry 2012/01/09 23:52:48 Formatting.
3008 Object* object);
3005 MUST_USE_RESULT static inline MaybeObject* AsObject(uint32_t key); 3009 MUST_USE_RESULT static inline MaybeObject* AsObject(uint32_t key);
3006 static const int kPrefixSize = 2; 3010 static const int kPrefixSize = 2;
3007 static const int kEntrySize = 3; 3011 static const int kEntrySize = 3;
3008 static const bool kIsEnumerable = false; 3012 static const bool kIsEnumerable = false;
3009 }; 3013 };
3010 3014
3011 3015
3012 class NumberDictionary: public Dictionary<NumberDictionaryShape, uint32_t> { 3016 class NumberDictionary: public Dictionary<NumberDictionaryShape, uint32_t> {
3013 public: 3017 public:
3014 static NumberDictionary* cast(Object* obj) { 3018 static NumberDictionary* cast(Object* obj) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
3053 static const int kRequiresSlowElementsMask = 1; 3057 static const int kRequiresSlowElementsMask = 1;
3054 static const int kRequiresSlowElementsTagSize = 1; 3058 static const int kRequiresSlowElementsTagSize = 1;
3055 static const uint32_t kRequiresSlowElementsLimit = (1 << 29) - 1; 3059 static const uint32_t kRequiresSlowElementsLimit = (1 << 29) - 1;
3056 }; 3060 };
3057 3061
3058 3062
3059 template <int entrysize> 3063 template <int entrysize>
3060 class ObjectHashTableShape { 3064 class ObjectHashTableShape {
3061 public: 3065 public:
3062 static inline bool IsMatch(Object* key, Object* other); 3066 static inline bool IsMatch(Object* key, Object* other);
3063 static inline uint32_t Hash(Object* key); 3067 static inline uint32_t Hash(Object* key, uint32_t);
Erik Corry 2012/01/09 23:52:48 Names for arguments x2
3064 static inline uint32_t HashForObject(Object* key, Object* object); 3068 static inline uint32_t HashForObject(Object* key, uint32_t, Object* object);
3065 MUST_USE_RESULT static inline MaybeObject* AsObject(Object* key); 3069 MUST_USE_RESULT static inline MaybeObject* AsObject(Object* key);
3066 static const int kPrefixSize = 0; 3070 static const int kPrefixSize = 0;
3067 static const int kEntrySize = entrysize; 3071 static const int kEntrySize = entrysize;
3068 }; 3072 };
3069 3073
3070 3074
3071 // ObjectHashSet holds keys that are arbitrary objects by using the identity 3075 // ObjectHashSet holds keys that are arbitrary objects by using the identity
3072 // hash of the key for hashing purposes. 3076 // hash of the key for hashing purposes.
3073 class ObjectHashSet: public HashTable<ObjectHashTableShape<1>, Object*> { 3077 class ObjectHashSet: public HashTable<ObjectHashTableShape<1>, Object*> {
3074 public: 3078 public:
(...skipping 2893 matching lines...) Expand 10 before | Expand all | Expand 10 after
5968 static const int kCodeAgeMask = 0xff; 5972 static const int kCodeAgeMask = 0xff;
5969 }; 5973 };
5970 5974
5971 5975
5972 class CompilationCacheShape { 5976 class CompilationCacheShape {
5973 public: 5977 public:
5974 static inline bool IsMatch(HashTableKey* key, Object* value) { 5978 static inline bool IsMatch(HashTableKey* key, Object* value) {
5975 return key->IsMatch(value); 5979 return key->IsMatch(value);
5976 } 5980 }
5977 5981
5978 static inline uint32_t Hash(HashTableKey* key) { 5982 static inline uint32_t Hash(HashTableKey* key, uint32_t) {
5979 return key->Hash(); 5983 return key->Hash();
5980 } 5984 }
5981 5985
5982 static inline uint32_t HashForObject(HashTableKey* key, Object* object) { 5986 static inline uint32_t HashForObject(HashTableKey* key, uint32_t,
5987 Object* object) {
5983 return key->HashForObject(object); 5988 return key->HashForObject(object);
5984 } 5989 }
5985 5990
5986 MUST_USE_RESULT static MaybeObject* AsObject(HashTableKey* key) { 5991 MUST_USE_RESULT static MaybeObject* AsObject(HashTableKey* key) {
5987 return key->AsObject(); 5992 return key->AsObject();
5988 } 5993 }
5989 5994
5990 static const int kPrefixSize = 0; 5995 static const int kPrefixSize = 0;
5991 static const int kEntrySize = 2; 5996 static const int kEntrySize = 2;
5992 }; 5997 };
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
6072 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCache); 6077 DISALLOW_IMPLICIT_CONSTRUCTORS(CodeCache);
6073 }; 6078 };
6074 6079
6075 6080
6076 class CodeCacheHashTableShape { 6081 class CodeCacheHashTableShape {
6077 public: 6082 public:
6078 static inline bool IsMatch(HashTableKey* key, Object* value) { 6083 static inline bool IsMatch(HashTableKey* key, Object* value) {
6079 return key->IsMatch(value); 6084 return key->IsMatch(value);
6080 } 6085 }
6081 6086
6082 static inline uint32_t Hash(HashTableKey* key) { 6087 static inline uint32_t Hash(HashTableKey* key, uint32_t) {
6083 return key->Hash(); 6088 return key->Hash();
6084 } 6089 }
6085 6090
6086 static inline uint32_t HashForObject(HashTableKey* key, Object* object) { 6091 static inline uint32_t HashForObject(HashTableKey* key, uint32_t,
6092 Object* object) {
6087 return key->HashForObject(object); 6093 return key->HashForObject(object);
6088 } 6094 }
6089 6095
6090 MUST_USE_RESULT static MaybeObject* AsObject(HashTableKey* key) { 6096 MUST_USE_RESULT static MaybeObject* AsObject(HashTableKey* key) {
6091 return key->AsObject(); 6097 return key->AsObject();
6092 } 6098 }
6093 6099
6094 static const int kPrefixSize = 0; 6100 static const int kPrefixSize = 0;
6095 static const int kEntrySize = 2; 6101 static const int kEntrySize = 2;
6096 }; 6102 };
(...skipping 1975 matching lines...) Expand 10 before | Expand all | Expand 10 after
8072 } else { 8078 } else {
8073 value &= ~(1 << bit_position); 8079 value &= ~(1 << bit_position);
8074 } 8080 }
8075 return value; 8081 return value;
8076 } 8082 }
8077 }; 8083 };
8078 8084
8079 } } // namespace v8::internal 8085 } } // namespace v8::internal
8080 8086
8081 #endif // V8_OBJECTS_H_ 8087 #endif // V8_OBJECTS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698