[pypy-commit] pypy remove-tuple-smm: Add a non-specialized code path to W_SpecialisedTupleObject's descr_eq().

Manuel Jacob noreply at buildbot.pypy.org
Wed May 22 10:18:58 CEST 2013


Author: Manuel Jacob
Branch: remove-tuple-smm
Changeset: r64424:f9d3d3fb8ad9
Date: 2013-05-22 10:16 +0200
http://bitbucket.org/pypy/pypy/changeset/f9d3d3fb8ad9/

Log:	Add a non-specialized code path to W_SpecialisedTupleObject's
	descr_eq().

diff --git a/pypy/objspace/std/specialisedtupleobject.py b/pypy/objspace/std/specialisedtupleobject.py
--- a/pypy/objspace/std/specialisedtupleobject.py
+++ b/pypy/objspace/std/specialisedtupleobject.py
@@ -74,9 +74,23 @@
             return space.wrap(intmask(x))
 
         def descr_eq(self, space, w_other):
+            if not isinstance(w_other, W_AbstractTupleObject):
+                return space.w_NotImplementedError
             if not isinstance(w_other, cls):
-                # if we are not comparing same types, give up
-                return space.w_NotImplemented
+                if nValues != w_other.length():
+                    return space.w_False
+                for i in iter_n:
+                    myval    = getattr(self,    'value%s' % i)
+                    otherval = w_other.getitem(space, i)
+                    if typetuple[i] == object:
+                        myval_wrapped = myval
+                    else:
+                        myval_wrapped = space.wrap(myval)
+                    if not space.eq_w(myval_wrapped, otherval):
+                        return space.w_False
+                else:
+                    return space.w_True
+
             for i in iter_n:
                 myval    = getattr(self,    'value%s' % i)
                 otherval = getattr(w_other, 'value%s' % i)


More information about the pypy-commit mailing list