[pypy-commit] pypy result-in-resops: port tests until the first virtualref and stop
fijal
noreply at buildbot.pypy.org
Wed Sep 26 00:42:03 CEST 2012
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: result-in-resops
Changeset: r57593:907b42338eff
Date: 2012-09-26 00:41 +0200
http://bitbucket.org/pypy/pypy/changeset/907b42338eff/
Log: port tests until the first virtualref and stop
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -2456,8 +2456,10 @@
resolved)
elif tag[0] == 'varray':
fieldvalue = fieldtext
+ opnum = getattr(rop, 'GETARRAYITEM_GC_' +
+ resolved.getdescr().typeinfo)
fieldbox = executor.execute(self.cpu, None,
- rop.GETARRAYITEM_GC,
+ opnum,
tag[1],
resolved, ConstInt(index))
else:
@@ -2619,7 +2621,7 @@
setarrayitem_gc(p1, 1, i1, descr=arraydescr)
setarrayitem_gc(p1, 0, 25, descr=arraydescr)
guard_true(i1) [p1]
- i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
+ i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
jump(i2)
"""
expected = """
@@ -2746,17 +2748,17 @@
def test_residual_call_does_not_invalidate_caches(self):
ops = """
[p1, p2]
- i1 = getfield_gc(p1, descr=valuedescr)
- i2 = call(i1, descr=nonwritedescr)
- i3 = getfield_gc(p1, descr=valuedescr)
+ i1 = getfield_gc_i(p1, descr=valuedescr)
+ i2 = call_i(i1, descr=nonwritedescr)
+ i3 = getfield_gc_i(p1, descr=valuedescr)
escape(i1)
escape(i3)
jump(p1, p2)
"""
expected = """
[p1, p2]
- i1 = getfield_gc(p1, descr=valuedescr)
- i2 = call(i1, descr=nonwritedescr)
+ i1 = getfield_gc_i(p1, descr=valuedescr)
+ i2 = call_i(i1, descr=nonwritedescr)
escape(i1)
escape(i1)
jump(p1, p2)
@@ -2766,11 +2768,11 @@
def test_residual_call_invalidate_some_caches(self):
ops = """
[p1, p2]
- i1 = getfield_gc(p1, descr=adescr)
- i2 = getfield_gc(p1, descr=bdescr)
- i3 = call(i1, descr=writeadescr)
- i4 = getfield_gc(p1, descr=adescr)
- i5 = getfield_gc(p1, descr=bdescr)
+ i1 = getfield_gc_i(p1, descr=adescr)
+ i2 = getfield_gc_i(p1, descr=bdescr)
+ i3 = call_i(i1, descr=writeadescr)
+ i4 = getfield_gc_i(p1, descr=adescr)
+ i5 = getfield_gc_i(p1, descr=bdescr)
escape(i1)
escape(i2)
escape(i4)
@@ -2779,10 +2781,10 @@
"""
expected = """
[p1, p2]
- i1 = getfield_gc(p1, descr=adescr)
- i2 = getfield_gc(p1, descr=bdescr)
- i3 = call(i1, descr=writeadescr)
- i4 = getfield_gc(p1, descr=adescr)
+ i1 = getfield_gc_i(p1, descr=adescr)
+ i2 = getfield_gc_i(p1, descr=bdescr)
+ i3 = call_i(i1, descr=writeadescr)
+ i4 = getfield_gc_i(p1, descr=adescr)
escape(i1)
escape(i2)
escape(i4)
@@ -2794,11 +2796,11 @@
def test_residual_call_invalidate_arrays(self):
ops = """
[p1, p2, i1]
- p3 = getarrayitem_gc(p1, 0, descr=arraydescr2)
- p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
- i3 = call(i1, descr=writeadescr)
- p5 = getarrayitem_gc(p1, 0, descr=arraydescr2)
- p6 = getarrayitem_gc(p2, 1, descr=arraydescr2)
+ p3 = getarrayitem_gc_r(p1, 0, descr=arraydescr2)
+ p4 = getarrayitem_gc_r(p2, 1, descr=arraydescr2)
+ i3 = call_i(i1, descr=writeadescr)
+ p5 = getarrayitem_gc_r(p1, 0, descr=arraydescr2)
+ p6 = getarrayitem_gc_r(p2, 1, descr=arraydescr2)
escape(p3)
escape(p4)
escape(p5)
@@ -2807,9 +2809,9 @@
"""
expected = """
[p1, p2, i1]
- p3 = getarrayitem_gc(p1, 0, descr=arraydescr2)
- p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
- i3 = call(i1, descr=writeadescr)
+ p3 = getarrayitem_gc_r(p1, 0, descr=arraydescr2)
+ p4 = getarrayitem_gc_r(p2, 1, descr=arraydescr2)
+ i3 = call_i(i1, descr=writeadescr)
escape(p3)
escape(p4)
escape(p3)
@@ -2821,13 +2823,13 @@
def test_residual_call_invalidate_some_arrays(self):
ops = """
[p1, p2, i1]
- p3 = getarrayitem_gc(p2, 0, descr=arraydescr2)
- p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
- i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
- i3 = call(i1, descr=writearraydescr)
- p5 = getarrayitem_gc(p2, 0, descr=arraydescr2)
- p6 = getarrayitem_gc(p2, 1, descr=arraydescr2)
- i4 = getarrayitem_gc(p1, 1, descr=arraydescr)
+ p3 = getarrayitem_gc_r(p2, 0, descr=arraydescr2)
+ p4 = getarrayitem_gc_r(p2, 1, descr=arraydescr2)
+ i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
+ i3 = call_i(i1, descr=writearraydescr)
+ p5 = getarrayitem_gc_r(p2, 0, descr=arraydescr2)
+ p6 = getarrayitem_gc_r(p2, 1, descr=arraydescr2)
+ i4 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
escape(p3)
escape(p4)
escape(p5)
@@ -2838,11 +2840,11 @@
"""
expected = """
[p1, p2, i1]
- p3 = getarrayitem_gc(p2, 0, descr=arraydescr2)
- p4 = getarrayitem_gc(p2, 1, descr=arraydescr2)
- i2 = getarrayitem_gc(p1, 1, descr=arraydescr)
- i3 = call(i1, descr=writearraydescr)
- i4 = getarrayitem_gc(p1, 1, descr=arraydescr)
+ p3 = getarrayitem_gc_r(p2, 0, descr=arraydescr2)
+ p4 = getarrayitem_gc_r(p2, 1, descr=arraydescr2)
+ i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
+ i3 = call_i(i1, descr=writearraydescr)
+ i4 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
escape(p3)
escape(p4)
escape(p3)
@@ -2858,7 +2860,7 @@
[p1, i1, p2, i2]
setfield_gc(p1, i1, descr=valuedescr)
setfield_gc(p2, i2, descr=adescr)
- i3 = call(i1, descr=readadescr)
+ i3 = call_i(i1, descr=readadescr)
setfield_gc(p1, i3, descr=valuedescr)
setfield_gc(p2, i3, descr=adescr)
jump(p1, i1, p2, i2)
@@ -2866,7 +2868,7 @@
expected = """
[p1, i1, p2, i2]
setfield_gc(p2, i2, descr=adescr)
- i3 = call(i1, descr=readadescr)
+ i3 = call_i(i1, descr=readadescr)
setfield_gc(p1, i3, descr=valuedescr)
setfield_gc(p2, i3, descr=adescr)
jump(p1, i1, p2, i2)
@@ -2878,7 +2880,7 @@
[p1, i1, p2, i2]
setfield_gc(p1, i1, descr=valuedescr)
setfield_gc(p2, i2, descr=adescr)
- i3 = call(i1, descr=writeadescr)
+ i3 = call_i(i1, descr=writeadescr)
setfield_gc(p1, i3, descr=valuedescr)
setfield_gc(p2, i3, descr=adescr)
jump(p1, i1, p2, i2)
@@ -2886,7 +2888,7 @@
expected = """
[p1, i1, p2, i2]
setfield_gc(p2, i2, descr=adescr)
- i3 = call(i1, descr=writeadescr)
+ i3 = call_i(i1, descr=writeadescr)
setfield_gc(p1, i3, descr=valuedescr)
setfield_gc(p2, i3, descr=adescr)
jump(p1, i1, p2, i2)
@@ -2898,7 +2900,7 @@
[p1, i1, p2, i2]
setfield_gc(p1, i1, descr=valuedescr)
setfield_gc(p2, i2, descr=adescr)
- i3 = call(i1, descr=plaincalldescr)
+ i3 = call_i(i1, descr=plaincalldescr)
setfield_gc(p1, i3, descr=valuedescr)
setfield_gc(p2, i3, descr=adescr)
jump(p1, i1, p2, i2)
@@ -2909,7 +2911,7 @@
ops = '''
[p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
- i3 = call_assembler(i1, descr=asmdescr)
+ i3 = call_assembler_i(i1, descr=asmdescr)
setfield_gc(p1, i3, descr=valuedescr)
jump(p1, i3)
'''
@@ -2920,14 +2922,14 @@
ops = '''
[p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
- i3 = call_pure(p1, descr=plaincalldescr)
+ i3 = call_pure_i(p1, descr=plaincalldescr)
setfield_gc(p1, i3, descr=valuedescr)
jump(p1, i3)
'''
expected = '''
[p1, i1]
setfield_gc(p1, i1, descr=valuedescr)
- i3 = call(p1, descr=plaincalldescr)
+ i3 = call_i(p1, descr=plaincalldescr)
setfield_gc(p1, i3, descr=valuedescr)
jump(p1, i3)
'''
@@ -2939,24 +2941,22 @@
# time. Check that it is either constant-folded (and replaced by
# the result of the call, recorded as the first arg), or turned into
# a regular CALL.
- arg_consts = [ConstInt(i) for i in (123456, 4, 5, 6)]
- call_pure_results = {tuple(arg_consts): ConstInt(42)}
ops = '''
[i0, i1, i2]
escape(i1)
escape(i2)
- i3 = call_pure(123456, 4, 5, 6, descr=plaincalldescr)
- i4 = call_pure(123456, 4, i0, 6, descr=plaincalldescr)
+ i3 = call_pure_i(123456, 4, 5, 6, descr=plaincalldescr)
+ i4 = call_pure_i(123456, 4, i0, 6, descr=plaincalldescr)
jump(i0, i3, i4)
'''
expected = '''
[i0, i1, i2]
escape(i1)
escape(i2)
- i4 = call(123456, 4, i0, 6, descr=plaincalldescr)
+ i4 = call_i(123456, 4, i0, 6, descr=plaincalldescr)
jump(i0, 42, i4)
'''
- self.optimize_loop(ops, expected, call_pure_results)
+ self.optimize_loop(ops, expected, results=[None, None, 42, 42, None])
def test_vref_nonvirtual_nonescape(self):
ops = """
diff --git a/pypy/jit/metainterp/optimizeopt/virtualize.py b/pypy/jit/metainterp/optimizeopt/virtualize.py
--- a/pypy/jit/metainterp/optimizeopt/virtualize.py
+++ b/pypy/jit/metainterp/optimizeopt/virtualize.py
@@ -271,13 +271,13 @@
optforce.emit_operation(op)
def get_args_for_fail(self, modifier):
- if self.box is None and not modifier.already_seen_virtual(self.keybox):
+ if not self.forced and not modifier.already_seen_virtual(self.op):
# checks for recursion: it is False unless
# we have already seen the very same keybox
itemboxes = []
for itemvalue in self._items:
itemboxes.append(itemvalue.get_key_box())
- modifier.register_virtual_fields(self.keybox, itemboxes)
+ modifier.register_virtual_fields(self.op, itemboxes)
for itemvalue in self._items:
itemvalue.get_args_for_fail(modifier)
More information about the pypy-commit
mailing list