Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(160)

Side by Side Diff: Source/core/rendering/RenderObject.cpp

Issue 869323003: Oilpan: move RenderObjects off heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: minor fixes Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 8 * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
9 * 9 *
10 * This library is free software; you can redistribute it and/or 10 * This library is free software; you can redistribute it and/or
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 { 117 {
118 m_renderObject.setNeedsLayoutIsForbidden(m_preexistingForbidden); 118 m_renderObject.setNeedsLayoutIsForbidden(m_preexistingForbidden);
119 } 119 }
120 #endif 120 #endif
121 121
122 struct SameSizeAsRenderObject { 122 struct SameSizeAsRenderObject {
123 virtual ~SameSizeAsRenderObject() { } // Allocate vtable pointer. 123 virtual ~SameSizeAsRenderObject() { } // Allocate vtable pointer.
124 void* pointers[5]; 124 void* pointers[5];
125 #if ENABLE(ASSERT) 125 #if ENABLE(ASSERT)
126 unsigned m_debugBitfields : 2; 126 unsigned m_debugBitfields : 2;
127 #if ENABLE(OILPAN)
128 unsigned m_oilpanBitfields : 1;
129 #endif
130 #endif 127 #endif
131 unsigned m_bitfields; 128 unsigned m_bitfields;
132 unsigned m_bitfields2; 129 unsigned m_bitfields2;
133 LayoutRect rect; // Stores the previous paint invalidation rect. 130 LayoutRect rect; // Stores the previous paint invalidation rect.
134 LayoutPoint position; // Stores the previous position from the paint invalid ation container. 131 LayoutPoint position; // Stores the previous position from the paint invalid ation container.
135 }; 132 };
136 133
137 static_assert(sizeof(RenderObject) == sizeof(SameSizeAsRenderObject), "RenderObj ect should stay small"); 134 static_assert(sizeof(RenderObject) == sizeof(SameSizeAsRenderObject), "RenderObj ect should stay small");
138 135
139 bool RenderObject::s_affectsParentBlock = false; 136 bool RenderObject::s_affectsParentBlock = false;
140 137
141 typedef HashMap<const RenderObject*, LayoutRect> SelectionPaintInvalidationMap; 138 typedef HashMap<const RenderObject*, LayoutRect> SelectionPaintInvalidationMap;
142 static SelectionPaintInvalidationMap* selectionPaintInvalidationMap = 0; 139 static SelectionPaintInvalidationMap* selectionPaintInvalidationMap = 0;
143 140
144 #if !ENABLE(OILPAN)
145 void* RenderObject::operator new(size_t sz) 141 void* RenderObject::operator new(size_t sz)
146 { 142 {
147 ASSERT(isMainThread()); 143 ASSERT(isMainThread());
148 return partitionAlloc(Partitions::getRenderingPartition(), sz); 144 return partitionAlloc(Partitions::getRenderingPartition(), sz);
149 } 145 }
150 146
151 void RenderObject::operator delete(void* ptr) 147 void RenderObject::operator delete(void* ptr)
152 { 148 {
153 ASSERT(isMainThread()); 149 ASSERT(isMainThread());
154 partitionFree(ptr); 150 partitionFree(ptr);
155 } 151 }
156 #endif
157 152
158 RenderObject* RenderObject::createObject(Element* element, RenderStyle* style) 153 RenderObject* RenderObject::createObject(Element* element, RenderStyle* style)
159 { 154 {
160 ASSERT(isAllowedToModifyRenderTreeStructure(element->document())); 155 ASSERT(isAllowedToModifyRenderTreeStructure(element->document()));
161 156
162 // Minimal support for content properties replacing an entire element. 157 // Minimal support for content properties replacing an entire element.
163 // Works only if we have exactly one piece of content and it's a URL. 158 // Works only if we have exactly one piece of content and it's a URL.
164 // Otherwise acts as if we didn't support this feature. 159 // Otherwise acts as if we didn't support this feature.
165 const ContentData* contentData = style->contentData(); 160 const ContentData* contentData = style->contentData();
166 if (contentData && !contentData->next() && contentData->isImage() && !elemen t->isPseudoElement()) { 161 if (contentData && !contentData->next() && contentData->isImage() && !elemen t->isPseudoElement()) {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 RenderObject::RenderObject(Node* node) 219 RenderObject::RenderObject(Node* node)
225 : ImageResourceClient() 220 : ImageResourceClient()
226 , m_style(nullptr) 221 , m_style(nullptr)
227 , m_node(node) 222 , m_node(node)
228 , m_parent(nullptr) 223 , m_parent(nullptr)
229 , m_previous(nullptr) 224 , m_previous(nullptr)
230 , m_next(nullptr) 225 , m_next(nullptr)
231 #if ENABLE(ASSERT) 226 #if ENABLE(ASSERT)
232 , m_hasAXObject(false) 227 , m_hasAXObject(false)
233 , m_setNeedsLayoutForbidden(false) 228 , m_setNeedsLayoutForbidden(false)
234 #if ENABLE(OILPAN)
235 , m_didCallDestroy(false)
236 #endif
237 #endif 229 #endif
238 , m_bitfields(node) 230 , m_bitfields(node)
239 { 231 {
240 #ifndef NDEBUG 232 #ifndef NDEBUG
241 renderObjectCounter.increment(); 233 renderObjectCounter.increment();
242 #endif 234 #endif
243 ++s_instanceCount; 235 ++s_instanceCount;
244 } 236 }
245 237
246 RenderObject::~RenderObject() 238 RenderObject::~RenderObject()
247 { 239 {
248 ASSERT(!m_hasAXObject); 240 ASSERT(!m_hasAXObject);
249 #if ENABLE(OILPAN)
250 ASSERT(m_didCallDestroy);
haraken 2015/02/04 05:48:56 Can we keep m_didCallDestroy? I think RenderObject
sof 2015/02/04 08:44:31 Why was it added&used for Oilpan only?
251 #endif
252 #ifndef NDEBUG 241 #ifndef NDEBUG
253 renderObjectCounter.decrement(); 242 renderObjectCounter.decrement();
254 #endif 243 #endif
255 --s_instanceCount; 244 --s_instanceCount;
256 } 245 }
257 246
258 void RenderObject::trace(Visitor* visitor)
259 {
260 visitor->trace(m_node);
261 visitor->trace(m_parent);
262 visitor->trace(m_previous);
263 visitor->trace(m_next);
264 }
265
266 String RenderObject::debugName() const 247 String RenderObject::debugName() const
267 { 248 {
268 StringBuilder name; 249 StringBuilder name;
269 name.append(renderName()); 250 name.append(renderName());
270 251
271 if (Node* node = this->node()) { 252 if (Node* node = this->node()) {
272 name.append(' '); 253 name.append(' ');
273 name.append(node->debugName()); 254 name.append(node->debugName());
274 } 255 }
275 256
(...skipping 2183 matching lines...) Expand 10 before | Expand all | Expand 10 after
2459 break; // Need to keep the anonymous parent, since it won't become e mpty by the removal of this renderer. 2440 break; // Need to keep the anonymous parent, since it won't become e mpty by the removal of this renderer.
2460 } 2441 }
2461 2442
2462 destroyRoot->destroy(); 2443 destroyRoot->destroy();
2463 2444
2464 // WARNING: |this| is deleted here. 2445 // WARNING: |this| is deleted here.
2465 } 2446 }
2466 2447
2467 void RenderObject::destroy() 2448 void RenderObject::destroy()
2468 { 2449 {
2469 #if ENABLE(ASSERT) && ENABLE(OILPAN)
2470 ASSERT(!m_didCallDestroy);
2471 m_didCallDestroy = true;
2472 #endif
2473 willBeDestroyed(); 2450 willBeDestroyed();
2474 postDestroy(); 2451 postDestroy();
2475 } 2452 }
2476 2453
2477 void RenderObject::removeShapeImageClient(ShapeValue* shapeValue) 2454 void RenderObject::removeShapeImageClient(ShapeValue* shapeValue)
2478 { 2455 {
2479 if (!shapeValue) 2456 if (!shapeValue)
2480 return; 2457 return;
2481 if (StyleImage* shapeImage = shapeValue->image()) 2458 if (StyleImage* shapeImage = shapeValue->image())
2482 shapeImage->removeClient(this); 2459 shapeImage->removeClient(this);
(...skipping 15 matching lines...) Expand all
2498 2475
2499 if (StyleImage* borderImage = m_style->borderImage().image()) 2476 if (StyleImage* borderImage = m_style->borderImage().image())
2500 borderImage->removeClient(this); 2477 borderImage->removeClient(this);
2501 2478
2502 if (StyleImage* maskBoxImage = m_style->maskBoxImage().image()) 2479 if (StyleImage* maskBoxImage = m_style->maskBoxImage().image())
2503 maskBoxImage->removeClient(this); 2480 maskBoxImage->removeClient(this);
2504 2481
2505 removeShapeImageClient(m_style->shapeOutside()); 2482 removeShapeImageClient(m_style->shapeOutside());
2506 } 2483 }
2507 ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->removeRender Object(this); 2484 ResourceLoadPriorityOptimizer::resourceLoadPriorityOptimizer()->removeRender Object(this);
2508 #if !ENABLE(OILPAN)
2509 delete this; 2485 delete this;
2510 #endif
2511 } 2486 }
2512 2487
2513 PositionWithAffinity RenderObject::positionForPoint(const LayoutPoint&) 2488 PositionWithAffinity RenderObject::positionForPoint(const LayoutPoint&)
2514 { 2489 {
2515 return createPositionWithAffinity(caretMinOffset(), DOWNSTREAM); 2490 return createPositionWithAffinity(caretMinOffset(), DOWNSTREAM);
2516 } 2491 }
2517 2492
2518 void RenderObject::updateDragState(bool dragOn) 2493 void RenderObject::updateDragState(bool dragOn)
2519 { 2494 {
2520 bool valueChanged = (dragOn != isDragging()); 2495 bool valueChanged = (dragOn != isDragging());
(...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after
3194 { 3169 {
3195 if (object1) { 3170 if (object1) {
3196 const blink::RenderObject* root = object1; 3171 const blink::RenderObject* root = object1;
3197 while (root->parent()) 3172 while (root->parent())
3198 root = root->parent(); 3173 root = root->parent();
3199 root->showRenderTreeAndMark(object1, "*", object2, "-", 0); 3174 root->showRenderTreeAndMark(object1, "*", object2, "-", 0);
3200 } 3175 }
3201 } 3176 }
3202 3177
3203 #endif 3178 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698