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

Reply via email to