Commit 5d38003f authored by junov@chromium.org's avatar junov@chromium.org

Prevent <canvas> destructor from causing nested garbage collection

In the destruction of HTMLCanvasElement, we call
HTMLCanvasElement::existingDrawingContext(), whose behavior was changed
incorrectly in r162330 and was triggering the allocation of an ImageBuffer
during tear-down.  This is not only wasteful, but it can trigger a
garbage collection because the creation of an ImageBuffer will increase
the amount of externallay allocated memory that is declared to V8.
Triggering a GC during the finalization of a garbage collected object
is bad.

BUG=378289

Review URL: https://codereview.chromium.org/303803002

git-svn-id: svn://svn.chromium.org/blink/trunk@174984 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1f3d9ffb
...@@ -572,10 +572,8 @@ GraphicsContext* HTMLCanvasElement::drawingContext() const ...@@ -572,10 +572,8 @@ GraphicsContext* HTMLCanvasElement::drawingContext() const
GraphicsContext* HTMLCanvasElement::existingDrawingContext() const GraphicsContext* HTMLCanvasElement::existingDrawingContext() const
{ {
if (m_didFailToCreateImageBuffer) { if (!hasImageBuffer())
ASSERT(!hasImageBuffer());
return 0; return 0;
}
return drawingContext(); return drawingContext();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment