[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