Commit 10b841ad authored by haraken@chromium.org's avatar haraken@chromium.org

Oilpan: Introduce a dedicated heap for CSSValue and RenderObject

According to our object profiling in micro-benchmarks and real-world benchmarks (https://docs.google.com/a/google.com/spreadsheets/d/1EBYDfkvJ1aleIj0iSNmk0zEsq0AqVOsjEyI6XfOoLIU/edit#gid=562560234), the following objects are allocated very frequently.

- Node
- CSSValue
- RenderObject
- HTMLStackItem
- ElementRecord

Given the results, this CL introduces a dedicated heap for CSSValue and RenderObject. (Note: PartitionAlloc also has a dedicated heap for RenderObject.)

This improves various benchmarks a lot:

css/CSSPropertySetterGetter: +35%
css/ClassInvalidation: +32%
css/StyleSheetInsert: +21%
layout/floats-*: ~+20%
layout/large-table-with-*: ~+10%

BUG=420515

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

git-svn-id: svn://svn.chromium.org/blink/trunk@184362 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent dc836462
...@@ -189,7 +189,10 @@ template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> { ...@@ -189,7 +189,10 @@ template<typename U> class ThreadingTrait<const U> : public ThreadingTrait<U> {
// To create a new typed heap add a H(<ClassName>) to the // To create a new typed heap add a H(<ClassName>) to the
// FOR_EACH_TYPED_HEAP macro below. // FOR_EACH_TYPED_HEAP macro below.
#define FOR_EACH_TYPED_HEAP(H) \ #define FOR_EACH_TYPED_HEAP(H) \
H(Node) H(Node) \
H(RenderObject) \
H(CSSValue)
#define TypedHeapEnumName(Type) Type##Heap, #define TypedHeapEnumName(Type) Type##Heap,
#define TypedHeapEnumNameNonFinalized(Type) Type##HeapNonFinalized, #define TypedHeapEnumNameNonFinalized(Type) Type##HeapNonFinalized,
......
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