summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Builder.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-05-01 19:12:23 (GMT)
committerSteven Knight <knight@baldmt.com>2004-05-01 19:12:23 (GMT)
commit28ad1a68eea6bb49178a9837a95bcba973ed015d (patch)
tree2b352653ffda1d21dbdf1eee417a16eae66e2b4a /src/engine/SCons/Builder.py
parenta293ba1834e12a50ec1f79c5aa746a182285f60f (diff)
downloadSCons-28ad1a68eea6bb49178a9837a95bcba973ed015d.zip
SCons-28ad1a68eea6bb49178a9837a95bcba973ed015d.tar.gz
SCons-28ad1a68eea6bb49178a9837a95bcba973ed015d.tar.bz2
Performance improvement: memo-ize Node.FS string values when appropriate.
Diffstat (limited to 'src/engine/SCons/Builder.py')
-rw-r--r--src/engine/SCons/Builder.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index 5971056..4bca1c8 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -667,9 +667,18 @@ class MultiStepBuilder(BuilderBase):
src_suffixes = self.src_suffixes(env)
for snode in slist:
- base, ext = self.splitext(str(snode))
- if sdict.has_key(ext):
- tgt = sdict[ext]._execute(env, None, snode, overwarn)
+ try:
+ get_suffix = snode.get_suffix
+ except AttributeError:
+ ext = self.splitext(str(snode))
+ else:
+ ext = get_suffix()
+ try:
+ subsidiary_builder = sdict[ext]
+ except KeyError:
+ final_sources.append(snode)
+ else:
+ tgt = subsidiary_builder._execute(env, None, snode, overwarn)
# Only supply the builder with sources it is capable
# of building.
if SCons.Util.is_List(tgt):
@@ -680,8 +689,6 @@ class MultiStepBuilder(BuilderBase):
final_sources.append(tgt)
else:
final_sources.extend(tgt)
- else:
- final_sources.append(snode)
return BuilderBase._execute(self, env, target, final_sources, overwarn)