Changeset 88394 in webkit for trunk/Source/JavaScriptCore/parser/ParserArena.h
- Timestamp:
- Jun 8, 2011, 2:54:15 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/ParserArena.h
r87838 r88394 46 46 const Identifier& makeNumericIdentifier(JSGlobalData*, double number); 47 47 48 bool isEmpty() const { return m_identifiers.isEmpty(); } 49 50 public: 51 static const int MaximumCachableCharacter = 128; 52 typedef SegmentedVector<Identifier, 64> IdentifierVector; 48 53 void clear() 49 54 { 50 55 m_identifiers.clear(); 51 for ( unsigned i = 0; i < 128; i++)56 for (int i = 0; i < MaximumCachableCharacter; i++) 52 57 m_shortIdentifiers[i] = 0; 58 for (int i = 0; i < MaximumCachableCharacter; i++) 59 m_recentIdentifiers[i] = 0; 53 60 } 54 bool isEmpty() const { return m_identifiers.isEmpty(); }55 61 56 62 private: 57 static const int MaximumCachableCharacter = 128;58 typedef SegmentedVector<Identifier, 64> IdentifierVector;59 63 IdentifierVector m_identifiers; 60 64 FixedArray<Identifier*, MaximumCachableCharacter> m_shortIdentifiers; 65 FixedArray<Identifier*, MaximumCachableCharacter> m_recentIdentifiers; 61 66 }; 62 67 63 68 ALWAYS_INLINE const Identifier& IdentifierArena::makeIdentifier(JSGlobalData* globalData, const UChar* characters, size_t length) 64 69 { 65 if (length == 1 && characters[0] < MaximumCachableCharacter) { 70 if (characters[0] >= MaximumCachableCharacter) { 71 m_identifiers.append(Identifier(globalData, characters, length)); 72 return m_identifiers.last(); 73 } 74 if (length == 1) { 66 75 if (Identifier* ident = m_shortIdentifiers[characters[0]]) 67 76 return *ident; … … 70 79 return m_identifiers.last(); 71 80 } 81 Identifier* ident = m_recentIdentifiers[characters[0]]; 82 if (ident && Identifier::equal(ident->impl(), characters, length)) 83 return *ident; 72 84 m_identifiers.append(Identifier(globalData, characters, length)); 85 m_recentIdentifiers[characters[0]] = &m_identifiers.last(); 73 86 return m_identifiers.last(); 74 87 }
Note:
See TracChangeset
for help on using the changeset viewer.