Changeset 77853 in webkit


Ignore:
Timestamp:
Feb 7, 2011 3:37:23 PM (13 years ago)
Author:
ggaren@apple.com
Message:

2011-02-07 Geoffrey Garen <ggaren@apple.com>

Reviewed by Darin Adler.

Assertion failure in ~JSGlobalObject when loading apple.com HTML5
transitions demo page
https://bugs.webkit.org/show_bug.cgi?id=53853

This was a long-standing bookkeeping bug uncovered by some heap refactoring.

  • html/HTMLCanvasElement.cpp: (WebCore::HTMLCanvasElement::createImageBuffer):
  • html/HTMLImageLoader.cpp: (WebCore::HTMLImageLoader::notifyFinished):
  • xml/XMLHttpRequest.cpp: (WebCore::XMLHttpRequest::dropProtection): Take the JSLock before reporting extra cost to the JavaScriptCore heap, since all use of JavaScriptCore is supposed to be guarded by JSLock.
Location:
trunk/Source/WebCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r77852 r77853  
     12011-02-07  Geoffrey Garen  <ggaren@apple.com>
     2
     3        Reviewed by Darin Adler.
     4
     5        Assertion failure in ~JSGlobalObject when loading apple.com HTML5
     6        transitions demo page
     7        https://bugs.webkit.org/show_bug.cgi?id=53853
     8
     9        This was a long-standing bookkeeping bug uncovered by some heap refactoring.
     10
     11        * html/HTMLCanvasElement.cpp:
     12        (WebCore::HTMLCanvasElement::createImageBuffer):
     13        * html/HTMLImageLoader.cpp:
     14        (WebCore::HTMLImageLoader::notifyFinished):
     15        * xml/XMLHttpRequest.cpp:
     16        (WebCore::XMLHttpRequest::dropProtection): Take the JSLock before
     17        reporting extra cost to the JavaScriptCore heap, since all use of
     18        JavaScriptCore is supposed to be guarded by JSLock.
     19
    1202011-02-07  Jian Li  <jianli@chromium.org>
    221
  • trunk/Source/WebCore/html/HTMLCanvasElement.cpp

    r77286 r77853  
    4949#include <stdio.h>
    5050
     51#if USE(JSC)
     52#include <runtime/JSLock.h>
     53#endif
     54
    5155#if ENABLE(WEBGL)   
    5256#include "WebGLContextAttributes.h"
     
    409413
    410414#if USE(JSC)
    411     if (hasCachedDOMNodeWrapperUnchecked(document(), const_cast<HTMLCanvasElement*>(this)))
     415    if (hasCachedDOMNodeWrapperUnchecked(document(), const_cast<HTMLCanvasElement*>(this))) {
     416        JSC::JSLock lock(JSC::SilenceAssertionsOnly);
    412417        scriptExecutionContext()->globalData()->heap.reportExtraMemoryCost(m_imageBuffer->dataSize());
     418    }
    413419#endif
    414420}
  • trunk/Source/WebCore/html/HTMLImageLoader.cpp

    r74465 r77853  
    3434#if USE(JSC)
    3535#include "JSDOMWindowBase.h"
     36#include <runtime/JSLock.h>
    3637#endif
    3738
     
    7778    if (!loadError) {
    7879        if (!elem->inDocument()) {
     80            JSC::JSLock lock(JSC::SilenceAssertionsOnly);
    7981            JSC::JSGlobalData* globalData = JSDOMWindowBase::commonJSGlobalData();
    8082            globalData->heap.reportExtraMemoryCost(cachedImage->encodedSize());
  • trunk/Source/WebCore/xml/XMLHttpRequest.cpp

    r77246 r77853  
    5757#include "JSDOMBinding.h"
    5858#include "JSDOMWindow.h"
     59#include <runtime/JSLock.h>
    5960#include <runtime/Protect.h>
    6061#endif
     
    793794    // report the extra cost at that point.
    794795    JSC::JSGlobalData* globalData = scriptExecutionContext()->globalData();
    795     if (hasCachedDOMObjectWrapper(globalData, this))
     796    if (hasCachedDOMObjectWrapper(globalData, this)) {
     797        JSC::JSLock lock(JSC::SilenceAssertionsOnly);
    796798        globalData->heap.reportExtraMemoryCost(m_responseBuilder.length() * 2);
     799    }
    797800#endif
    798801
Note: See TracChangeset for help on using the changeset viewer.