Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r53175:0541ffa5b060 Date: 2012-03-04 11:57 +0100 http://bitbucket.org/pypy/pypy/changeset/0541ffa5b060/
Log: Fix tests. diff --git a/pypy/jit/backend/x86/test/test_gc_integration.py b/pypy/jit/backend/x86/test/test_gc_integration.py --- a/pypy/jit/backend/x86/test/test_gc_integration.py +++ b/pypy/jit/backend/x86/test/test_gc_integration.py @@ -28,7 +28,7 @@ class MockGcRootMap(object): is_shadow_stack = False - def get_basic_shape(self, is_64_bit): + def get_basic_shape(self): return ['shape'] def add_frame_offset(self, shape, offset): shape.append(offset) diff --git a/pypy/jit/backend/x86/test/test_recompilation.py b/pypy/jit/backend/x86/test/test_recompilation.py --- a/pypy/jit/backend/x86/test/test_recompilation.py +++ b/pypy/jit/backend/x86/test/test_recompilation.py @@ -34,7 +34,6 @@ ''' loop = self.interpret(ops, [0]) previous = loop._jitcelltoken.compiled_loop_token.frame_depth - assert loop._jitcelltoken.compiled_loop_token.param_depth == 0 assert self.getint(0) == 20 ops = ''' [i1] @@ -51,7 +50,6 @@ bridge = self.attach_bridge(ops, loop, -2) descr = loop.operations[3].getdescr() new = descr._x86_bridge_frame_depth - assert descr._x86_bridge_param_depth == 0 # the force_spill() forces the stack to grow assert new > previous fail = self.run(loop, 0) @@ -116,10 +114,8 @@ loop_frame_depth = loop._jitcelltoken.compiled_loop_token.frame_depth bridge = self.attach_bridge(ops, loop, 6) guard_op = loop.operations[6] - assert loop._jitcelltoken.compiled_loop_token.param_depth == 0 # the force_spill() forces the stack to grow assert guard_op.getdescr()._x86_bridge_frame_depth > loop_frame_depth - assert guard_op.getdescr()._x86_bridge_param_depth == 0 self.run(loop, 0, 0, 0, 0, 0, 0) assert self.getint(0) == 1 assert self.getint(1) == 20 diff --git a/pypy/jit/backend/x86/test/test_regalloc.py b/pypy/jit/backend/x86/test/test_regalloc.py --- a/pypy/jit/backend/x86/test/test_regalloc.py +++ b/pypy/jit/backend/x86/test/test_regalloc.py @@ -606,23 +606,37 @@ assert self.getints(9) == [0, 1, 1, 1, 1, 1, 1, 1, 1] class TestRegAllocCallAndStackDepth(BaseTestRegalloc): - def expected_param_depth(self, num_args): + def expected_frame_depth(self, num_call_args, num_pushed_input_args=0): # Assumes the arguments are all non-float if IS_X86_32: - return num_args + extra_esp = num_call_args + return extra_esp elif IS_X86_64: - return max(num_args - 6, 0) + # 'num_pushed_input_args' is for X86_64 only + extra_esp = max(num_call_args - 6, 0) + return num_pushed_input_args + extra_esp def test_one_call(self): ops = ''' - [i0, i1, i2, i3, i4, i5, i6, i7, i8, i9] + [i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i9b] i10 = call(ConstClass(f1ptr), i0, descr=f1_calldescr) - finish(i10, i1, i2, i3, i4, i5, i6, i7, i8, i9) + finish(i10, i1, i2, i3, i4, i5, i6, i7, i8, i9, i9b) ''' - loop = self.interpret(ops, [4, 7, 9, 9 ,9, 9, 9, 9, 9, 9]) - assert self.getints(10) == [5, 7, 9, 9, 9, 9, 9, 9, 9, 9] + loop = self.interpret(ops, [4, 7, 9, 9 ,9, 9, 9, 9, 9, 9, 8]) + assert self.getints(11) == [5, 7, 9, 9, 9, 9, 9, 9, 9, 9, 8] clt = loop._jitcelltoken.compiled_loop_token - assert clt.param_depth == self.expected_param_depth(1) + assert clt.frame_depth == self.expected_frame_depth(1, 5) + + def test_one_call_reverse(self): + ops = ''' + [i1, i2, i3, i4, i5, i6, i7, i8, i9, i9b, i0] + i10 = call(ConstClass(f1ptr), i0, descr=f1_calldescr) + finish(i10, i1, i2, i3, i4, i5, i6, i7, i8, i9, i9b) + ''' + loop = self.interpret(ops, [7, 9, 9 ,9, 9, 9, 9, 9, 9, 8, 4]) + assert self.getints(11) == [5, 7, 9, 9, 9, 9, 9, 9, 9, 9, 8] + clt = loop._jitcelltoken.compiled_loop_token + assert clt.frame_depth == self.expected_frame_depth(1, 6) def test_two_calls(self): ops = ''' @@ -634,7 +648,7 @@ loop = self.interpret(ops, [4, 7, 9, 9 ,9, 9, 9, 9, 9, 9]) assert self.getints(10) == [5*7, 7, 9, 9, 9, 9, 9, 9, 9, 9] clt = loop._jitcelltoken.compiled_loop_token - assert clt.param_depth == self.expected_param_depth(2) + assert clt.frame_depth == self.expected_frame_depth(2, 5) def test_call_many_arguments(self): # NB: The first and last arguments in the call are constants. This @@ -648,25 +662,31 @@ loop = self.interpret(ops, [2, 3, 4, 5, 6, 7, 8, 9]) assert self.getint(0) == 55 clt = loop._jitcelltoken.compiled_loop_token - assert clt.param_depth == self.expected_param_depth(10) + assert clt.frame_depth == self.expected_frame_depth(10) def test_bridge_calls_1(self): ops = ''' [i0, i1] i2 = call(ConstClass(f1ptr), i0, descr=f1_calldescr) - guard_value(i2, 0, descr=fdescr1) [i2, i1] + guard_value(i2, 0, descr=fdescr1) [i2, i0, i1] finish(i1) ''' loop = self.interpret(ops, [4, 7]) assert self.getint(0) == 5 + clt = loop._jitcelltoken.compiled_loop_token + orgdepth = clt.frame_depth + assert orgdepth == self.expected_frame_depth(1, 2) + ops = ''' - [i2, i1] + [i2, i0, i1] i3 = call(ConstClass(f2ptr), i2, i1, descr=f2_calldescr) - finish(i3, descr=fdescr2) + finish(i3, i0, descr=fdescr2) ''' bridge = self.attach_bridge(ops, loop, -2) - assert loop.operations[-2].getdescr()._x86_bridge_param_depth == self.expected_param_depth(2) + assert clt.frame_depth == max(orgdepth, self.expected_frame_depth(2, 2)) + assert loop.operations[-2].getdescr()._x86_bridge_frame_depth == \ + self.expected_frame_depth(2, 2) self.run(loop, 4, 7) assert self.getint(0) == 5*7 @@ -676,10 +696,14 @@ [i0, i1] i2 = call(ConstClass(f2ptr), i0, i1, descr=f2_calldescr) guard_value(i2, 0, descr=fdescr1) [i2] - finish(i1) + finish(i2) ''' loop = self.interpret(ops, [4, 7]) assert self.getint(0) == 4*7 + clt = loop._jitcelltoken.compiled_loop_token + orgdepth = clt.frame_depth + assert orgdepth == self.expected_frame_depth(2) + ops = ''' [i2] i3 = call(ConstClass(f1ptr), i2, descr=f1_calldescr) @@ -687,7 +711,9 @@ ''' bridge = self.attach_bridge(ops, loop, -2) - assert loop.operations[-2].getdescr()._x86_bridge_param_depth == self.expected_param_depth(2) + assert clt.frame_depth == max(orgdepth, self.expected_frame_depth(1)) + assert loop.operations[-2].getdescr()._x86_bridge_frame_depth == \ + self.expected_frame_depth(1) self.run(loop, 4, 7) assert self.getint(0) == 29 _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit