diff options
| author | Ludwig Hähne <pankrat@tigris.org> | 2009-02-09 21:17:56 (GMT) |
|---|---|---|
| committer | Ludwig Hähne <pankrat@tigris.org> | 2009-02-09 21:17:56 (GMT) |
| commit | 09bbbf9c75c93b3cf73ef3cca2d996fc131cc650 (patch) | |
| tree | 6440df34ae37d7c67c83e4196d73895dd6fc35fd /src/engine/SCons/Scanner | |
| parent | 1e725d35dba7295ec9ee660f60f643abe0308fb3 (diff) | |
| download | SCons-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__.py | 9 |
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)) |
