[pypy-svn] r28774 - pypy/dist/pypy/module/_stackless

mwh at codespeak.net mwh at codespeak.net
Wed Jun 14 17:10:54 CEST 2006


Author: mwh
Date: Wed Jun 14 17:10:53 2006
New Revision: 28774

Modified:
   pypy/dist/pypy/module/_stackless/interp_greenlet.py
Log:
annotator-placating fixes to interp_greenlet.


Modified: pypy/dist/pypy/module/_stackless/interp_greenlet.py
==============================================================================
--- pypy/dist/pypy/module/_stackless/interp_greenlet.py	(original)
+++ pypy/dist/pypy/module/_stackless/interp_greenlet.py	Wed Jun 14 17:10:53 2006
@@ -57,7 +57,7 @@
         self.is_main = is_main
         state = self._get_state(space)
         if is_main:
-            self.w_parent = space.w_None
+            self.w_parent = None
         else:
             w_parent = state.current
             assert isinstance(w_parent, AppGreenlet)
@@ -117,27 +117,35 @@
     def _userdel(self):
         self.space.userdel(self)
 
-def w_get_is_dead(space, self):
+def w_get_is_dead(space, w_self):
+    self = space.interp_w(AppGreenlet, w_self)
     return self.w_dead
 
 def descr__bool__(space, w_self):
-    return space.wrap(w_self.has_ever_run and not space.is_true(w_self.w_dead))
+    self = space.interp_w(AppGreenlet, w_self)
+    return space.wrap(self.has_ever_run and not space.is_true(self.w_dead))
 
-def w_get_parent(space, self):
-    return self.w_parent
+def w_get_parent(space, w_self):
+    self = space.interp_w(AppGreenlet, w_self)
+    if self.w_parent is not None:
+        return self.w_parent
+    else:
+        return space.w_None
 
-def w_set_parent(space, self, w_parent):
+def w_set_parent(space, w_self, w_parent):
+    self = space.interp_w(AppGreenlet, w_self)
     newparent = space.interp_w(AppGreenlet, w_parent)
     curr = newparent
     while 1:
         if space.is_true(space.is_(self, curr)):
             raise OperationError(space.w_ValueError, space.wrap("cyclic parent chain"))
-        if not space.is_true(space.is_(curr.w_parent, space.w_None)):
+        if not curr.w_parent is None:
             break
         curr = curr.w_parent
     self.w_parent = newparent
 
-def w_get_frame(space, self):
+def w_get_frame(space, w_self):
+    self = space.interp_w(AppGreenlet, w_self)    
     if not self.has_ever_run or space.is_true(self.w_dead):
         return space.w_None
     try:



More information about the Pypy-commit mailing list