Author: Armin Rigo <[email protected]>
Branch: optresult-unroll
Changeset: r79352:cfe3990e4803
Date: 2015-09-01 16:22 +0200
http://bitbucket.org/pypy/pypy/changeset/cfe3990e4803/
Log: Re-enable colors and display of text for variables. Change the
bridge's variable names to match the parent loop's variable names.
diff --git a/rpython/jit/metainterp/compile.py
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -775,6 +775,7 @@
new_loop.original_jitcell_token =
metainterp.resumekey_original_loop_token
inputargs = new_loop.inputargs
if not we_are_translated():
+ self._debug_subinputargs = new_loop.inputargs
self._debug_suboperations = new_loop.operations
propagate_original_jitcell_token(new_loop)
send_bridge_to_backend(metainterp.jitdriver_sd, metainterp.staticdata,
diff --git a/rpython/jit/metainterp/graphpage.py
b/rpython/jit/metainterp/graphpage.py
--- a/rpython/jit/metainterp/graphpage.py
+++ b/rpython/jit/metainterp/graphpage.py
@@ -4,11 +4,21 @@
from rpython.jit.metainterp.resoperation import rop
class SubGraph:
- def __init__(self, suboperations):
- self.suboperations = suboperations
+ def __init__(self, op):
+ self.failargs = op.getfailargs()
+ self.subinputargs = op.getdescr()._debug_subinputargs
+ self.suboperations = op.getdescr()._debug_suboperations
def get_operations(self):
return self.suboperations
- def get_display_text(self):
+ def get_display_text(self, memo):
+ # copy the display of variables in this subgraph (a bridge)
+ # so that they match variables in the parent graph across the
+ # guard failure
+ for failarg, inputarg in zip(self.failargs, self.subinputargs):
+ try:
+ memo[inputarg] = memo[failarg]
+ except KeyError:
+ pass
return None
def display_procedures(procedures, errmsg=None, highlight_procedures={},
metainterp_sd=None):
@@ -17,8 +27,7 @@
for graph, highlight in graphs:
for op in graph.get_operations():
if is_interesting_guard(op):
- graphs.append((SubGraph(op.getdescr()._debug_suboperations),
- highlight))
+ graphs.append((SubGraph(op), highlight))
graphpage = ResOpGraphPage(graphs, errmsg, metainterp_sd)
graphpage.display()
@@ -126,7 +135,7 @@
graphname = self.getgraphname(graphindex)
if self.CLUSTERING:
self.dotgen.emit('subgraph cluster%d {' % graphindex)
- label = graph.get_display_text()
+ label = graph.get_display_text(self.memo)
if label is not None:
colorindex = self.highlight_graphs.get(graph, 0)
if colorindex == 1:
@@ -200,9 +209,10 @@
for op in self.all_operations:
args = op.getarglist() + [op]
for box in args:
- if getattr(box, 'is_box', False):
- boxes[box] = True
+ s = box.repr_short(self.memo)
+ if len(s) > 1 and s[0] in 'irf' and s[1:].isdigit():
+ boxes[box] = s
links = {}
- for box in boxes:
- links[str(box)] = repr(box), self.BOX_COLOR
+ for box, s in boxes.items():
+ links.setdefault(s, (box.repr(self.memo), self.BOX_COLOR))
return links
diff --git a/rpython/jit/metainterp/history.py
b/rpython/jit/metainterp/history.py
--- a/rpython/jit/metainterp/history.py
+++ b/rpython/jit/metainterp/history.py
@@ -506,8 +506,10 @@
def get_operations(self):
return self.operations
- def get_display_text(self): # for graphpage.py
- return self.name + '\n' + repr(self.inputargs)
+ def get_display_text(self, memo): # for graphpage.py
+ return '%s\n[%s]' % (
+ self.name,
+ ', '.join([box.repr(memo) for box in self.inputargs]))
def show(self, errmsg=None):
"NOT_RPYTHON"
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit