[pypy-svn] r57103 - pypy/branch/isinstance-refactor/pypy/module/__builtin__

arigo at codespeak.net arigo at codespeak.net
Fri Aug 8 16:39:42 CEST 2008


Author: arigo
Date: Fri Aug  8 16:39:42 2008
New Revision: 57103

Modified:
   pypy/branch/isinstance-refactor/pypy/module/__builtin__/interp_classobj.py
Log:
Minor performance improvement, possibly.


Modified: pypy/branch/isinstance-refactor/pypy/module/__builtin__/interp_classobj.py
==============================================================================
--- pypy/branch/isinstance-refactor/pypy/module/__builtin__/interp_classobj.py	(original)
+++ pypy/branch/isinstance-refactor/pypy/module/__builtin__/interp_classobj.py	Fri Aug  8 16:39:42 2008
@@ -325,11 +325,6 @@
 
 
     def getattr(self, space, w_name, exc=True):
-        name = space.str_w(w_name)
-        if name == "__dict__":
-            return self.w_dict
-        elif name == "__class__":
-            return self.w_class
         w_result = space.finditem(self.w_dict, w_name)
         if w_result is not None:
             return w_result
@@ -339,7 +334,7 @@
                 raise OperationError(
                     space.w_AttributeError,
                     space.wrap("%s instance has no attribute %s" % (
-                        self.w_class.name, name)))
+                        self.w_class.name, space.str_w(w_name))))
             else:
                 return None
         w_descr_get = space.lookup(w_value, '__get__')
@@ -348,7 +343,12 @@
         return space.call_function(w_descr_get, w_value, self, self.w_class)
 
     def descr_getattribute(self, space, w_attr):
-        #import pdb; pdb.set_trace()
+        name = space.str_w(w_attr)
+        if len(name) >= 8 and name[0] == '_':
+            if name == "__dict__":
+                return self.w_dict
+            elif name == "__class__":
+                return self.w_class
         try:
             return self.getattr(space, w_attr)
         except OperationError, e:



More information about the Pypy-commit mailing list