Hi Alex,

I don't really understand the first change of this commit. Why is it a
good idea to change the groupdict of the re parser to be a module dict?
There are supposed to be "not too many" module dicts, because they are
promoted on read. So I don't get why this is a sensible change.

Would you please add a comment to the point where the module dict is
instantiated why this is a good idea, and ideally also a test_pypy_c
test.

Cheers,

Carl Friedrich

On 01/05/2013 03:55 AM, alex_gaynor wrote:
Author: Alex Gaynor <alex.gay...@gmail.com>
Branch:
Changeset: r59708:3d2ff1e85bf5
Date: 2013-01-04 18:55 -0800
http://bitbucket.org/pypy/pypy/changeset/3d2ff1e85bf5/

Log:    Optimize match.group('name') by making it a module dict.

diff --git a/lib-python/2.7/sre_parse.py b/lib-python/2.7/sre_parse.py
--- a/lib-python/2.7/sre_parse.py
+++ b/lib-python/2.7/sre_parse.py
@@ -16,6 +16,12 @@

  from sre_constants import *

+try:
+    from __pypy__ import newdict
+except ImportError:@
+    def newdict(tp):
+        return {}
+
  SPECIAL_CHARS = ".\\[{()*+?^$|"
  REPEAT_CHARS = "*+?{"

@@ -68,7 +74,7 @@
          self.flags = 0
          self.open = []
          self.groups = 1
-        self.groupdict = {}
+        self.groupdict = newdict("module")
      def opengroup(self, name=None):
          gid = self.groups
          self.groups = gid + 1
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
@@ -90,7 +90,7 @@
  # SRE_Pattern class

  class W_SRE_Pattern(Wrappable):
-    _immutable_fields_ = ["code", "flags", "num_groups"]
+    _immutable_fields_ = ["code", "flags", "num_groups", "w_indexgroup"]

      def cannot_copy_w(self):
          space = self.space
_______________________________________________
pypy-commit mailing list
pypy-com...@python.org
http://mail.python.org/mailman/listinfo/pypy-commit


_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
http://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to