Don't preallocate child lists
Summary: There is no reason to malloc a list of 4 child pointers for every CSS node eagerly. Instead, we malloc the list (preserving the default size of 4) when we try to put stuff in it. Reviewed By: emilsjolander Differential Revision: D4078012 fbshipit-source-id: 7cdcab03ec4067550a5fee5e1baea14344f3a8f9
This commit is contained in:
committed by
Facebook Github Bot
parent
0cc1b83569
commit
01c2ac3369
@@ -28,19 +28,32 @@ CSSNodeListRef CSSNodeListNew(const uint32_t initialCapacity) {
|
||||
}
|
||||
|
||||
void CSSNodeListFree(const CSSNodeListRef list) {
|
||||
free(list->items);
|
||||
free(list);
|
||||
if (list) {
|
||||
free(list->items);
|
||||
free(list);
|
||||
}
|
||||
}
|
||||
|
||||
uint32_t CSSNodeListCount(const CSSNodeListRef list) {
|
||||
return list->count;
|
||||
if (list) {
|
||||
return list->count;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void CSSNodeListAdd(const CSSNodeListRef list, const CSSNodeRef node) {
|
||||
CSSNodeListInsert(list, node, list->count);
|
||||
void CSSNodeListAdd(CSSNodeListRef *listp, const CSSNodeRef node) {
|
||||
if (!*listp) {
|
||||
*listp = CSSNodeListNew(4);
|
||||
}
|
||||
CSSNodeListInsert(listp, node, (*listp)->count);
|
||||
}
|
||||
|
||||
void CSSNodeListInsert(const CSSNodeListRef list, const CSSNodeRef node, const uint32_t index) {
|
||||
void CSSNodeListInsert(CSSNodeListRef *listp, const CSSNodeRef node, const uint32_t index) {
|
||||
if (!*listp) {
|
||||
*listp = CSSNodeListNew(4);
|
||||
}
|
||||
CSSNodeListRef list = *listp;
|
||||
|
||||
if (list->count == list->capacity) {
|
||||
list->capacity *= 2;
|
||||
list->items = realloc(list->items, sizeof(void *) * list->capacity);
|
||||
|
Reference in New Issue
Block a user