summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/Debug.py
diff options
context:
space:
mode:
authorDirk Baechle <dl9obn@darc.de>2015-02-26 23:44:19 (GMT)
committerDirk Baechle <dl9obn@darc.de>2015-02-26 23:44:19 (GMT)
commit354388a26c7ff2ed69e4e34f41880e0e1bfb0cb1 (patch)
treee4e8f3ef044c39a930235a39bb7301d35b0300ff /src/engine/SCons/Debug.py
parent8447a9187ac80c0a7e980510154542b49577ddaa (diff)
downloadSCons-354388a26c7ff2ed69e4e34f41880e0e1bfb0cb1.zip
SCons-354388a26c7ff2ed69e4e34f41880e0e1bfb0cb1.tar.gz
SCons-354388a26c7ff2ed69e4e34f41880e0e1bfb0cb1.tar.bz2
- switching Node class and NodeInfo/Binfo to using slots
- memoizer subsystem now uses decorators instead of the metaclass approach
Diffstat (limited to 'src/engine/SCons/Debug.py')
-rw-r--r--src/engine/SCons/Debug.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/engine/SCons/Debug.py b/src/engine/SCons/Debug.py
index 9974039..b47c24c 100644
--- a/src/engine/SCons/Debug.py
+++ b/src/engine/SCons/Debug.py
@@ -34,6 +34,7 @@ import os
import sys
import time
import weakref
+import inspect
# Global variable that gets set to 'True' by the Main script,
# when the creation of class instances should get tracked.
@@ -46,7 +47,12 @@ def logInstanceCreation(instance, name=None):
name = instance.__class__.__name__
if name not in tracked_classes:
tracked_classes[name] = []
- tracked_classes[name].append(weakref.ref(instance))
+ if hasattr(instance, '__dict__'):
+ tracked_classes[name].append(weakref.ref(instance))
+ else:
+ # weakref doesn't seem to work when the instance
+ # contains only slots...
+ tracked_classes[name].append(instance)
def string_to_classes(s):
if s == '*':
@@ -66,7 +72,10 @@ def listLoggedInstances(classes, file=sys.stdout):
for classname in string_to_classes(classes):
file.write('\n%s:\n' % classname)
for ref in tracked_classes[classname]:
- obj = ref()
+ if inspect.isclass(ref):
+ obj = ref()
+ else:
+ obj = ref
if obj is not None:
file.write(' %s\n' % repr(obj))