[pypy-commit] lang-smalltalk default: added skipping to the smalltalk-debugger-functionality
lwassermann
noreply at buildbot.pypy.org
Thu May 23 16:44:57 CEST 2013
Author: Lars Wassermann <lars.wassermann at gmail.com>
Branch:
Changeset: r411:edb22d518256
Date: 2013-05-23 14:45 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/edb22d518256/
Log: added skipping to the smalltalk-debugger-functionality
diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -870,8 +870,12 @@
def stepping_debugger_send(original):
"""When interp.message_stepping is True, we halt on every call of ContextPartShadow._sendSelector.
The method is not called for bytecode message sends (see constants.SPECIAL_SELECTORS)"""
- def meth(self, w_selector, argcount, interp,
+ def meth(s_context, w_selector, argcount, interp,
receiver, receiverclassshadow):
+ options = [False]
+ def skip(): options[0] = True; print 'skipping #%s' % w_selector.as_string()
+ def pstack(): print s_context.print_stack()
+ def thisContext(): print s_context
if interp.message_stepping:
if argcount == 0:
print "-> %s %s" % (receiver.as_repr_string(),
@@ -879,13 +883,21 @@
elif argcount == 1:
print "-> %s %s %s" % (receiver.as_repr_string(),
w_selector.as_string(),
- self.peek(0).as_repr_string())
+ s_context.peek(0).as_repr_string())
else:
print "-> %s %s %r" % (receiver.as_repr_string(),
w_selector.as_string(),
- [self.peek(argcount-1-i) for i in range(argcount)])
+ [s_context.peek(argcount-1-i) for i in range(argcount)])
import pdb; pdb.set_trace()
- return original(self, w_selector, argcount, interp, receiver, receiverclassshadow)
+ if options[0]:
+ m_s = interp.message_stepping
+ interp.message_stepping = False
+ try:
+ return original(s_context, w_selector, argcount, interp, receiver, receiverclassshadow)
+ finally:
+ interp.message_stepping = m_s
+ else:
+ return original(s_context, w_selector, argcount, interp, receiver, receiverclassshadow)
return meth
ContextPartShadow._sendSelector = stepping_debugger_send(ContextPartShadow._sendSelector)
More information about the pypy-commit
mailing list