| Index: Source/platform/fonts/FontCache.cpp
|
| diff --git a/Source/platform/fonts/FontCache.cpp b/Source/platform/fonts/FontCache.cpp
|
| index c60c1dcd15cee91eb41bf3fcfedadc78fa5ec725..99fc13b34b1b14c466a790ac9b4c2f6b0e372da0 100644
|
| --- a/Source/platform/fonts/FontCache.cpp
|
| +++ b/Source/platform/fonts/FontCache.cpp
|
| @@ -243,32 +243,24 @@
|
| purgeFontVerticalDataCache();
|
| }
|
|
|
| -static bool invalidateFontCache = false;
|
| -
|
| -WillBeHeapHashSet<RawPtrWillBeWeakMember<FontCacheClient> >& fontCacheClients()
|
| -{
|
| -#if ENABLE(OILPAN)
|
| - DEFINE_STATIC_LOCAL(Persistent<HeapHashSet<WeakMember<FontCacheClient> > >, clients, (new HeapHashSet<WeakMember<FontCacheClient> >()));
|
| -#else
|
| - DEFINE_STATIC_LOCAL(HashSet<RawPtr<FontCacheClient> >*, clients, (new HashSet<RawPtr<FontCacheClient> >()));
|
| -#endif
|
| - invalidateFontCache = true;
|
| - return *clients;
|
| -}
|
| +static HashSet<FontCacheClient*>* gClients;
|
|
|
| void FontCache::addClient(FontCacheClient* client)
|
| {
|
| - ASSERT(!fontCacheClients().contains(client));
|
| - fontCacheClients().add(client);
|
| -}
|
| -
|
| -#if !ENABLE(OILPAN)
|
| + if (!gClients)
|
| + gClients = new HashSet<FontCacheClient*>;
|
| +
|
| + ASSERT(!gClients->contains(client));
|
| + gClients->add(client);
|
| +}
|
| +
|
| void FontCache::removeClient(FontCacheClient* client)
|
| {
|
| - ASSERT(fontCacheClients().contains(client));
|
| - fontCacheClients().remove(client);
|
| -}
|
| -#endif
|
| + ASSERT(gClients);
|
| + ASSERT(gClients->contains(client));
|
| +
|
| + gClients->remove(client);
|
| +}
|
|
|
| static unsigned short gGeneration = 0;
|
|
|
| @@ -279,7 +271,7 @@
|
|
|
| void FontCache::invalidate()
|
| {
|
| - if (!invalidateFontCache) {
|
| + if (!gClients) {
|
| ASSERT(!gFontPlatformDataCache);
|
| return;
|
| }
|
| @@ -291,11 +283,11 @@
|
|
|
| gGeneration++;
|
|
|
| - WillBeHeapVector<RefPtrWillBeMember<FontCacheClient> > clients;
|
| - size_t numClients = fontCacheClients().size();
|
| + Vector<RefPtr<FontCacheClient> > clients;
|
| + size_t numClients = gClients->size();
|
| clients.reserveInitialCapacity(numClients);
|
| - WillBeHeapHashSet<RawPtrWillBeWeakMember<FontCacheClient> >::iterator end = fontCacheClients().end();
|
| - for (WillBeHeapHashSet<RawPtrWillBeWeakMember<FontCacheClient> >::iterator it = fontCacheClients().begin(); it != end; ++it)
|
| + HashSet<FontCacheClient*>::iterator end = gClients->end();
|
| + for (HashSet<FontCacheClient*>::iterator it = gClients->begin(); it != end; ++it)
|
| clients.append(*it);
|
|
|
| ASSERT(numClients == clients.size());
|
|
|