From ec64e1d7bd230a172abfc37724d16af92d5fd37d Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Thu, 2 Sep 2010 16:44:58 +0200 Subject: [PATCH] Tune the symbol and the literal tables. --- src/shared/cplusplus/LiteralTable.h | 12 ++++++++++-- src/shared/cplusplus/Scope.cpp | 4 ++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/shared/cplusplus/LiteralTable.h b/src/shared/cplusplus/LiteralTable.h index 1c85c6f13a0..f95b79a7e6f 100644 --- a/src/shared/cplusplus/LiteralTable.h +++ b/src/shared/cplusplus/LiteralTable.h @@ -138,7 +138,11 @@ public: _Literal *literal = new _Literal(chars, size); if (++_literalCount == _allocatedLiterals) { - _allocatedLiterals += 32; + if (! _allocatedLiterals) + _allocatedLiterals = 4; + else + _allocatedLiterals <<= 1; + _literals = (_Literal **) std::realloc(_literals, sizeof(_Literal *) * _allocatedLiterals); } @@ -161,7 +165,11 @@ protected: if (_buckets) std::free(_buckets); - _allocatedBuckets += 32; + if (! _allocatedBuckets) + _allocatedBuckets = 4; + else + _allocatedBuckets <<= 1; + _buckets = (_Literal **) std::calloc(_allocatedBuckets, sizeof(_Literal *)); _Literal **lastLiteral = _literals + (_literalCount + 1); diff --git a/src/shared/cplusplus/Scope.cpp b/src/shared/cplusplus/Scope.cpp index bc5eeb90bbc..b500f178cb8 100644 --- a/src/shared/cplusplus/Scope.cpp +++ b/src/shared/cplusplus/Scope.cpp @@ -105,7 +105,7 @@ private: void rehash(); private: - enum { DefaultInitialSize = 11 }; + enum { DefaultInitialSize = 4 }; Scope *_owner; Symbol **_symbols; @@ -147,7 +147,7 @@ void SymbolTable::enterSymbol(Symbol *symbol) symbol->_scope = _owner; _symbols[_symbolCount] = symbol; - if (_symbolCount >= _hashSize * 0.6) + if (_symbolCount * 5 >= _hashSize * 3) rehash(); else { const unsigned h = hashValue(symbol); -- GitLab