summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengine_p.h
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@nokia.com>2010-02-26 16:49:58 (GMT)
committerThiago Macieira <thiago.macieira@nokia.com>2010-02-26 16:49:58 (GMT)
commit7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d (patch)
tree27bbf204f0fac8d99b4b4056337fc66c2733b24d /src/script/api/qscriptengine_p.h
parent27e403d9c6185c606980bb7881e39a2c88138a13 (diff)
parent5d1d426afe07458a91b4908881554653285ed04c (diff)
downloadQt-7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d.zip
Qt-7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d.tar.gz
Qt-7f018afe5ab8c2077880a239b0ab5ecbdb1d5b7d.tar.bz2
Merge remote branch 'origin/4.6' into qt-master-from-4.6
Conflicts: mkspecs/common/symbian/symbian.conf qmake/generators/symbian/initprojectdeploy_symbian.cpp qmake/generators/symbian/symmake_abld.h
Diffstat (limited to 'src/script/api/qscriptengine_p.h')
-rw-r--r--src/script/api/qscriptengine_p.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index 79294fe..d0d020a 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -354,6 +354,8 @@ public:
int agentLineNumber;
QScriptValuePrivate *registeredScriptValues;
QScriptValuePrivate *freeScriptValues;
+ static const int maxFreeScriptValues = 256;
+ int freeScriptValuesCount;
QScriptStringPrivate *registeredScriptStrings;
QHash<int, QScriptTypeInfo*> m_typeInfos;
int processEventsInterval;
@@ -521,6 +523,7 @@ inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(siz
if (freeScriptValues) {
QScriptValuePrivate *p = freeScriptValues;
freeScriptValues = p->next;
+ --freeScriptValuesCount;
return p;
}
return reinterpret_cast<QScriptValuePrivate*>(qMalloc(size));
@@ -528,8 +531,13 @@ inline QScriptValuePrivate *QScriptEnginePrivate::allocateScriptValuePrivate(siz
inline void QScriptEnginePrivate::freeScriptValuePrivate(QScriptValuePrivate *p)
{
- p->next = freeScriptValues;
- freeScriptValues = p;
+ if (freeScriptValuesCount < maxFreeScriptValues) {
+ p->next = freeScriptValues;
+ freeScriptValues = p;
+ ++freeScriptValuesCount;
+ } else {
+ qFree(p);
+ }
}
inline void QScriptEnginePrivate::registerScriptValue(QScriptValuePrivate *value)