Author: Anton Gulenko <[email protected]>
Branch: strategies-tagging
Changeset: r673:b1593fffd1e7
Date: 2014-03-20 12:54 +0100
http://bitbucket.org/pypy/lang-smalltalk/changeset/b1593fffd1e7/
Log: Fixing tests.
diff --git a/spyvm/model.py b/spyvm/model.py
--- a/spyvm/model.py
+++ b/spyvm/model.py
@@ -654,7 +654,9 @@
class W_PointersObject(W_AbstractPointersObject):
_attrs_ = ['_size', 'list_storage', 'int_storage', 'strategy']
-
+ list_storage = None
+ int_storage = None
+
@jit.unroll_safe
def __init__(self, space, w_class, size):
from spyvm.strategies import strategy_of_size
diff --git a/spyvm/strategies.py b/spyvm/strategies.py
--- a/spyvm/strategies.py
+++ b/spyvm/strategies.py
@@ -44,7 +44,7 @@
def copy_storage_from(self, space, w_obj, reuse_storage):
old_strategy = w_obj.strategy
if old_strategy == self and reuse_storage:
- return w_obj.list_storage
+ return self.storage(w_obj)
else:
# This can be overridden and optimized (reuse_storage flag, less
temporary storage)
return self.storage_for_list(space, w_obj.fetch_all(space))
@@ -68,10 +68,10 @@
def copy_storage_from(self, space, w_obj, reuse_storage):
old_strategy = w_obj.strategy
if old_strategy == self and reuse_storage:
- return w_obj.int_storage
+ return self.storage(w_obj)
else:
# This can be overridden and optimized (reuse_storage flag, less
temporary storage)
- return self.int_storage_for_list(space, w_obj.fetch_all(space))
+ return self.storage_for_list(space, w_obj.fetch_all(space))
class SingletonMeta(type):
def __new__(cls, name, bases, dct):
@@ -173,10 +173,10 @@
# Storing a wrong type - dehomogenize to ListStorage
return w_obj.store_with_new_strategy(space,
ListStorageStrategy.singleton, n0, w_val)
- def initial_int_storage(self, space, size):
+ def initial_storage(self, space, size):
return [self.nil_value] * size
- def int_storage_for_list(self, space, collection):
+ def storage_for_list(self, space, collection):
length = len(collection)
store = [self.nil_value] * length
for i in range(length):
diff --git a/spyvm/test/test_primitives.py b/spyvm/test/test_primitives.py
--- a/spyvm/test/test_primitives.py
+++ b/spyvm/test/test_primitives.py
@@ -18,15 +18,17 @@
self.strategy = strategies.ListStorageStrategy.singleton
self.initialize_storage(space, size)
self.store_all(space, [None] * 6 + stack + [space.w_nil] * 6)
- s_self = self.as_blockcontext_get_shadow()
+ import pdb; pdb.set_trace()
+ s_self = self.as_blockcontext_get_shadow(space)
s_self.init_stack_and_temps()
s_self.reset_stack()
s_self.push_all(stack)
s_self.store_expected_argument_count(0)
self.s_class = space.w_MethodContext.as_class_get_shadow(space)
- def as_blockcontext_get_shadow(self):
- self.shadow = shadow.BlockContextShadow(space, self)
+ def as_blockcontext_get_shadow(self, space):
+ if not self.shadow:
+ self.shadow = shadow.BlockContextShadow(space, self)
return self.shadow
def wrap(x):
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit