[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