Changeset 78297 in webkit


Ignore:
Timestamp:
Feb 10, 2011 6:10:16 PM (13 years ago)
Author:
msaboff@apple.com
Message:

2011-02-10 Michael Saboff <msaboff@apple.com>

Reviewed by Geoffrey Garen.

Cached JavaScript Parser Data Being Left in Memory Cache
https://bugs.webkit.org/show_bug.cgi?id=54245

Added clear method which removes SourceProviderCache items.
Cleaned up extraneous whitespace.

  • JavaScriptCore.exp:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
  • parser/SourceProviderCache.cpp: (JSC::SourceProviderCache::~SourceProviderCache): (JSC::SourceProviderCache::clear): (JSC::SourceProviderCache::byteSize): (JSC::SourceProviderCache::add):
  • parser/SourceProviderCache.h:

2011-02-10 Michael Saboff <msaboff@apple.com>

Reviewed by Geoffrey Garen.

Cached JavaScript Parser Data Being Left in Memory Cache
https://bugs.webkit.org/show_bug.cgi?id=54245

Added logic in CachedScript to clear SourceProviderCache data in
destroyDecodedData(). Added and changed CachedScript timeout to
act similar to CachedImage. Changed didAddClient to call super
class method instead of duplicating the logic in the derived
classes.

  • loader/cache/CachedImage.cpp: (WebCore::CachedImage::didAddClient):
  • loader/cache/CachedScript.cpp: (WebCore::CachedScript::didAddClient): (WebCore::CachedScript::allClientsRemoved): (WebCore::CachedScript::script): (WebCore::CachedScript::destroyDecodedData):
  • loader/cache/CachedScript.h:
Location:
trunk/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r78292 r78297  
     12011-02-10  Michael Saboff  <msaboff@apple.com>
     2
     3        Reviewed by Geoffrey Garen.
     4
     5        Cached JavaScript Parser Data Being Left in Memory Cache
     6        https://bugs.webkit.org/show_bug.cgi?id=54245
     7
     8        Added clear method which removes SourceProviderCache items.
     9        Cleaned up extraneous whitespace.
     10
     11        * JavaScriptCore.exp:
     12        * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def:
     13        * parser/SourceProviderCache.cpp:
     14        (JSC::SourceProviderCache::~SourceProviderCache):
     15        (JSC::SourceProviderCache::clear):
     16        (JSC::SourceProviderCache::byteSize):
     17        (JSC::SourceProviderCache::add):
     18        * parser/SourceProviderCache.h:
     19
    1202011-02-10  Joseph Pecoraro  <joepeck@webkit.org>
    221
  • trunk/Source/JavaScriptCore/JavaScriptCore.exp

    r78042 r78297  
    191191__ZN3JSC18PropertyDescriptor9setGetterENS_7JSValueE
    192192__ZN3JSC18PropertyDescriptor9setSetterENS_7JSValueE
     193__ZN3JSC19SourceProviderCache5clearEv
    193194__ZN3JSC19SourceProviderCacheD1Ev
    194195__ZN3JSC19initializeThreadingEv
  • trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def

    r78042 r78297  
    8383    ?classInfo@JSCell@JSC@@UBEPBUClassInfo@2@XZ
    8484    ?className@JSObject@JSC@@UBE?AVUString@2@XZ
     85    ?clear@SourceProviderCache@JSC@@QAEXXZ
    8586    ?collate@Collator@WTF@@QBE?AW4Result@12@PB_WI0I@Z
    8687    ?collectAllGarbage@Heap@JSC@@QAEXXZ
  • trunk/Source/JavaScriptCore/parser/SourceProviderCache.cpp

    r76611 r78297  
    3333SourceProviderCache::~SourceProviderCache()
    3434{
     35    clear();
     36}
     37
     38void SourceProviderCache::clear()
     39{
    3540    deleteAllValues(m_map);
     41    m_map.clear();
     42    m_contentByteSize = 0;
    3643}
    37    
     44
    3845unsigned SourceProviderCache::byteSize() const
    3946{
    40     return m_contentByteSize + sizeof(*this) + m_map.capacity() * sizeof(SourceProviderCacheItem*); 
     47    return m_contentByteSize + sizeof(*this) + m_map.capacity() * sizeof(SourceProviderCacheItem*);
    4148}
    42    
     49
    4350void SourceProviderCache::add(int sourcePosition, PassOwnPtr<SourceProviderCacheItem> item, unsigned size)
    4451{
    45     m_map.add(sourcePosition, item.leakPtr()); 
    46     m_contentByteSize += size; 
     52    m_map.add(sourcePosition, item.leakPtr());
     53    m_contentByteSize += size;
    4754}
    4855
  • trunk/Source/JavaScriptCore/parser/SourceProviderCache.h

    r76611 r78297  
    3535    SourceProviderCache() : m_contentByteSize(0) {}
    3636    ~SourceProviderCache();
    37    
     37
     38    void clear();
    3839    unsigned byteSize() const;
    3940    void add(int sourcePosition, PassOwnPtr<SourceProviderCacheItem>, unsigned size);
  • trunk/Source/WebCore/ChangeLog

    r78293 r78297  
     12011-02-10  Michael Saboff  <msaboff@apple.com>
     2
     3        Reviewed by Geoffrey Garen.
     4
     5        Cached JavaScript Parser Data Being Left in Memory Cache
     6        https://bugs.webkit.org/show_bug.cgi?id=54245
     7
     8        Added logic in CachedScript to clear SourceProviderCache data in
     9        destroyDecodedData().  Added and changed CachedScript timeout to
     10        act similar to CachedImage.  Changed didAddClient to call super
     11        class method instead of duplicating the logic in the derived
     12        classes.
     13
     14        * loader/cache/CachedImage.cpp:
     15        (WebCore::CachedImage::didAddClient):
     16        * loader/cache/CachedScript.cpp:
     17        (WebCore::CachedScript::didAddClient):
     18        (WebCore::CachedScript::allClientsRemoved):
     19        (WebCore::CachedScript::script):
     20        (WebCore::CachedScript::destroyDecodedData):
     21        * loader/cache/CachedScript.h:
     22
    1232011-02-10  Cosmin Truta  <ctruta@chromium.org>
    224
  • trunk/Source/WebCore/loader/cache/CachedImage.cpp

    r75857 r78297  
    100100        c->imageChanged(this);
    101101
    102     if (!isLoading())
    103         c->notifyFinished(this);
     102    CachedResource::didAddClient(c);
    104103}
    105104
  • trunk/Source/WebCore/loader/cache/CachedScript.cpp

    r76177 r78297  
    5656}
    5757
     58void CachedScript::didAddClient(CachedResourceClient* c)
     59{
     60    if (m_decodedDataDeletionTimer.isActive())
     61        m_decodedDataDeletionTimer.stop();
     62
     63    CachedResource::didAddClient(c);
     64}
     65
    5866void CachedScript::allClientsRemoved()
    5967{
    60     m_decodedDataDeletionTimer.startOneShot(0);
     68    if (double interval = memoryCache()->deadDecodedDataDeletionInterval())
     69        m_decodedDataDeletionTimer.startOneShot(interval);
    6170}
    6271
     
    8089        setDecodedSize(m_script.length() * sizeof(UChar));
    8190    }
    82     m_decodedDataDeletionTimer.startOneShot(0);
    8391    return m_script;
    8492}
     
    118126    unsigned extraSize = 0;
    119127#if USE(JSC)
    120     // FIXME: SourceInfoCache should be wiped out too but not this easily.
     128    if (m_sourceProviderCache)
     129        m_sourceProviderCache->clear();
     130
    121131    extraSize = m_sourceProviderCache ? m_sourceProviderCache->byteSize() : 0;
    122132#endif
  • trunk/Source/WebCore/loader/cache/CachedScript.h

    r78226 r78297  
    4848        const String& script();
    4949
     50        virtual void didAddClient(CachedResourceClient*);
    5051        virtual void allClientsRemoved();
    5152
Note: See TracChangeset for help on using the changeset viewer.