[pypy-svn] pypy numpy-exp: Write a jit test, easy so far

fijal commits-noreply at bitbucket.org
Fri Feb 11 09:34:49 CET 2011


Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: numpy-exp
Changeset: r41810:88a25221eb86
Date: 2011-02-11 10:32 +0200
http://bitbucket.org/pypy/pypy/changeset/88a25221eb86/

Log:	Write a jit test, easy so far

diff --git a/pypy/module/micronumpy/numarray.py b/pypy/module/micronumpy/numarray.py
--- a/pypy/module/micronumpy/numarray.py
+++ b/pypy/module/micronumpy/numarray.py
@@ -8,10 +8,10 @@
 
 TP = lltype.GcArray(lltype.Float)
 
-numpy_driver = jit.JitDriver(greens = ['bytecode'],
-                             reds = ['result', 'result_size', 'i',
-                                     'valuestack', 'valuestackdepth',
-                                     'input', 'input_pos'])
+numpy_driver = jit.JitDriver(greens = ['bytecode_pos', 'bytecode'],
+                             reds = ['result_size', 'i', 'input_pos',
+                                     'valuestackdepth', 'valuestack',
+                                     'input', 'result'])
 
 def compute(bytecode, input):
     result_size = input[0].size
@@ -26,7 +26,8 @@
                                      result_size=result_size,
                                      valuestackdepth=valuestackdepth,
                                      valuestack=valuestack,
-                                     input=input, input_pos=input_pos, i=i)
+                                     input=input, input_pos=input_pos, i=i,
+                                     bytecode_pos=bytecode_pos)
         if bytecode_pos == -1:
             bytecode_pos = len(bytecode) - 1
             input_pos = len(input) - 1
@@ -38,7 +39,8 @@
                                        result_size=result_size,
                                        valuestackdepth=valuestackdepth,
                                        valuestack=valuestack,
-                                       input=input, input_pos=input_pos, i=i)
+                                       input=input, input_pos=input_pos, i=i,
+                                       bytecode_pos=bytecode_pos)
         else:
             opcode = bytecode[bytecode_pos]
             if opcode == 'l':

diff --git a/pypy/module/micronumpy/test/test_jit.py b/pypy/module/micronumpy/test/test_jit.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/micronumpy/test/test_jit.py
@@ -0,0 +1,24 @@
+
+from pypy.module.micronumpy.numarray import SingleDimArray, Add
+from pypy.conftest import gettestobjspace
+from pypy.jit.metainterp.test.test_basic import LLJitMixin
+
+class FakeSpace(object):
+    pass
+
+class TestNumpyJIt(LLJitMixin):
+    def setup_class(cls):
+        cls.space = FakeSpace()
+    
+    def test_add(self):
+        space = self.space
+        
+        def f(i):
+            ar = SingleDimArray(i)
+            if i:
+                v = Add(ar, ar)
+            else:
+                v = ar
+            return v.force().storage[3]
+
+        self.meta_interp(f, [5])


More information about the Pypy-commit mailing list