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