Author: Lars Wassermann <[email protected]>
Branch: 
Changeset: r58:198990598f2b
Date: 2013-02-19 13:28 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/198990598f2b/

Log:    (lwassermann, cfbolz): added VarsizedWrapper with at0, atput0

diff --git a/spyvm/interpreter.py b/spyvm/interpreter.py
--- a/spyvm/interpreter.py
+++ b/spyvm/interpreter.py
@@ -438,7 +438,7 @@
         if numCopied > 0:
             copiedValues = self.pop_and_return_n(numCopied)
             for i0 in range(numCopied):
-                w_closure.atput0(space, i0, copiedValues[i0])
+                closure.atput0(i0, copiedValues[i0])
         self.push(w_closure)
         self.jump(blockSize)
 
diff --git a/spyvm/test/test_interpreter.py b/spyvm/test/test_interpreter.py
--- a/spyvm/test/test_interpreter.py
+++ b/spyvm/test/test_interpreter.py
@@ -908,5 +908,5 @@
     closure = wrapper.BlockClosureWrapper(space, context.top())
     assert closure.startpc() == pc + 4
     assert closure.outerContext() is context._w_self
-    assert closure.w_self.at0(space, 0) == "english"
-    assert closure.w_self.at0(space, 1) == "bar"
+    assert closure.at0(0) == "english"
+    assert closure.at0(1) == "bar"
diff --git a/spyvm/wrapper.py b/spyvm/wrapper.py
--- a/spyvm/wrapper.py
+++ b/spyvm/wrapper.py
@@ -22,6 +22,14 @@
         except IndexError:
             raise WrapperException("Unexpected instance layout. Too small")
 
+class VarsizedWrapper(Wrapper):
+    def at0(self, i0):
+        return self.w_self.at0(self.space, i0)
+
+    def atput0(self, i0, w_value):
+        return self.w_self.atput0(self.space, i0, w_value)
+
+
 def make_getter(index0):
     def getter(self):
         return self.read(index0)
@@ -47,7 +55,8 @@
 
 def make_int_getter_setter(index0):
     return make_int_getter(index0), make_int_setter(index0)
-   
+
+
 class LinkWrapper(Wrapper):
     next_link, store_next_link = make_getter_setter(0)
 
@@ -205,7 +214,7 @@
     y, store_y = make_int_getter_setter(1)
 
  
-class BlockClosureWrapper(Wrapper):
+class BlockClosureWrapper(VarsizedWrapper):
     outerContext, store_outerContext = make_getter_setter(0)
     startpc, store_startpc = make_int_getter_setter(1)
     numArgs, store_numArgs = make_int_getter_setter(2)
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to