Changeset 173269 in webkit for trunk/Source/JavaScriptCore/runtime/SmallStrings.h
- Timestamp:
- Sep 4, 2014, 12:10:36 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/SmallStrings.h
r169316 r173269 48 48 namespace JSC { 49 49 50 51 52 53 54 50 class HeapRootVisitor; 51 class VM; 52 class JSString; 53 class SmallStringsStorage; 54 class SlotVisitor; 55 55 56 56 static const unsigned maxSingleCharacterString = 0xFF; 57 57 58 59 60 61 62 58 class SmallStrings { 59 WTF_MAKE_NONCOPYABLE(SmallStrings); 60 public: 61 SmallStrings(); 62 ~SmallStrings(); 63 63 64 65 66 67 64 JSString* emptyString() 65 { 66 return m_emptyString; 67 } 68 68 69 70 71 72 69 JSString* singleCharacterString(unsigned char character) 70 { 71 return m_singleCharacterStrings[character]; 72 } 73 73 74 74 JS_EXPORT_PRIVATE WTF::StringImpl* singleCharacterStringRep(unsigned char character); 75 75 76 76 JSString** singleCharacterStrings() { return &m_singleCharacterStrings[0]; } 77 77 78 79 78 void initializeCommonStrings(VM&); 79 void visitStrongReferences(SlotVisitor&); 80 80 81 81 #define JSC_COMMON_STRINGS_ACCESSOR_DEFINITION(name) \ 82 JSString* name##String() const\83 {\84 return m_##name;\85 86 82 JSString* name##String() const \ 83 { \ 84 return m_##name; \ 85 } 86 JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ACCESSOR_DEFINITION) 87 87 #undef JSC_COMMON_STRINGS_ACCESSOR_DEFINITION 88 88 89 90 89 JSString* nullObjectString() const { return m_nullObjectString; } 90 JSString* undefinedObjectString() const { return m_undefinedObjectString; } 91 91 92 93 92 private: 93 static const unsigned singleCharacterStringCount = maxSingleCharacterString + 1; 94 94 95 96 95 JS_EXPORT_PRIVATE void createEmptyString(VM*); 96 JS_EXPORT_PRIVATE void createSingleCharacterString(VM*, unsigned char); 97 97 98 void initialize(VM* vm, JSString*& string, const char* value) const;98 void initialize(VM*, JSString*&, const char* value) const; 99 99 100 100 JSString* m_emptyString; 101 101 #define JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION(name) JSString* m_##name; 102 102 JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION) 103 103 #undef JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION 104 105 106 107 108 104 JSString* m_nullObjectString; 105 JSString* m_undefinedObjectString; 106 JSString* m_singleCharacterStrings[singleCharacterStringCount]; 107 OwnPtr<SmallStringsStorage> m_storage; 108 }; 109 109 110 110 } // namespace JSC
Note:
See TracChangeset
for help on using the changeset viewer.