[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    extragear/sdk/kdevelop/languages/cpp/parser
From:       Alexander Dymo <adymo () kdevelop ! org>
Date:       2010-02-14 19:48:12
Message-ID: 1266176892.346109.1781.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1090172 by dymo:

Optimize C++ parser memory consumption: don't create cast expression node in the \
mempool unless necessary.

Optimization effect for one of my C files:
before: 777M
after:  703M
74M saved


 M  +8 -3      parser.cpp  


--- trunk/extragear/sdk/kdevelop/languages/cpp/parser/parser.cpp #1090171:1090172
@@ -4235,16 +4235,21 @@
     {
       advance();
 
-      CastExpressionAST *ast = CreateNode<CastExpressionAST>(session->mempool);
 
-      if (parseTypeId(ast->type_id))
+      TypeIdAST *typeIdAst = 0;
+      if (parseTypeId(typeIdAst))
         {
           if (session->token_stream->lookAhead() == ')')
             {
               advance();
 
-              if (parseCastExpression(ast->expression))
+              ExpressionAST *castExpressionAst = 0;
+              if (parseCastExpression(castExpressionAst))
                 {
+                  CastExpressionAST *ast = \
CreateNode<CastExpressionAST>(session->mempool); +                  ast->type_id = \
typeIdAst; +                  ast->expression = castExpressionAst;
+                  
                   UPDATE_POS(ast, start, _M_last_valid_token+1);
                   node = ast;
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic