[pypy-svn] r17314 - in pypy/dist/pypy/translator: goal tool

pedronis at codespeak.net pedronis at codespeak.net
Wed Sep 7 10:54:37 CEST 2005


Author: pedronis
Date: Wed Sep  7 10:54:36 2005
New Revision: 17314

Modified:
   pypy/dist/pypy/translator/goal/translate_pypy_new.py
   pypy/dist/pypy/translator/tool/pdbplus.py
Log:
PdbPlusShow was referring to the global translator t in the extended commands, attach it as a translator attribute at 
construction time.

make attaching a show into a method.

change translate_pypy_new acccordingly.



Modified: pypy/dist/pypy/translator/goal/translate_pypy_new.py
==============================================================================
--- pypy/dist/pypy/translator/goal/translate_pypy_new.py	(original)
+++ pypy/dist/pypy/translator/goal/translate_pypy_new.py	Wed Sep  7 10:54:36 2005
@@ -265,7 +265,7 @@
         from pypy.translator.tool.pdbplus import PdbPlusShow
         from pypy.translator.tool.pdbplus import run_debugger_in_thread
         
-        pdb_plus_show = PdbPlusShow()
+        pdb_plus_show = PdbPlusShow(t) # need a translator to support extended commands
         
         if got_error:
             import traceback
@@ -300,7 +300,7 @@
                     start, show, stop, cleanup = serv_start, serv_show, serv_stop, serv_cleanup
                 else:
                     start, show, stop, cleanup = run_server()
-                pdb_plus_show.show = show
+                pdb_plus_show.install_show(show)
                 debugger = run_debugger_in_thread(func, args, stop)
                 debugger.start()
                 start()

Modified: pypy/dist/pypy/translator/tool/pdbplus.py
==============================================================================
--- pypy/dist/pypy/translator/tool/pdbplus.py	(original)
+++ pypy/dist/pypy/translator/tool/pdbplus.py	Wed Sep  7 10:54:36 2005
@@ -16,6 +16,10 @@
 
 class PdbPlusShow(pdb.Pdb):
 
+    def __init__(self, translator):
+        pdb.Pdb.__init__(self)
+        self.translator = translator
+
     def post_mortem(self, t):
         self.reset()
         while t.tb_next is not None:
@@ -24,6 +28,9 @@
 
     show = None
 
+    def install_show(self, show):
+        self.show = show
+
     def _show(self, page):
         if not self.show:
             print "*** No display"
@@ -137,7 +144,7 @@
             return
         cls = []
         try:
-            for c in t.annotator.getuserclasses():
+            for c in self.translator.annotator.getuserclasses():
                 if flt(c):
                     cls.append(c)
         except self.GiveUp:
@@ -154,7 +161,7 @@
             return
         funcs = []
         try:
-            for f in t.flowgraphs:
+            for f in self.translator.flowgraphs:
                 if flt(f):
                     funcs.append(f)
         except self.GiveUp:
@@ -168,18 +175,19 @@
 if obj is a function or method, the localized call graph is shown;
 if obj is a class or ClassDef the class definition graph is shown"""            
         from pypy.annotation.classdef import ClassDef
-        from pypy.translator.tool import graphpage            
+        from pypy.translator.tool import graphpage
+        translator = self.translator
         obj = self._getobj(arg)
         if obj is None:
             return
         if hasattr(obj, 'im_func'):
             obj = obj.im_func
-        if obj in t.flowgraphs:
-            page = graphpage.LocalizedCallGraphPage(t, obj)
-        elif obj in getattr(t.annotator, 'getuserclasses', lambda: {})():
-            page = graphpage.ClassDefPage(t, t.annotator.getuserclasses()[obj])
+        if obj in translator.flowgraphs:
+            page = graphpage.LocalizedCallGraphPage(translator, obj)
+        elif obj in getattr(translator.annotator, 'getuserclasses', lambda: {})():
+            page = graphpage.ClassDefPage(translator, translator.annotator.getuserclasses()[obj])
         elif isinstance(obj, ClassDef):
-            page = graphpage.ClassDefPage(t, obj)
+            page = graphpage.ClassDefPage(translator, obj)
         else:
             print "*** Nothing to do"
             return
@@ -200,7 +208,7 @@
         def longname(c):
             return "%s.%s" % (c.__module__, c.__name__) 
         obj.sort(lambda x,y: cmp(longname(x), longname(y)))
-        cls = t.annotator.getuserclasses()
+        cls = self.translator.annotator.getuserclasses()
         flt = self._make_flt(expr)
         if flt is None:
             return
@@ -267,7 +275,7 @@
         obj = self._getobj(arg)
         if obj is None:
             return
-        cls = t.annotator.getuserclasses()
+        cls = self.translator.annotator.getuserclasses()
         if obj not in cls:
             return
         attrs = cls[obj].attrs



More information about the Pypy-commit mailing list