Author: Anton Gulenko <[email protected]>
Branch: storage
Changeset: r726:3e91a15babf5
Date: 2014-03-31 14:13 +0200
http://bitbucket.org/pypy/lang-smalltalk/changeset/3e91a15babf5/
Log: Added flag to disable optimizing storage strategies.
diff --git a/spyvm/model.py b/spyvm/model.py
--- a/spyvm/model.py
+++ b/spyvm/model.py
@@ -558,13 +558,8 @@
self.initialize_storage(space, size, weak)
def initialize_storage(self, space, size, weak=False):
- if weak:
- from spyvm.shadow import WeakListStorageShadow
- storage = WeakListStorageShadow(space, self, size)
- else:
- from spyvm.shadow import AllNilStorageShadow
- storage = AllNilStorageShadow(space, self, size)
- self.store_shadow(storage)
+ from spyvm.shadow import empty_storage
+ self.store_shadow(empty_storage(space, size, weak)(space, self, size))
self.log_storage("Initialized")
def fillin(self, space, g_self):
diff --git a/spyvm/shadow.py b/spyvm/shadow.py
--- a/spyvm/shadow.py
+++ b/spyvm/shadow.py
@@ -8,6 +8,10 @@
from rpython.rlib.rstruct.runpack import runpack
from rpython.rtyper.lltypesystem import rffi, lltype
+# If this is True, then no optimizing storage strategies will be used.
+# Intended for performance comparisons. Breaks tests.
+no_specialized_storage = False
+
class AbstractShadow(object):
"""A shadow is an optional extra bit of information that
can be attached at run-time to any Smalltalk object.
@@ -158,7 +162,18 @@
def unwrap(space, w_val):
return space.unwrap_float(w_val)
+def empty_storage(space, size, weak=False):
+ if weak:
+ return WeakListStorageShadow
+ else:
+ if no_specialized_storage:
+ return ListStorageShadow
+ else:
+ return AllNilStorageShadow
+
def find_storage_for_objects(space, vars):
+ if no_specialized_storage:
+ return ListStorageShadow
specialized_strategies = 3
all_nil_can_handle = True
small_int_can_handle = True
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit