Changeset 81071 in webkit for trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp
- Timestamp:
- Mar 14, 2011, 3:31:29 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp
r77391 r81071 34 34 namespace JSC { 35 35 36 static const unsigned numCharactersToStore = 0x100;37 38 36 static inline bool isMarked(JSCell* string) 39 37 { … … 46 44 SmallStringsStorage(); 47 45 48 StringImpl* rep(unsigned char character) { return m_reps[character].get(); } 46 StringImpl* rep(unsigned char character) 47 { 48 return m_reps[character].get(); 49 } 49 50 50 51 private: 51 RefPtr<StringImpl> m_reps[numCharactersToStore]; 52 static const unsigned singleCharacterStringCount = maxSingleCharacterString + 1; 53 54 RefPtr<StringImpl> m_reps[singleCharacterStringCount]; 52 55 }; 53 56 … … 55 58 { 56 59 UChar* characterBuffer = 0; 57 RefPtr<StringImpl> baseString = StringImpl::createUninitialized( numCharactersToStore, characterBuffer);58 for (unsigned i = 0; i < numCharactersToStore; ++i) {60 RefPtr<StringImpl> baseString = StringImpl::createUninitialized(singleCharacterStringCount, characterBuffer); 61 for (unsigned i = 0; i < singleCharacterStringCount; ++i) { 59 62 characterBuffer[i] = i; 60 63 m_reps[i] = StringImpl::create(baseString, i, 1); … … 64 67 SmallStrings::SmallStrings() 65 68 { 66 COMPILE_ASSERT( numCharactersToStore== sizeof(m_singleCharacterStrings) / sizeof(m_singleCharacterStrings[0]), IsNumCharactersConstInSyncWithClassUsage);69 COMPILE_ASSERT(singleCharacterStringCount == sizeof(m_singleCharacterStrings) / sizeof(m_singleCharacterStrings[0]), IsNumCharactersConstInSyncWithClassUsage); 67 70 clear(); 68 71 } … … 85 88 86 89 bool isAnyStringMarked = isMarked(m_emptyString.get()); 87 for (unsigned i = 0; i < numCharactersToStore&& !isAnyStringMarked; ++i)90 for (unsigned i = 0; i < singleCharacterStringCount && !isAnyStringMarked; ++i) 88 91 isAnyStringMarked = isMarked(m_singleCharacterStrings[i].get()); 89 92 … … 95 98 if (m_emptyString) 96 99 markStack.append(&m_emptyString); 97 for (unsigned i = 0; i < numCharactersToStore; ++i) {100 for (unsigned i = 0; i < singleCharacterStringCount; ++i) { 98 101 if (m_singleCharacterStrings[i]) 99 102 markStack.append(&m_singleCharacterStrings[i]); … … 104 107 { 105 108 m_emptyString = 0; 106 for (unsigned i = 0; i < numCharactersToStore; ++i)109 for (unsigned i = 0; i < singleCharacterStringCount; ++i) 107 110 m_singleCharacterStrings[i] = 0; 108 111 } … … 113 116 if (m_emptyString) 114 117 ++count; 115 for (unsigned i = 0; i < numCharactersToStore; ++i) {118 for (unsigned i = 0; i < singleCharacterStringCount; ++i) { 116 119 if (m_singleCharacterStrings[i]) 117 120 ++count;
Note:
See TracChangeset
for help on using the changeset viewer.