diff options
Diffstat (limited to 'Source/JavaScriptCore/runtime/SmallStrings.h')
-rw-r--r-- | Source/JavaScriptCore/runtime/SmallStrings.h | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/Source/JavaScriptCore/runtime/SmallStrings.h b/Source/JavaScriptCore/runtime/SmallStrings.h index cd8e63095..e609c5092 100644 --- a/Source/JavaScriptCore/runtime/SmallStrings.h +++ b/Source/JavaScriptCore/runtime/SmallStrings.h @@ -30,6 +30,17 @@ #include <wtf/FixedArray.h> #include <wtf/OwnPtr.h> +#define JSC_COMMON_STRINGS_EACH_NAME(macro) \ + macro(boolean) \ + macro(false) \ + macro(function) \ + macro(number) \ + macro(null) \ + macro(object) \ + macro(undefined) \ + macro(string) \ + macro(true) + namespace JSC { class HeapRootVisitor; @@ -63,19 +74,31 @@ namespace JSC { JS_EXPORT_PRIVATE StringImpl* singleCharacterStringRep(unsigned char character); void finalizeSmallStrings(); - void clear(); - - unsigned count() const; JSString** singleCharacterStrings() { return &m_singleCharacterStrings[0]; } +#define JSC_COMMON_STRINGS_ACCESSOR_DEFINITION(name) \ + JSString* name##String(JSGlobalData* globalData) const \ + { \ + if (!m_##name) \ + initialize(globalData, m_##name, #name); \ + return m_##name; \ + } + JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ACCESSOR_DEFINITION) +#undef JSC_COMMON_STRINGS_ACCESSOR_DEFINITION + private: static const unsigned singleCharacterStringCount = maxSingleCharacterString + 1; JS_EXPORT_PRIVATE void createEmptyString(JSGlobalData*); JS_EXPORT_PRIVATE void createSingleCharacterString(JSGlobalData*, unsigned char); + void initialize(JSGlobalData* globalData, JSString*& string, const char* value) const; + JSString* m_emptyString; +#define JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION(name) mutable JSString* m_##name; + JSC_COMMON_STRINGS_EACH_NAME(JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION) +#undef JSC_COMMON_STRINGS_ATTRIBUTE_DECLARATION JSString* m_singleCharacterStrings[singleCharacterStringCount]; OwnPtr<SmallStringsStorage> m_storage; }; |