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

Side by Side Diff: Source/platform/graphics/ContiguousContainer.h

Issue 1323263002: Show debug information for invalid display items (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef ContiguousContainer_h 5 #ifndef ContiguousContainer_h
6 #define ContiguousContainer_h 6 #define ContiguousContainer_h
7 7
8 #include "platform/PlatformExport.h" 8 #include "platform/PlatformExport.h"
9 #include "wtf/Alignment.h" 9 #include "wtf/Alignment.h"
10 #include "wtf/Compiler.h" 10 #include "wtf/Compiler.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 169
170 void swap(ContiguousContainer& other) { ContiguousContainerBase::swap(other) ; } 170 void swap(ContiguousContainer& other) { ContiguousContainerBase::swap(other) ; }
171 171
172 // Appends a new element using memcpy, then default-constructs a base 172 // Appends a new element using memcpy, then default-constructs a base
173 // element in its place. Use with care. 173 // element in its place. Use with care.
174 BaseElementType& appendByMoving(BaseElementType& item, size_t size) 174 BaseElementType& appendByMoving(BaseElementType& item, size_t size)
175 { 175 {
176 ASSERT(size >= sizeof(BaseElementType)); 176 ASSERT(size >= sizeof(BaseElementType));
177 void* newItem = allocate(size); 177 void* newItem = allocate(size);
178 memcpy(newItem, static_cast<void*>(&item), size); 178 memcpy(newItem, static_cast<void*>(&item), size);
179 new (&item) BaseElementType; 179 new (&item) BaseElementType(
180 #ifndef NDEBUG
181 item.asDebugString()
182 #endif
183 );
180 return *static_cast<BaseElementType*>(newItem); 184 return *static_cast<BaseElementType*>(newItem);
181 } 185 }
182 186
183 private: 187 private:
184 static size_t align(size_t size) 188 static size_t align(size_t size)
185 { 189 {
186 size_t alignedSize = alignment * ((size + alignment - 1) / alignment); 190 size_t alignedSize = alignment * ((size + alignment - 1) / alignment);
187 ASSERT(alignedSize % alignment == 0); 191 ASSERT(alignedSize % alignment == 0);
188 ASSERT(alignedSize >= size); 192 ASSERT(alignedSize >= size);
189 ASSERT(alignedSize < size + alignment); 193 ASSERT(alignedSize < size + alignment);
190 return alignedSize; 194 return alignedSize;
191 } 195 }
192 }; 196 };
193 197
194 } // namespace blink 198 } // namespace blink
195 199
196 #endif // ContiguousContainer_h 200 #endif // ContiguousContainer_h
OLDNEW
« no previous file with comments | « no previous file | Source/platform/graphics/paint/DisplayItem.h » ('j') | Source/platform/graphics/paint/DisplayItem.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698