Changeset 87838 in webkit for trunk/Source/JavaScriptCore/parser/ParserArena.h
- Timestamp:
- Jun 1, 2011, 1:09:04 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/parser/ParserArena.h
r76248 r87838 38 38 WTF_MAKE_FAST_ALLOCATED; 39 39 public: 40 IdentifierArena() 41 { 42 clear(); 43 } 44 40 45 ALWAYS_INLINE const Identifier& makeIdentifier(JSGlobalData*, const UChar* characters, size_t length); 41 46 const Identifier& makeNumericIdentifier(JSGlobalData*, double number); 42 47 43 void clear() { m_identifiers.clear(); } 48 void clear() 49 { 50 m_identifiers.clear(); 51 for (unsigned i = 0; i < 128; i++) 52 m_shortIdentifiers[i] = 0; 53 } 44 54 bool isEmpty() const { return m_identifiers.isEmpty(); } 45 55 46 56 private: 57 static const int MaximumCachableCharacter = 128; 47 58 typedef SegmentedVector<Identifier, 64> IdentifierVector; 48 59 IdentifierVector m_identifiers; 60 FixedArray<Identifier*, MaximumCachableCharacter> m_shortIdentifiers; 49 61 }; 50 62 51 63 ALWAYS_INLINE const Identifier& IdentifierArena::makeIdentifier(JSGlobalData* globalData, const UChar* characters, size_t length) 52 64 { 65 if (length == 1 && characters[0] < MaximumCachableCharacter) { 66 if (Identifier* ident = m_shortIdentifiers[characters[0]]) 67 return *ident; 68 m_identifiers.append(Identifier(globalData, characters, length)); 69 m_shortIdentifiers[characters[0]] = &m_identifiers.last(); 70 return m_identifiers.last(); 71 } 53 72 m_identifiers.append(Identifier(globalData, characters, length)); 54 73 return m_identifiers.last();
Note:
See TracChangeset
for help on using the changeset viewer.