[pypy-svn] r74638 - in pypy/branch/blackhole-improvement/pypy/jit/metainterp: . test

arigo at codespeak.net arigo at codespeak.net
Fri May 21 17:52:12 CEST 2010


Author: arigo
Date: Fri May 21 17:52:11 2010
New Revision: 74638

Modified:
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
   pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_blackhole.py
Log:
Fix the test.  Remove some tests that are now useless.


Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/blackhole.py	Fri May 21 17:52:11 2010
@@ -83,7 +83,8 @@
         #
         def dispatch_loop(self, code, position):
             while True:
-                if not we_are_translated():
+                if (not we_are_translated()
+                    and self.jitcode._startpoints is not None):
                     assert position in self.jitcode._startpoints, (
                         "the current position %d is in the middle of "
                         "an instruction!" % position)

Modified: pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_blackhole.py
==============================================================================
--- pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_blackhole.py	(original)
+++ pypy/branch/blackhole-improvement/pypy/jit/metainterp/test/test_blackhole.py	Fri May 21 17:52:11 2010
@@ -32,52 +32,56 @@
     jitcode.setup("\x00\x00\x01\x02"
                   "\x01\x02",
                   [])
-    blackholeinterp = getblackholeinterp({'int_add/iii': 0,
+    blackholeinterp = getblackholeinterp({'int_add/ii>i': 0,
                                           'int_return/i': 1})
+    blackholeinterp.setposition(jitcode, 0)
     blackholeinterp.setarg_i(0, 40)
     blackholeinterp.setarg_i(1, 2)
-    blackholeinterp.run(jitcode, 0)
-    assert blackholeinterp.get_result_i() == 42
+    blackholeinterp.run()
+    assert blackholeinterp.final_result_i() == 42
 
 def test_simple_const():
     jitcode = JitCode("test")
     jitcode.setup("\x00\x30\x01\x02"
                   "\x01\x02",
                   [])
-    blackholeinterp = getblackholeinterp({'int_sub/cii': 0,
+    blackholeinterp = getblackholeinterp({'int_sub/ci>i': 0,
                                           'int_return/i': 1})
+    blackholeinterp.setposition(jitcode, 0)
     blackholeinterp.setarg_i(1, 6)
-    blackholeinterp.run(jitcode, 0)
-    assert blackholeinterp.get_result_i() == 42
+    blackholeinterp.run()
+    assert blackholeinterp.final_result_i() == 42
 
 def test_simple_bigconst():
     jitcode = JitCode("test")
     jitcode.setup("\x00\xFD\x01\x02"
                   "\x01\x02",
                   [666, 666, 10042, 666])
-    blackholeinterp = getblackholeinterp({'int_sub/iii': 0,
+    blackholeinterp = getblackholeinterp({'int_sub/ii>i': 0,
                                           'int_return/i': 1})
+    blackholeinterp.setposition(jitcode, 0)
     blackholeinterp.setarg_i(1, 10000)
-    blackholeinterp.run(jitcode, 0)
-    assert blackholeinterp.get_result_i() == 42
+    blackholeinterp.run()
+    assert blackholeinterp.final_result_i() == 42
 
 def test_simple_loop():
     jitcode = JitCode("test")
-    jitcode.setup("\x00\x10\x00\x16\x02"  # L1: goto_if_not_int_gt L2, %i0, 2
+    jitcode.setup("\x00\x16\x02\x10\x00"  # L1: goto_if_not_int_gt %i0, 2, L2
                   "\x01\x17\x16\x17"      #     int_add %i1, %i0, %i1
                   "\x02\x16\x01\x16"      #     int_sub %i0, $1, %i0
                   "\x03\x00\x00"          #     goto L1
                   "\x04\x17",             # L2: int_return %i1
                   [])
-    blackholeinterp = getblackholeinterp({'goto_if_not_int_gt/Lic': 0,
-                                          'int_add/iii': 1,
-                                          'int_sub/ici': 2,
+    blackholeinterp = getblackholeinterp({'goto_if_not_int_gt/icL': 0,
+                                          'int_add/ii>i': 1,
+                                          'int_sub/ic>i': 2,
                                           'goto/L': 3,
                                           'int_return/i': 4})
+    blackholeinterp.setposition(jitcode, 0)
     blackholeinterp.setarg_i(0x16, 6)    # %i0
     blackholeinterp.setarg_i(0x17, 100)  # %i1
-    blackholeinterp.run(jitcode, 0)
-    assert blackholeinterp.get_result_i() == 100+6+5+4+3
+    blackholeinterp.run()
+    assert blackholeinterp.final_result_i() == 100+6+5+4+3
 
 def test_simple_exception():
     jitcode = JitCode("test")
@@ -88,101 +92,17 @@
                   "\x03\x2A",             # L1: int_return $42
                   [321])   # <-- address of the function g
     blackholeinterp = getblackholeinterp({'catch_exception/L': 0,
-                                          'residual_call_ir_i/idIRi': 1,
+                                          'residual_call_ir_i/idIR>i': 1,
                                           'int_return/i': 2,
                                           'int_return/c': 3},
                                          ["<calldescr>"])
     #
+    blackholeinterp.setposition(jitcode, 0)
     blackholeinterp.setarg_i(0x9, 100)
-    blackholeinterp.run(jitcode, 0)
-    assert blackholeinterp.get_result_i() == 200
+    blackholeinterp.run()
+    assert blackholeinterp.final_result_i() == 200
     #
+    blackholeinterp.setposition(jitcode, 0)
     blackholeinterp.setarg_i(0x9, -100)
-    blackholeinterp.run(jitcode, 0)
-    assert blackholeinterp.get_result_i() == 42
-
-# ____________________________________________________________
-
-class BlackholeTests(object):
-
-    def meta_interp(self, *args):
-        def counting_init(frame, metainterp, jitcode, greenkey=None):
-            previnit(frame, metainterp, jitcode, greenkey)
-            self.seen_frames.append(jitcode.name)
-        #
-        from pypy.jit.metainterp import pyjitpl
-        previnit = pyjitpl.MIFrame.__init__.im_func
-        try:
-            self.seen_frames = []
-            pyjitpl.MIFrame.__init__ = counting_init
-            return super(BlackholeTests, self).meta_interp(*args)
-        finally:
-            pyjitpl.MIFrame.__init__ = previnit
-
-    def test_calls_not_followed(self):
-        myjitdriver = JitDriver(greens = [], reds = ['n'])
-        def h():
-            return 42
-        def g():
-            return h()
-        def f(n):
-            while n > 0:
-                myjitdriver.can_enter_jit(n=n)
-                myjitdriver.jit_merge_point(n=n)
-                n -= 1
-            return g()
-        res = self.meta_interp(f, [7])
-        assert res == 42
-        assert self.seen_frames == ['f', 'f']
-
-    def test_indirect_calls_not_followed(self):
-        myjitdriver = JitDriver(greens = [], reds = ['n'])
-        def h():
-            return 42
-        def g():
-            return h()
-        def f(n):
-            while n > 0:
-                myjitdriver.can_enter_jit(n=n)
-                myjitdriver.jit_merge_point(n=n)
-                n -= 1
-            if n < 0:
-                call = h
-            else:
-                call = g
-            return call()
-        res = self.meta_interp(f, [7])
-        assert res == 42
-        assert self.seen_frames == ['f', 'f']
-
-    def test_oosends_not_followed(self):
-        myjitdriver = JitDriver(greens = [], reds = ['n'])
-        class A:
-            def meth(self):
-                return 42
-        class B(A):
-            def meth(self):
-                return 45
-        class C(A):
-            def meth(self):
-                return 64
-        def f(n):
-            while n > 0:
-                myjitdriver.can_enter_jit(n=n)
-                myjitdriver.jit_merge_point(n=n)
-                n -= 1
-            if n < 0:
-                x = B()
-            else:
-                x = C()
-            return x.meth()
-        res = self.meta_interp(f, [7])
-        assert res == 64
-        assert self.seen_frames == ['f', 'f']
-
-
-class TestLLtype(BlackholeTests, LLJitMixin):
-    pass
-
-class TestOOtype(BlackholeTests, OOJitMixin):
-    pass
+    blackholeinterp.run()
+    assert blackholeinterp.final_result_i() == 42



More information about the Pypy-commit mailing list