Bug 31827

Summary: Allow custom memory allocation control for classes of the plugins and rendering directory in WebCore
Product: WebKit Reporter: Zoltan Horvath <zoltan>
Component: WebCore Misc.Assignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Normal CC: eric
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: Other   
OS: All   
Attachments:
Description Flags
Patch eric: review+

Description Zoltan Horvath 2009-11-24 05:26:13 PST
Created attachment 43761 [details]
Patch

Reviewed by NOBODY (OOPS!).

Allow custom memory allocation control for classes of the plugins and rendering directory in WebCore
https://bugs.webkit.org/show_bug.cgi?id=

Inherits the following classes from Noncopyable because these are instantiated
by 'new' and no need to be copyable:

class/struct name               - instantiated at: WebCore/'location'

class PluginRequest             - plugins/PluginView.cpp:521
class PluginMainThreadScheduler - plugins/PluginMainThreadScheduler.cpp:34
class PluginDatabase            - plugins/PluginDatabase.cpp:50
struct MimeClassInfo            - plugins/PluginInfoStore.cpp:50
struct PluginInfo               - plugins/PluginInfoStore.cpp:40
class RenderArena               - dom/Document.cpp:1401
class RenderImageScaleData      - rendering/RenderImage.cpp:149
class TableLayout               - (its child class) rendering/RenderTable.cpp:82
struct ColumnInfo               - rendering/RenderBlock.cpp:3590
struct FloatingObject           - rendering/RenderBlock.cpp:2300
struct MaxMargin                - rendering/RenderBlock.cpp:4794
class RenderMarquee             - rendering/RenderLayer.cpp:3277

* plugins/PluginData.h:
* plugins/PluginDatabase.h:
* plugins/PluginMainThreadScheduler.h:
* plugins/PluginView.h:
* rendering/RenderArena.h:
* rendering/RenderBlock.cpp:
* rendering/RenderBlock.h:
* rendering/RenderImage.cpp:
* rendering/RenderMarquee.h:
* rendering/TableLayout.h:
Comment 1 Eric Seidel (no email) 2009-11-24 10:15:25 PST
Comment on attachment 43761 [details]
Patch

I expect we're increasing the size of the WebCore binary by adding all these template instantiations.  That said, this change looks right, and is useful for documenting the use of these classes.  I'm still not sure I fully understand your quest to make new/delete replaceable, but this change is a good one.
Comment 2 Zoltan Horvath 2009-11-24 23:46:34 PST
> I'm still not sure I fully understand
> your quest to make new/delete replaceable, but this change is a good one.

Unfortunately, the global operator new technique doesn't work (on Linux and Windows). When you use the WebKit as a shared library for an application it will customizes the application's new/delete also. This can lead to weird problems. (e.g. crash) The FastAllocBase solution provides a safety way to customize new/delete through locally in the classes, not by the global way. So, we'll have full allocation control over the classes.

I'm going to land the patch now, thanks for the review. :)
Comment 3 Zoltan Horvath 2009-11-25 00:29:27 PST
Landed in 51378.
http://trac.webkit.org/changeset/51378