[pypy-commit] pypy reverse-debugger: fixes
arigo
pypy.commits at gmail.com
Thu Jun 23 05:25:49 EDT 2016
Author: Armin Rigo <arigo at tunes.org>
Branch: reverse-debugger
Changeset: r85351:583e7d930dbd
Date: 2016-06-23 11:26 +0200
http://bitbucket.org/pypy/pypy/changeset/583e7d930dbd/
Log: fixes
diff --git a/rpython/translator/revdb/process.py b/rpython/translator/revdb/process.py
--- a/rpython/translator/revdb/process.py
+++ b/rpython/translator/revdb/process.py
@@ -294,8 +294,12 @@
if self.all_breakpoints.is_empty() or ignore_breakpoints:
self.jump_in_time(initial_time - steps)
else:
+ if self.all_breakpoints.watchvalues:
+ first_steps = 97 # use smaller steps, because that's costly
+ else:
+ first_steps = 957
self._backward_search_forward(
- search_start_time = initial_time - 957,
+ search_start_time = initial_time - first_steps,
search_stop_time = initial_time - 1,
search_go_on_until_time = initial_time - steps)
@@ -318,12 +322,14 @@
search_stop_time = search_start_time
search_start_time -= time_range_to_search * 3
- def update_breakpoints(self):
+ def _update_watchpoints_uids(self):
if self.all_breakpoints.watchuids:
uids = set()
uids.update(*self.all_breakpoints.watchuids.values())
self.attach_printed_objects(uids, watch_env=True)
+ def update_breakpoints(self):
+ self._update_watchpoints_uids()
cmp = self.all_breakpoints.compare(self.active.breakpoints_cache)
#print 'compare:', cmp, self.all_breakpoints.watchvalues
if cmp == 2:
@@ -359,6 +365,7 @@
self.active.breakpoints_cache = self.all_breakpoints.duplicate()
def update_watch_values(self):
+ self._update_watchpoints_uids()
seen = set()
for num, name in self.all_breakpoints.num2name.items():
if name.startswith('W'):
@@ -447,21 +454,22 @@
breakpoint_mode='i')
assert self.active.printed_objects.issuperset(uids)
- def nids_to_uids(self, nids):
+ def nids_to_uids(self, nids, skip_futures=False):
uids = []
for nid in set(nids):
try:
uid = self.all_printed_objects_lst[nid]
except IndexError:
continue
- if uid >= self.get_currently_created_objects():
+ if skip_futures and uid >= self.get_currently_created_objects():
print >> sys.stderr, (
"note: '$%d' refers to an object that is "
"only created later in time" % nid)
+ continue
uids.append(uid)
return uids
- def attach_printed_objects(self, uids, watch_env=False):
+ def attach_printed_objects(self, uids, watch_env):
for uid in uids:
nid = self.all_printed_objects[uid]
self.active.send(Message(CMD_ATTACHID, nid, uid, int(watch_env)))
@@ -472,11 +480,11 @@
"""
uids = []
if nids:
- uids = self.nids_to_uids(nids)
+ uids = self.nids_to_uids(nids, skip_futures=True)
self.ensure_printed_objects(uids)
#
self.active.tainted = True
- self.attach_printed_objects(uids)
+ self.attach_printed_objects(uids, watch_env=False)
self.active.send(Message(CMD_PRINT, extra=expression))
self.active.print_text_answer(pgroup=self)
More information about the pypy-commit
mailing list