[pypy-svn] r32082 - pypy/branch/more-gckinds/pypy/rpython/lltypesystem

mwh at codespeak.net mwh at codespeak.net
Fri Sep 8 14:10:39 CEST 2006


Author: mwh
Date: Fri Sep  8 14:10:37 2006
New Revision: 32082

Modified:
   pypy/branch/more-gckinds/pypy/rpython/lltypesystem/lltype.py
   pypy/branch/more-gckinds/pypy/rpython/lltypesystem/rclass.py
Log:
address some comments from arigo & pedronis


Modified: pypy/branch/more-gckinds/pypy/rpython/lltypesystem/lltype.py
==============================================================================
--- pypy/branch/more-gckinds/pypy/rpython/lltypesystem/lltype.py	(original)
+++ pypy/branch/more-gckinds/pypy/rpython/lltypesystem/lltype.py	Fri Sep  8 14:10:37 2006
@@ -919,12 +919,6 @@
     def __hash__(self):
         raise TypeError("pointer objects are not hashable")
 
-    def __nonzero__(self):
-        try:
-            return self._obj is not None
-        except DelayedPointer:
-            return True    # assume it's not a delayed null
-
     def __getattr__(self, field_name): # ! can only return basic or ptr !
         if isinstance(self._T, Struct):
             if field_name in self._T._flds:
@@ -1059,6 +1053,11 @@
         assert not self._weak
         self._setobj(other._obj, other._solid)
 
+    def __nonzero__(self):
+        try:
+            return self._obj is not None
+        except DelayedPointer:
+            return True    # assume it's not a delayed null
 
     # _setobj, _getobj and _obj0 are really _internal_ implementations details of _ptr,
     # use _obj if necessary instead !
@@ -1154,7 +1153,7 @@
         """XXX A nice docstring here"""
         T = typeOf(val)
         if isinstance(T, ContainerType):
-            if T._gckind == 'raw':
+            if self._T._gckind == 'gc' and T._gckind == 'raw':
                 val = _interior_ptr(T, self._obj, [offset])
             else:
                 val = _ptr(Ptr(T), val, solid=self._solid)
@@ -1175,6 +1174,9 @@
         self._set_parent(_parent)
         self._set_offsets(_offsets)
 
+    def __nonzero__(self):
+        raise RuntimeError, "do not test an interior pointer for nullity"
+
     def _get_obj(self):
         ob = self._parent
         if ob is None:

Modified: pypy/branch/more-gckinds/pypy/rpython/lltypesystem/rclass.py
==============================================================================
--- pypy/branch/more-gckinds/pypy/rpython/lltypesystem/rclass.py	(original)
+++ pypy/branch/more-gckinds/pypy/rpython/lltypesystem/rclass.py	Fri Sep  8 14:10:37 2006
@@ -55,11 +55,11 @@
 #
 # there's also a nongcobject 
 
-OBJECT_VTABLE = lltype.GcForwardReference()
+OBJECT_VTABLE = lltype.ForwardReference()
 CLASSTYPE = Ptr(OBJECT_VTABLE)
 OBJECT = GcStruct('object', ('typeptr', CLASSTYPE))
 OBJECTPTR = Ptr(OBJECT)
-OBJECT_VTABLE.become(GcStruct('object_vtable',
+OBJECT_VTABLE.become(Struct('object_vtable',
                             ('parenttypeptr', CLASSTYPE),
                             ('subclassrange_min', Signed),
                             ('subclassrange_max', Signed),
@@ -100,7 +100,7 @@
             # 'object' root type
             self.vtable_type = OBJECT_VTABLE
         else:
-            self.vtable_type = lltype.GcForwardReference()
+            self.vtable_type = lltype.ForwardReference()
         self.lowleveltype = Ptr(self.vtable_type)
 
     def _setup_repr(self):
@@ -139,7 +139,7 @@
             self.rbase = getclassrepr(self.rtyper, self.classdef.basedef)
             self.rbase.setup()
             kwds = {'hints': {'immutable': True}}
-            vtable_type = GcStruct('%s_vtable' % self.classdef.name,
+            vtable_type = Struct('%s_vtable' % self.classdef.name,
                                  ('super', self.rbase.vtable_type),
                                  *llfields, **kwds)
             self.vtable_type.become(vtable_type)



More information about the Pypy-commit mailing list