[Webkit-unassigned] [Bug 73712] PODIntervalTree takes 1.7MB memory on www.nytimes.com

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Dec 14 18:51:14 PST 2011


https://bugs.webkit.org/show_bug.cgi?id=73712





--- Comment #19 from Yongjun Zhang <yongjun_zhang at apple.com>  2011-12-14 18:51:13 PST ---
(In reply to comment #18)
> (From update of attachment 119134 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=119134&action=review
> 
> > Source/WebCore/platform/PODFreeListArena.h:33
> > +class PODFreeListArena : public PODArena {
> 
> This is a step in the right direction but doesn't address the basic problem in the last review. This class still allows allocation and freeing of different sizes.
> 
> My thought was to parameterize PODFreeListArena on the one type of object it knows how to allocate. I would use private inheritance from PODArena. The PODFreeListArena's allocateObject() methods shouldn't take the first "class T" template argument. Change PODRedBlackTree to accept a PODFreeListArena<T> rather than a PODArena.
> 

thanks,  this should work!  I was trying to keep the change in PODRedBlackTree small, but I didn't realize a PODRedBlackTree will always ask its arena to allocate objects of the same size.

> The challenge will be to figure out how to describe the type parameter. It will be a Node<T> where T is the type parameter of the RedBlackTree. Currently Node is an internal concept to RedBlackTree. Perhaps you can expose it with a public typedef.
> 

Yeah, it would be a bit awkward to declare the interval arena in Document as something like:

PODFreeListArena<PODRedBlackTree<int, FloatingObject*>::Node>

> The solution I'm outlining will also allow getting rid of the virtual allocate and free functions, which are undesirable.
> 

true, and we can also avoid the overhead of virtual function calls.

> Another solution could be to configure PODFreeListArena so that it can only allocate objects of a certain size, and sprinkle assertions throughout the code. This is gross though and I would rather find a solution that uses the type system to enforce correct usage.

This is essential what the current patch is doing (without assertions though).  Anyway, I will try the approach you suggested and see how it goes.  thanks!

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list