Chromium Code Reviews| Index: src/objects.h |
| diff --git a/src/objects.h b/src/objects.h |
| index 5c607fe349a630919f759171d7060943d75272a6..14f81f89a93534a9c33652ca2f8ae6d7d9b45928 100644 |
| --- a/src/objects.h |
| +++ b/src/objects.h |
| @@ -2913,11 +2913,12 @@ class HashTable: public FixedArray { |
| return (hash + GetProbeOffset(number)) & (size - 1); |
| } |
| - static uint32_t FirstProbe(uint32_t hash, uint32_t size) { |
| + inline static uint32_t FirstProbe(uint32_t hash, uint32_t size) { |
| return hash & (size - 1); |
| } |
| - static uint32_t NextProbe(uint32_t last, uint32_t number, uint32_t size) { |
| + inline static uint32_t NextProbe( |
|
Vyacheslav Egorov (Google)
2012/09/26 15:12:14
If you want to _force_ inlining consider using INL
Yang
2012/09/26 15:14:43
I'll do some experiments on whether this makes any
|
| + uint32_t last, uint32_t number, uint32_t size) { |
| return (last + number) & (size - 1); |
| } |
| @@ -3004,6 +3005,8 @@ class SymbolTable: public HashTable<SymbolTableShape, HashTableKey*> { |
| private: |
| MUST_USE_RESULT MaybeObject* LookupKey(HashTableKey* key, Object** s); |
| + template <bool seq_ascii> friend class JsonParser; |
| + |
| DISALLOW_IMPLICIT_CONSTRUCTORS(SymbolTable); |
| }; |
| @@ -7054,10 +7057,6 @@ class StringHasher { |
| // index. |
| bool is_array_index() { return is_array_index_; } |
| - bool is_valid() { return is_valid_; } |
| - |
| - void invalidate() { is_valid_ = false; } |
| - |
| // Calculated hash value for a string consisting of 1 to |
| // String::kMaxArrayIndexSize digits with no leading zeros (except "0"). |
| // value is represented decimal value. |
| @@ -7076,13 +7075,33 @@ class StringHasher { |
| inline uint32_t GetHash(); |
| + // Reusable parts of the hashing algorithm. |
| + INLINE(static uint32_t AddCharacterCore(uint32_t running_hash, uint32_t c)); |
| + INLINE(static uint32_t GetHashCore(uint32_t running_hash)); |
| + |
| int length_; |
| uint32_t raw_running_hash_; |
| uint32_t array_index_; |
| bool is_array_index_; |
| bool is_first_char_; |
| - bool is_valid_; |
| friend class TwoCharHashTableKey; |
| + |
| + template <bool seq_ascii> friend class JsonParser; |
| +}; |
| + |
| + |
| +class IncrementalAsciiStringHasher { |
| + public: |
| + explicit inline IncrementalAsciiStringHasher(uint32_t seed, char first_char); |
| + inline void AddCharacter(uc32 c); |
| + inline uint32_t GetHash(); |
| + |
| + private: |
| + int length_; |
| + uint32_t raw_running_hash_; |
| + uint32_t array_index_; |
| + bool is_array_index_; |
| + char first_char_; |
| }; |