summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Scanner
diff options
context:
space:
mode:
authorLudwig Hähne <pankrat@tigris.org>2009-02-09 21:17:56 (GMT)
committerLudwig Hähne <pankrat@tigris.org>2009-02-09 21:17:56 (GMT)
commit09bbbf9c75c93b3cf73ef3cca2d996fc131cc650 (patch)
tree6440df34ae37d7c67c83e4196d73895dd6fc35fd /src/engine/SCons/Scanner
parent1e725d35dba7295ec9ee660f60f643abe0308fb3 (diff)
downloadSCons-09bbbf9c75c93b3cf73ef3cca2d996fc131cc650.zip
SCons-09bbbf9c75c93b3cf73ef3cca2d996fc131cc650.tar.gz
SCons-09bbbf9c75c93b3cf73ef3cca2d996fc131cc650.tar.bz2
Issue 2181: intern file-names to save memory
Diffstat (limited to 'src/engine/SCons/Scanner')
-rw-r--r--src/engine/SCons/Scanner/__init__.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/engine/SCons/Scanner/__init__.py b/src/engine/SCons/Scanner/__init__.py
index 0ba94b7..6863aa1 100644
--- a/src/engine/SCons/Scanner/__init__.py
+++ b/src/engine/SCons/Scanner/__init__.py
@@ -356,7 +356,12 @@ class Classic(Current):
includes = node.includes
else:
includes = self.find_include_names (node)
- node.includes = includes
+ # Intern the names of the include files. Saves some memory
+ # if the same header is included many times.
+ try:
+ node.includes = map(intern, includes)
+ except TypeError:
+ node.includes = includes
# This is a hand-coded DSU (decorate-sort-undecorate, or
# Schwartzian transform) pattern. The sort key is the raw name
@@ -400,7 +405,7 @@ class ClassicCPP(Classic):
n = SCons.Node.FS.find_file(include[1], paths)
- return n, include[1]
+ return n, intern(include[1])
def sort_key(self, include):
return SCons.Node.FS._my_normcase(string.join(include))