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