[pypy-commit] pypy default: Optimized calling re_match.groups() where re_match's regexp is known
alex_gaynor
noreply at buildbot.pypy.org
Sat Dec 1 20:52:59 CET 2012
Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch:
Changeset: r59183:7ea64ec55f0c
Date: 2012-12-01 11:52 -0800
http://bitbucket.org/pypy/pypy/changeset/7ea64ec55f0c/
Log: Optimized calling re_match.groups() where re_match's regexp is known
diff --git a/pypy/module/_sre/interp_sre.py b/pypy/module/_sre/interp_sre.py
--- a/pypy/module/_sre/interp_sre.py
+++ b/pypy/module/_sre/interp_sre.py
@@ -58,11 +58,14 @@
mark = mark.prev
return result
+
+ at jit.look_inside_iff(lambda space, ctx, fmarks, num_groups, w_default: jit.isconstant(num_groups))
def allgroups_w(space, ctx, fmarks, num_groups, w_default):
- grps = [slice_w(space, ctx, fmarks[i*2], fmarks[i*2+1], w_default)
+ grps = [slice_w(space, ctx, fmarks[i * 2], fmarks[i * 2 + 1], w_default)
for i in range(num_groups)]
return space.newtuple(grps)
+
def import_re(space):
w_builtin = space.getbuiltinmodule('__builtin__')
w_import = space.getattr(w_builtin, space.wrap("__import__"))
@@ -85,7 +88,7 @@
# SRE_Pattern class
class W_SRE_Pattern(Wrappable):
- _immutable_fields_ = ["code", "flags"]
+ _immutable_fields_ = ["code", "flags", "num_groups"]
def cannot_copy_w(self):
space = self.space
More information about the pypy-commit
mailing list