[pypy-svn] r54836 - pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk
tverwaes at codespeak.net
tverwaes at codespeak.net
Sat May 17 16:36:35 CEST 2008
Author: tverwaes
Date: Sat May 17 16:36:34 2008
New Revision: 54836
Modified:
pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py
Log:
(cfbolz, tverwaes) belongs to the last commit
Modified: pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py
==============================================================================
--- pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py (original)
+++ pypy/branch/smalltalk-shadow-changes/pypy/lang/smalltalk/wrapper.py Sat May 17 16:36:34 2008
@@ -35,52 +35,39 @@
class LinkWrapper(Wrapper):
next_link, store_next_link = make_getter_setter(0)
-
-'''class LinkedListShadow(AbstractShadow):
- def __init__(self, w_self, invalid):
- AbstractShadow.__init__(self, w_self, invalid)
-
- def w_firstlink(self):
- w_v = self.w_self()._vars[constants.FIRST_LINK_INDEX]
- assert isinstance(w_v, model.W_PointersObject)
- return w_v
-
- def store_w_firstlink(self, w_object):
- self.w_self()._vars[constants.FIRST_LINK_INDEX] = w_object
-
- def w_lastlink(self):
- w_v = self.w_self()._vars[constants.LAST_LINK_INDEX]
- assert isinstance(w_v, model.W_PointersObject)
- return w_v
-
- def store_w_lastlink(self, w_object):
- self.w_self()._vars[constants.LAST_LINK_INDEX] = w_object
+class ProcessWrapper(LinkWrapper):
+ suspended_context, store_suspended_context = make_getter_setter(1)
+ priority = make_getter(2)
+ my_list, store_my_list = make_getter_setter(3)
+
+class LinkedListWrapper(Wrapper):
+ first_link, store_first_link = make_getter_setter(0)
+ last_link, store_last_link = make_getter_setter(1)
def is_empty_list(self):
from pypy.lang.smalltalk import objtable
- return self.w_firstlink() == objtable.w_nil
+ return self.first_link() is objtable.w_nil
def add_last_link(self, w_object):
if self.is_empty_list():
- self.store_w_firstlink(w_object)
+ self.store_first_link(w_object)
else:
- self.w_lastlink().as_link_get_shadow().store_next(w_object)
- # XXX Slang version stores list in process here...
- self.store_w_lastlink(w_object)
+ LinkWrapper(self.last_link()).store_next_link(w_object)
+ self.store_last_link(w_object)
def remove_first_link_of_list(self):
from pypy.lang.smalltalk import objtable
- first = self.w_firstlink()
- last = self.w_lastlink()
- if first == last:
- self.store_w_firstlink(objtable.w_nil)
- self.store_w_lastlink(objtable.w_nil)
+ w_first = self.first_link()
+ w_last = self.last_link()
+ if w_first is w_last:
+ self.store_first_link(objtable.w_nil)
+ self.store_last_link(objtable.w_nil)
else:
- next = first.as_process_get_shadow().next()
- self.store_w_firstlink(next)
- first.as_process_get_shadow().store_next(objtable.w_nil)
- return first
-
+ w_next = LinkWrapper(w_first).next_link()
+ self.store_first_link(w_next)
+ LinkWrapper(w_first).store_next_link(objtable.w_nil)
+ return w_first
+'''
class SemaphoreShadow(LinkedListShadow):
"""A shadow for Smalltalk objects that are semaphores
"""
More information about the Pypy-commit
mailing list