[pypy-svn] r4913 - pypy/branch/src-newobjectmodel/pypy/objspace/std

arigo at codespeak.net arigo at codespeak.net
Fri Jun 4 16:33:32 CEST 2004


Author: arigo
Date: Fri Jun  4 16:33:32 2004
New Revision: 4913

Modified:
   pypy/branch/src-newobjectmodel/pypy/objspace/std/objspace.py
   pypy/branch/src-newobjectmodel/pypy/objspace/std/typetype.py
Log:
Classes get object as a default base.


Modified: pypy/branch/src-newobjectmodel/pypy/objspace/std/objspace.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/objspace/std/objspace.py	(original)
+++ pypy/branch/src-newobjectmodel/pypy/objspace/std/objspace.py	Fri Jun  4 16:33:32 2004
@@ -82,7 +82,7 @@
         self.w_Exception = W_TypeObject(
             self,
             'Exception',
-            [],
+            [self.w_object],
             {'__init__': w_init,
              '__str__': w_str})
         done = {'Exception': self.w_Exception}
@@ -269,6 +269,7 @@
     unwrap  = MultiMethod('unwrap', 1, [])    # returns an unwrapped object
     is_true = MultiMethod('nonzero', 1, [])   # returns an unwrapped bool
     issubtype = MultiMethod('issubtype', 2, [])
+    id = MultiMethod('id', 1, [])
 
     class MM:
         "Container for multimethods."
@@ -293,9 +294,12 @@
 
 # add all regular multimethods to StdObjSpace
 for _name, _symbol, _arity, _specialnames in ObjSpace.MethodTable:
-    if (not hasattr(StdObjSpace.MM, _name) and     # XXX!
-        not isinstance(getattr(StdObjSpace, _name, None), MultiMethod)):
-        setattr(StdObjSpace.MM, _name, MultiMethod(_symbol, _arity, _specialnames))
+    if not hasattr(StdObjSpace.MM, _name):
+        if isinstance(getattr(StdObjSpace, _name, None), MultiMethod):
+            mm = getattr(StdObjSpace, _name)
+        else:
+            mm = MultiMethod(_symbol, _arity, _specialnames)
+        setattr(StdObjSpace.MM, _name, mm)
 
 
 # import the common base W_ObjectObject as well as

Modified: pypy/branch/src-newobjectmodel/pypy/objspace/std/typetype.py
==============================================================================
--- pypy/branch/src-newobjectmodel/pypy/objspace/std/typetype.py	(original)
+++ pypy/branch/src-newobjectmodel/pypy/objspace/std/typetype.py	Fri Jun  4 16:33:32 2004
@@ -15,7 +15,7 @@
         key = space.unwrap(w_key)
         assert isinstance(key, str)
         dict_w[key] = space.getitem(w_dict, w_key)
-    return W_TypeObject(space, name, bases_w, dict_w)
+    return W_TypeObject(space, name, bases_w or [space.w_object], dict_w)
 
 def descr_get__mro__(space, w_type):
     # XXX this should be inside typeobject.py



More information about the Pypy-commit mailing list