[pypy-svn] r78019 - in pypy/branch/leak-finder: dotviewer pypy/jit/codewriter/test pypy/jit/metainterp pypy/rlib/rsre pypy/rlib/rsre/test
arigo at codespeak.net
arigo at codespeak.net
Sat Oct 16 17:47:50 CEST 2010
Author: arigo
Date: Sat Oct 16 17:47:48 2010
New Revision: 78019
Removed:
pypy/branch/leak-finder/pypy/rlib/rsre/test/conftest.py
pypy/branch/leak-finder/pypy/rlib/rsre/test/test_zjit.py
Modified:
pypy/branch/leak-finder/dotviewer/drawgraph.py
pypy/branch/leak-finder/pypy/jit/codewriter/test/test_jtransform.py
pypy/branch/leak-finder/pypy/jit/metainterp/graphpage.py
pypy/branch/leak-finder/pypy/jit/metainterp/resoperation.py
pypy/branch/leak-finder/pypy/jit/metainterp/warmspot.py
pypy/branch/leak-finder/pypy/rlib/rsre/rsre_core.py
Log:
Oups! Wrong branch. Thanks agaynor.
Modified: pypy/branch/leak-finder/dotviewer/drawgraph.py
==============================================================================
--- pypy/branch/leak-finder/dotviewer/drawgraph.py (original)
+++ pypy/branch/leak-finder/dotviewer/drawgraph.py Sat Oct 16 17:47:48 2010
@@ -423,43 +423,20 @@
else:
for line in lines:
raw_line = line.replace('\\l','').replace('\r','') or ' '
- if '\f' in raw_line: # grayed out parts of the line
- imgs = []
- graytext = True
- h = 16
- w_total = 0
- for linepart in raw_line.split('\f'):
- graytext = not graytext
- if not linepart.strip():
- continue
- if graytext:
- fgcolor = (128, 160, 160)
- else:
- fgcolor = (0, 0, 0)
- img = TextSnippet(self, linepart, fgcolor, bgcolor)
- imgs.append((w_total, img))
- w, h = img.get_size()
- w_total += w
- if w_total > wmax: wmax = w_total
- def cmd(imgs=imgs, y=hmax):
- for x, img in imgs:
- img.draw(xleft+x, ytop+y)
+ img = TextSnippet(self, raw_line, (0, 0, 0), bgcolor)
+ w, h = img.get_size()
+ if w>wmax: wmax = w
+ if raw_line.strip():
+ if line.endswith('\\l'):
+ def cmd(img=img, y=hmax):
+ img.draw(xleft, ytop+y)
+ elif line.endswith('\r'):
+ def cmd(img=img, y=hmax, w=w):
+ img.draw(xright-w, ytop+y)
+ else:
+ def cmd(img=img, y=hmax, w=w):
+ img.draw(xcenter-w//2, ytop+y)
commands.append(cmd)
- else:
- img = TextSnippet(self, raw_line, (0, 0, 0), bgcolor)
- w, h = img.get_size()
- if w>wmax: wmax = w
- if raw_line.strip():
- if line.endswith('\\l'):
- def cmd(img=img, y=hmax):
- img.draw(xleft, ytop+y)
- elif line.endswith('\r'):
- def cmd(img=img, y=hmax, w=w):
- img.draw(xright-w, ytop+y)
- else:
- def cmd(img=img, y=hmax, w=w):
- img.draw(xcenter-w//2, ytop+y)
- commands.append(cmd)
hmax += h
#hmax += 8
Modified: pypy/branch/leak-finder/pypy/jit/codewriter/test/test_jtransform.py
==============================================================================
--- pypy/branch/leak-finder/pypy/jit/codewriter/test/test_jtransform.py (original)
+++ pypy/branch/leak-finder/pypy/jit/codewriter/test/test_jtransform.py Sat Oct 16 17:47:48 2010
@@ -687,40 +687,6 @@
assert block.operations[1].result is None
assert block.exits[0].args == [v1]
-def test_jit_merge_point_1():
- class FakeJitDriverSD:
- index = 42
- class jitdriver:
- greens = ['green1', 'green2', 'voidgreen3']
- reds = ['red1', 'red2', 'voidred3']
- jd = FakeJitDriverSD()
- v1 = varoftype(lltype.Signed)
- v2 = varoftype(lltype.Signed)
- vvoid1 = varoftype(lltype.Void)
- v3 = varoftype(lltype.Signed)
- v4 = varoftype(lltype.Signed)
- vvoid2 = varoftype(lltype.Void)
- v5 = varoftype(lltype.Void)
- op = SpaceOperation('jit_marker',
- [Constant('jit_merge_point', lltype.Void),
- Constant(jd.jitdriver, lltype.Void),
- v1, v2, vvoid1, v3, v4, vvoid2], v5)
- tr = Transformer()
- tr.portal_jd = jd
- oplist = tr.rewrite_operation(op)
- assert len(oplist) == 6
- assert oplist[0].opname == '-live-'
- assert oplist[1].opname == 'int_guard_value'
- assert oplist[1].args == [v1]
- assert oplist[2].opname == '-live-'
- assert oplist[3].opname == 'int_guard_value'
- assert oplist[3].args == [v2]
- assert oplist[4].opname == 'jit_merge_point'
- assert oplist[4].args[0].value == 42
- assert list(oplist[4].args[1]) == [v1, v2]
- assert list(oplist[4].args[4]) == [v3, v4]
- assert oplist[5].opname == '-live-'
-
def test_int_abs():
v1 = varoftype(lltype.Signed)
v2 = varoftype(lltype.Signed)
Modified: pypy/branch/leak-finder/pypy/jit/metainterp/graphpage.py
==============================================================================
--- pypy/branch/leak-finder/pypy/jit/metainterp/graphpage.py (original)
+++ pypy/branch/leak-finder/pypy/jit/metainterp/graphpage.py Sat Oct 16 17:47:48 2010
@@ -153,7 +153,7 @@
opindex = opstartindex
while True:
op = operations[opindex]
- lines.append(op.repr(graytext=True))
+ lines.append(repr(op))
if is_interesting_guard(op):
tgt = op.getdescr()._debug_suboperations[0]
tgt_g, tgt_i = self.all_operations[tgt]
Modified: pypy/branch/leak-finder/pypy/jit/metainterp/resoperation.py
==============================================================================
--- pypy/branch/leak-finder/pypy/jit/metainterp/resoperation.py (original)
+++ pypy/branch/leak-finder/pypy/jit/metainterp/resoperation.py Sat Oct 16 17:47:48 2010
@@ -93,7 +93,7 @@
def __repr__(self):
return self.repr()
- def repr(self, graytext=False):
+ def repr(self):
# RPython-friendly version
if self.result is not None:
sres = '%s = ' % (self.result,)
@@ -101,8 +101,6 @@
sres = ''
if self.name:
prefix = "%s:%s " % (self.name, self.pc)
- if graytext:
- prefix = "\f%s\f" % prefix
else:
prefix = ""
args = self.getarglist()
Modified: pypy/branch/leak-finder/pypy/jit/metainterp/warmspot.py
==============================================================================
--- pypy/branch/leak-finder/pypy/jit/metainterp/warmspot.py (original)
+++ pypy/branch/leak-finder/pypy/jit/metainterp/warmspot.py Sat Oct 16 17:47:48 2010
@@ -211,9 +211,9 @@
"there are multiple jit_merge_points with the same jitdriver"
def split_graph_and_record_jitdriver(self, graph, block, pos):
- op = block.operations[pos]
jd = JitDriverStaticData()
- jd._jit_merge_point_pos = (graph, op)
+ jd._jit_merge_point_pos = (graph, block, pos)
+ op = block.operations[pos]
args = op.args[2:]
s_binding = self.translator.annotator.binding
jd._portal_args_s = [s_binding(v) for v in args]
@@ -457,7 +457,8 @@
self.make_args_specification(jd)
def make_args_specification(self, jd):
- graph, op = jd._jit_merge_point_pos
+ graph, block, index = jd._jit_merge_point_pos
+ op = block.operations[index]
greens_v, reds_v = support.decode_hp_hint_args(op)
ALLARGS = [v.concretetype for v in (greens_v + reds_v)]
jd._green_args_spec = [v.concretetype for v in greens_v]
@@ -708,14 +709,8 @@
# ____________________________________________________________
# Now mutate origportalgraph to end with a call to portal_runner_ptr
#
- _, op = jd._jit_merge_point_pos
- for origblock in origportalgraph.iterblocks():
- if op in origblock.operations:
- break
- else:
- assert False, "lost the operation %r in the graph %r" % (
- op, origportalgraph)
- origindex = origblock.operations.index(op)
+ _, origblock, origindex = jd._jit_merge_point_pos
+ op = origblock.operations[origindex]
assert op.opname == 'jit_marker'
assert op.args[0].value == 'jit_merge_point'
greens_v, reds_v = support.decode_hp_hint_args(op)
Modified: pypy/branch/leak-finder/pypy/rlib/rsre/rsre_core.py
==============================================================================
--- pypy/branch/leak-finder/pypy/rlib/rsre/rsre_core.py (original)
+++ pypy/branch/leak-finder/pypy/rlib/rsre/rsre_core.py Sat Oct 16 17:47:48 2010
@@ -4,7 +4,6 @@
from pypy.rlib.rsre import rsre_char
from pypy.tool.sourcetools import func_with_new_name
from pypy.rlib.objectmodel import we_are_translated
-from pypy.rlib import jit
OPCODE_FAILURE = 0
@@ -57,18 +56,15 @@
_seen_specname[specname] = True
# Install a copy of the function under the name '_spec_funcname' in each
# concrete subclass
- specialized_methods = []
for prefix, concreteclass in [('str', StrMatchContext),
('uni', UnicodeMatchContext)]:
newfunc = func_with_new_name(func, prefix + specname)
assert not hasattr(concreteclass, specname)
setattr(concreteclass, specname, newfunc)
- specialized_methods.append(newfunc)
# Return a dispatcher function, specialized on the exact type of 'ctx'
def dispatch(ctx, *args):
return getattr(ctx, specname)(*args)
dispatch._annspecialcase_ = 'specialize:argtype(0)'
- dispatch._specialized_methods_ = specialized_methods
return dispatch
# ____________________________________________________________
@@ -79,7 +75,6 @@
class AbstractMatchContext(object):
"""Abstract base class"""
- _immutable_fields_ = ['pattern[*]', 'flags']
match_start = 0
match_end = 0
match_marks = None
@@ -243,7 +238,6 @@
self.start_ptr = ptr
self.start_marks = marks
- @jit.unroll_safe
def find_first_result(self, ctx):
ppos = self.ppos
while ctx.pat(ppos):
@@ -256,8 +250,6 @@
find_next_result = find_first_result
class RepeatOneMatchResult(MatchResult):
- jitdriver = jit.JitDriver(greens=['nextppos', 'pattern'],
- reds=['ptr', 'self', 'ctx'])
def __init__(self, nextppos, minptr, ptr, marks):
self.nextppos = nextppos
@@ -267,18 +259,8 @@
def find_first_result(self, ctx):
ptr = self.start_ptr
- nextppos = self.nextppos
while ptr >= self.minptr:
- #
- pattern = ctx.pattern
- self.jitdriver.can_enter_jit(self=self, ptr=ptr, ctx=ctx,
- nextppos=nextppos, pattern=pattern)
- self.jitdriver.jit_merge_point(self=self, ptr=ptr, ctx=ctx,
- nextppos=nextppos, pattern=pattern)
- if jit.we_are_jitted():
- ctx.pattern = pattern
- #
- result = sre_match(ctx, nextppos, ptr, self.start_marks)
+ result = sre_match(ctx, self.nextppos, ptr, self.start_marks)
ptr -= 1
if result is not None:
self.subresult = result
@@ -288,8 +270,6 @@
class MinRepeatOneMatchResult(MatchResult):
- jitdriver = jit.JitDriver(greens=['nextppos', 'ppos3', 'pattern'],
- reds=['ptr', 'self', 'ctx'])
def __init__(self, nextppos, ppos3, maxptr, ptr, marks):
self.nextppos = nextppos
@@ -300,39 +280,27 @@
def find_first_result(self, ctx):
ptr = self.start_ptr
- nextppos = self.nextppos
- ppos3 = self.ppos3
while ptr <= self.maxptr:
- #
- pattern = ctx.pattern
- self.jitdriver.can_enter_jit(self=self, ptr=ptr, ctx=ctx,
- nextppos=nextppos, pattern=pattern,
- ppos3=ppos3)
- self.jitdriver.jit_merge_point(self=self, ptr=ptr, ctx=ctx,
- nextppos=nextppos, pattern=pattern,
- ppos3=ppos3)
- if jit.we_are_jitted():
- ctx.pattern = pattern
- #
- result = sre_match(ctx, nextppos, ptr, self.start_marks)
+ result = sre_match(ctx, self.nextppos, ptr, self.start_marks)
if result is not None:
self.subresult = result
self.start_ptr = ptr
return self
- if not self.next_char_ok(ctx, ptr, ppos3):
+ if not self.next_char_ok(ctx, ptr):
break
ptr += 1
def find_next_result(self, ctx):
ptr = self.start_ptr
- if not self.next_char_ok(ctx, ptr, self.ppos3):
+ if not self.next_char_ok(ctx, ptr):
return
self.start_ptr = ptr + 1
return self.find_first_result(ctx)
- def next_char_ok(self, ctx, ptr, ppos):
+ def next_char_ok(self, ctx, ptr):
if ptr == ctx.end:
return False
+ ppos = self.ppos3
op = ctx.pat(ppos)
for op1, (checkerfn, _) in unroll_char_checker:
if op1 == op:
@@ -461,7 +429,6 @@
# ____________________________________________________________
@specializectx
- at jit.unroll_safe
def sre_match(ctx, ppos, ptr, marks):
"""Returns either None or a MatchResult object. Usually we only need
the first result, but there is the case of REPEAT...UNTIL where we
More information about the Pypy-commit
mailing list