[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