[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kjs
From: Maks Orlovich <maksim () kde ! org>
Date: 2010-05-01 18:58:21
Message-ID: 20100501185821.411A5AC8AB () svn ! kde ! org
[Download RAW message or body]
SVN commit 1121573 by orlovich:
Cleanup some of the ::copy methods to be typesafe for ListImpBase input, and not assuming ListImp...
also inline one more thing.
M +15 -19 list.cpp
M +2 -2 list.h
--- trunk/KDE/kdelibs/kjs/list.cpp #1121572:1121573
@@ -211,11 +211,6 @@
}
}
-void List::clear()
-{
- _impBase->size = 0;
-}
-
void List::appendSlowCase(JSValue *v)
{
ListImp *imp = static_cast<ListImp *>(_impBase);
@@ -258,20 +253,20 @@
void List::copyFrom(const List& other)
{
// Assumption: we're empty (e.g. called from copy)
-
- ListImp* otherImp = static_cast<ListImp *>(other._impBase);
+ ListImpBase* otherImp = other._impBase;
ListImp* ourImp = static_cast<ListImp *>(_impBase);
assert(ourImp->size == 0 && ourImp->capacity == 0);
int size = otherImp->size;
- int cap = otherImp->capacity;
ourImp->size = size;
- ourImp->capacity = cap;
- if (cap) {
- // other used out-of-line buffer -- we should to
- ourImp->data = new JSValue*[cap];
+ if (size > inlineListValuesSize) {
+ // need an out-of-line buffer
+ ourImp->capacity = size;
+ ourImp->data = new JSValue*[size];
+ } else {
+ ourImp->capacity = 0;
}
for (int c = 0; c < size; ++c)
@@ -284,17 +279,18 @@
List copy;
ListImp* ourImp = static_cast<ListImp *>(_impBase);
- ListImp* otherImp = static_cast<ListImp *>(copy._impBase);
+ ListImpBase* otherImp = copy._impBase;
- // We allocate as much space as the other one (even if we could have
- // done it inline)
int size = otherImp->size;
- int cap = otherImp->capacity;
ourImp->size = size - 1;
- ourImp->capacity = cap;
- if (cap)
- ourImp->data = new JSValue*[cap];
+ if (size > inlineListValuesSize) {
+ // need an out-of-line buffer
+ ourImp->capacity = size;
+ ourImp->data = new JSValue*[size];
+ } else {
+ ourImp->capacity = 0;
+ }
for (int c = 1; c < size; ++c)
ourImp->data[c-1] = otherImp->data[c];
--- trunk/KDE/kdelibs/kjs/list.h #1121572:1121573
@@ -65,7 +65,7 @@
/**
* Remove all elements from the list.
*/
- void clear();
+ void clear() { _impBase->size = 0; }
/*
* Resets this List to point to the default empty list
@@ -150,7 +150,7 @@
int size = _impBase->size;
int newSize = size + 1;
if (newSize < inlineListValuesSize) {
- // Can just write to the inline byffer
+ // Can just write to the inline buffer
_impBase->data[size] = val;
_impBase->size = newSize;
} else {
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic