[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