Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(110)

Side by Side Diff: third_party/WebKit/Source/wtf/text/AtomicString.h

Issue 1370113006: AtomicStringTable should not be initialized lazily Base URL: https://chromium.googlesource.com/chromium/src.git@AtomitStringTable
Patch Set: Export AtomicStringTable Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2004, 2005, 2006, 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public License 14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to 15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA. 17 * Boston, MA 02110-1301, USA.
18 * 18 *
19 */ 19 */
20 20
21 #ifndef AtomicString_h 21 #ifndef AtomicString_h
22 #define AtomicString_h 22 #define AtomicString_h
23 23
24 #include "wtf/HashSet.h"
24 #include "wtf/HashTableDeletedValueType.h" 25 #include "wtf/HashTableDeletedValueType.h"
25 #include "wtf/WTFExport.h" 26 #include "wtf/WTFExport.h"
26 #include "wtf/text/CString.h" 27 #include "wtf/text/CString.h"
27 #include "wtf/text/WTFString.h" 28 #include "wtf/text/WTFString.h"
28 29
29 namespace WTF { 30 namespace WTF {
30 31
31 struct AtomicStringHash; 32 struct AtomicStringHash;
33 class AtomicStringTable;
32 34
33 class WTF_EXPORT AtomicString { 35 class WTF_EXPORT AtomicString {
34 public: 36 public:
35 static void init(); 37 static void init();
36 38
37 AtomicString() { } 39 AtomicString() { }
38 AtomicString(const LChar* s) : m_string(add(s)) { } 40 AtomicString(const LChar* s) : m_string(add(s)) { }
39 AtomicString(const char* s) : m_string(add(s)) { } 41 AtomicString(const char* s) : m_string(add(s)) { }
40 AtomicString(const LChar* s, unsigned length) : m_string(add(s, length)) { } 42 AtomicString(const LChar* s, unsigned length) : m_string(add(s, length)) { }
41 AtomicString(const UChar* s, unsigned length) : m_string(add(s, length)) { } 43 AtomicString(const UChar* s, unsigned length) : m_string(add(s, length)) { }
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 } 177 }
176 static PassRefPtr<StringImpl> addFromLiteralData(const char* characters, uns igned length); 178 static PassRefPtr<StringImpl> addFromLiteralData(const char* characters, uns igned length);
177 static PassRefPtr<StringImpl> addSlowCase(StringImpl*); 179 static PassRefPtr<StringImpl> addSlowCase(StringImpl*);
178 #if USE(CF) 180 #if USE(CF)
179 static PassRefPtr<StringImpl> add(CFStringRef); 181 static PassRefPtr<StringImpl> add(CFStringRef);
180 #endif 182 #endif
181 183
182 static AtomicString fromUTF8Internal(const char*, const char*); 184 static AtomicString fromUTF8Internal(const char*, const char*);
183 }; 185 };
184 186
187 class AtomicStringTable {
188 WTF_MAKE_NONCOPYABLE(AtomicStringTable);
189 public:
190 StringImpl* addStringImpl(StringImpl*);
191
192 HashSet<StringImpl*>& table() { return m_table; }
193
194 private:
195 AtomicStringTable() = default;
196 static AtomicStringTable* create();
197 static void destroy(AtomicStringTable*);
198 friend class WTFThreadData;
199
200 HashSet<StringImpl*> m_table;
201 };
202
185 inline bool operator==(const AtomicString& a, const AtomicString& b) { return a. impl() == b.impl(); } 203 inline bool operator==(const AtomicString& a, const AtomicString& b) { return a. impl() == b.impl(); }
186 WTF_EXPORT bool operator==(const AtomicString&, const LChar*); 204 WTF_EXPORT bool operator==(const AtomicString&, const LChar*);
187 inline bool operator==(const AtomicString& a, const char* b) { return WTF::equal (a.impl(), reinterpret_cast<const LChar*>(b)); } 205 inline bool operator==(const AtomicString& a, const char* b) { return WTF::equal (a.impl(), reinterpret_cast<const LChar*>(b)); }
188 inline bool operator==(const AtomicString& a, const Vector<UChar>& b) { return a .impl() && equal(a.impl(), b.data(), b.size()); } 206 inline bool operator==(const AtomicString& a, const Vector<UChar>& b) { return a .impl() && equal(a.impl(), b.data(), b.size()); }
189 inline bool operator==(const AtomicString& a, const String& b) { return equal(a. impl(), b.impl()); } 207 inline bool operator==(const AtomicString& a, const String& b) { return equal(a. impl(), b.impl()); }
190 inline bool operator==(const LChar* a, const AtomicString& b) { return b == a; } 208 inline bool operator==(const LChar* a, const AtomicString& b) { return b == a; }
191 inline bool operator==(const char* a, const AtomicString& b) { return b == a; } 209 inline bool operator==(const char* a, const AtomicString& b) { return b == a; }
192 inline bool operator==(const String& a, const AtomicString& b) { return equal(a. impl(), b.impl()); } 210 inline bool operator==(const String& a, const AtomicString& b) { return equal(a. impl(), b.impl()); }
193 inline bool operator==(const Vector<UChar>& a, const AtomicString& b) { return b == a; } 211 inline bool operator==(const Vector<UChar>& a, const AtomicString& b) { return b == a; }
194 212
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 using WTF::AtomicString; 268 using WTF::AtomicString;
251 using WTF::nullAtom; 269 using WTF::nullAtom;
252 using WTF::emptyAtom; 270 using WTF::emptyAtom;
253 using WTF::starAtom; 271 using WTF::starAtom;
254 using WTF::xmlAtom; 272 using WTF::xmlAtom;
255 using WTF::xmlnsAtom; 273 using WTF::xmlnsAtom;
256 using WTF::xlinkAtom; 274 using WTF::xlinkAtom;
257 275
258 #include "wtf/text/StringConcatenate.h" 276 #include "wtf/text/StringConcatenate.h"
259 #endif // AtomicString_h 277 #endif // AtomicString_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/WTFThreadData.cpp ('k') | third_party/WebKit/Source/wtf/text/AtomicString.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698