[pypy-commit] pypy default: add a jitdriver for space.contains, fixes issue1327

bdkearns noreply at buildbot.pypy.org
Mon Feb 18 07:23:18 CET 2013


Author: Brian Kearns <bdkearns at gmail.com>
Branch: 
Changeset: r61398:7a0d27055cb4
Date: 2013-02-18 01:14 -0500
http://bitbucket.org/pypy/pypy/changeset/7a0d27055cb4/

Log:	add a jitdriver for space.contains, fixes issue1327

diff --git a/pypy/objspace/descroperation.py b/pypy/objspace/descroperation.py
--- a/pypy/objspace/descroperation.py
+++ b/pypy/objspace/descroperation.py
@@ -7,6 +7,7 @@
 from rpython.tool.sourcetools import compile2, func_with_new_name
 from pypy.module.__builtin__.interp_classobj import W_InstanceObject
 from rpython.rlib.objectmodel import specialize
+from rpython.rlib import jit
 
 def object_getattribute(space):
     "Utility that returns the app-level descriptor object.__getattribute__."
@@ -118,6 +119,9 @@
     def descr__init__(space, w_obj, __args__):
         pass
 
+contains_jitdriver = jit.JitDriver(name='contains',
+        greens=['w_type'], reds='auto')
+
 class DescrOperation(object):
     _mixin_ = True
 
@@ -421,7 +425,9 @@
 
     def _contains(space, w_container, w_item):
         w_iter = space.iter(w_container)
+        w_type = space.type(w_iter)
         while 1:
+            contains_jitdriver.jit_merge_point(w_type=w_type)
             try:
                 w_next = space.next(w_iter)
             except OperationError, e:


More information about the pypy-commit mailing list