Author: Antonio Cuni <[email protected]>
Branch: autoreds
Changeset: r58878:39209f0fb81b
Date: 2012-11-14 11:46 +0100
http://bitbucket.org/pypy/pypy/changeset/39209f0fb81b/

Log:    make sure to set .autoreds and .numreds even when the reds are given
        as class attributes

diff --git a/pypy/rlib/jit.py b/pypy/rlib/jit.py
--- a/pypy/rlib/jit.py
+++ b/pypy/rlib/jit.py
@@ -458,10 +458,11 @@
             self.reds = []
             self.numreds = None # see warmspot.autodetect_jit_markers_redvars
             assert confirm_enter_jit is None, 'cannot use automatic reds if 
confirm_enter_jit is given'
-        elif reds is not None:
+        else:
+            if reds is not None:
+                self.reds = reds
             self.autoreds = False
-            self.reds = reds
-            self.numreds = len(reds)
+            self.numreds = len(self.reds)
         if not hasattr(self, 'greens') or not hasattr(self, 'reds'):
             raise AttributeError("no 'greens' or 'reds' supplied")
         if virtualizables is not None:
diff --git a/pypy/rlib/test/test_jit.py b/pypy/rlib/test/test_jit.py
--- a/pypy/rlib/test/test_jit.py
+++ b/pypy/rlib/test/test_jit.py
@@ -24,6 +24,18 @@
     #
     py.test.raises(AssertionError, "JitDriver(greens=['foo'], reds='auto', 
confirm_enter_jit='something')")
 
+def test_jitdriver_numreds():
+    driver = JitDriver(greens=['foo'], reds=['a', 'b'])
+    assert driver.reds == ['a', 'b']
+    assert driver.numreds == 2
+    #
+    class MyJitDriver(JitDriver):
+        greens = ['foo']
+        reds = ['a', 'b']
+    driver = MyJitDriver()
+    assert driver.reds == ['a', 'b']
+    assert driver.numreds == 2
+
 def test_jitdriver_clone():
     def foo():
         pass
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to