[pypy-commit] pypy result-in-resops: a bit of progress all over
alex_gaynor
noreply at buildbot.pypy.org
Sat Oct 27 18:30:00 CEST 2012
Author: Alex Gaynor <alex.gaynor at gmail.com>
Branch: result-in-resops
Changeset: r58505:c3e20e9919f9
Date: 2012-10-27 09:29 -0700
http://bitbucket.org/pypy/pypy/changeset/c3e20e9919f9/
Log: a bit of progress all over
diff --git a/pypy/jit/metainterp/optimizeopt/rewrite.py b/pypy/jit/metainterp/optimizeopt/rewrite.py
--- a/pypy/jit/metainterp/optimizeopt/rewrite.py
+++ b/pypy/jit/metainterp/optimizeopt/rewrite.py
@@ -384,8 +384,8 @@
return self._optimize_nullness(op, op.getarg(0), False)
def _optimize_oois_ooisnot(self, op, expect_isnot, instance):
- value0 = self.getvalue(op.getarg(0))
- value1 = self.getvalue(op.getarg(1))
+ value0 = self.getforwarded(op.getarg(0))
+ value1 = self.getforwarded(op.getarg(1))
if value0.is_virtual():
if value1.is_virtual():
intres = (value0 is value1) ^ expect_isnot
@@ -445,7 +445,7 @@
if oopspecindex == EffectInfo.OS_ARRAYCOPY:
if self._optimize_CALL_ARRAYCOPY(op):
return
- self.emit_operation(op)
+ return op
optimize_CALL_p = optimize_CALL_i
optimize_CALL_f = optimize_CALL_i
optimize_CALL_v = optimize_CALL_i
@@ -486,14 +486,14 @@
# it's being done by someone else)
for i in range(op.numargs()):
arg = op.getarg(i)
- const = self.get_constant_box(arg)
+ const = self.get_constant_op(arg)
if const is None or not const.eq_value(arg):
break
else:
self.make_constant(op, op.constbox())
self.last_emitted_operation = REMOVED
return
- self.emit_operation(op)
+ return op
optimize_CALL_PURE_f = optimize_CALL_PURE_i
optimize_CALL_PURE_p = optimize_CALL_PURE_i
optimize_CALL_PURE_v = optimize_CALL_PURE_i
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
@@ -464,20 +464,20 @@
def test_oois_1(self):
ops = """
[p0]
- guard_class(p0, ConstClass(node_vtable)) []
+ guard_class(p0, ConstClass(node_vtable))
i0 = instance_ptr_ne(p0, NULL)
- guard_true(i0) []
+ guard_true(i0)
i1 = instance_ptr_eq(p0, NULL)
- guard_false(i1) []
+ guard_false(i1)
i2 = instance_ptr_ne(NULL, p0)
- guard_true(i0) []
+ guard_true(i0)
i3 = instance_ptr_eq(NULL, p0)
- guard_false(i1) []
+ guard_false(i1)
jump(p0)
"""
expected = """
[p0]
- guard_class(p0, ConstClass(node_vtable)) []
+ guard_class(p0, ConstClass(node_vtable))
jump(p0)
"""
self.optimize_loop(ops, expected)
@@ -487,14 +487,14 @@
[p0]
setfield_gc(p0, 5, descr=valuedescr) # forces p0 != NULL
i0 = ptr_ne(p0, NULL)
- guard_true(i0) []
+ guard_true(i0)
i1 = ptr_eq(p0, NULL)
- guard_false(i1) []
+ guard_false(i1)
i2 = ptr_ne(NULL, p0)
- guard_true(i0) []
+ guard_true(i0)
i3 = ptr_eq(NULL, p0)
- guard_false(i1) []
- guard_nonnull(p0) []
+ guard_false(i1)
+ guard_nonnull(p0)
jump(p0)
"""
expected = """
@@ -507,14 +507,14 @@
def test_const_guard_value(self):
ops = """
[i0]
- guard_value(i0, 2) []
+ guard_value(i0, 2)
i = int_add(5, i0)
- guard_value(i, 7) []
+ guard_value(i, 7)
jump(i0)
"""
expected = """
[i0]
- guard_value(i0, 2) []
+ guard_value(i0, 2)
jump(2)
"""
self.optimize_loop(ops, expected)
@@ -522,12 +522,12 @@
def test_constptr_guard_value(self):
ops = """
[p1]
- guard_value(p1, ConstPtr(myptr)) []
+ guard_value(p1, ConstPtr(myptr))
jump(p1)
"""
expected = """
[p1]
- guard_value(p1, ConstPtr(myptr)) []
+ guard_value(p1, ConstPtr(myptr))
jump(ConstPtr(myptr))
"""
self.optimize_loop(ops, expected)
@@ -536,13 +536,13 @@
ops = """
[i]
i1 = int_lt(i, 3)
- guard_value(i1, 1) [i]
+ guard_value(i1, 1)
jump(i)
"""
expected = """
[i]
i1 = int_lt(i, 3)
- guard_true(i1) [i]
+ guard_true(i1)
jump(i)
"""
self.optimize_loop(ops, expected)
@@ -551,13 +551,13 @@
ops = """
[i]
i1 = int_is_true(i)
- guard_value(i1, 0) [i]
+ guard_value(i1, 0)
jump(i)
"""
expected = """
[i]
i1 = int_is_true(i)
- guard_false(i1) [i]
+ guard_false(i1)
jump(i)
"""
self.optimize_loop(ops, expected)
@@ -566,13 +566,13 @@
ops = """
[i]
i1 = int_add(i, 3)
- guard_value(i1, 0) [i]
+ guard_value(i1, 0)
jump(i)
"""
expected = """
[i]
i1 = int_add(i, 3)
- guard_value(i1, 0) [i]
+ guard_value(i1, 0)
jump(-3)
"""
self.optimize_loop(ops, expected)
@@ -583,20 +583,17 @@
i2 = int_gt(i0, i1)
i3 = int_is_true(i2)
i4 = int_is_true(i3)
- guard_value(i4, 0) [i0, i1]
+ guard_value(i4, 0)
jump(i0, i1)
"""
expected = """
[i0, i1]
i2 = int_gt(i0, i1)
- guard_false(i2) [i0, i1]
+ guard_false(i2)
jump(i0, i1)
"""
self.optimize_loop(ops, expected)
-
-
-
def test_p123_simple(self):
ops = """
[i1, p2, p3]
@@ -647,7 +644,7 @@
ops = """
[i1]
i2 = call_i(i1, descr=nonwritedescr)
- guard_no_exception() [i1, i2]
+ guard_no_exception()
jump(i2)
"""
self.optimize_loop(ops, ops)
@@ -656,13 +653,13 @@
ops = """
[i1]
i2 = call_pure_i(123456, i1, descr=nonwritedescr)
- guard_no_exception() [i1, i2]
+ guard_no_exception()
jump(i2)
"""
expected = """
[i1]
i2 = call_i(123456, i1, descr=nonwritedescr)
- guard_no_exception() [i1, i2]
+ guard_no_exception()
jump(i2)
"""
self.optimize_loop(ops, expected)
@@ -672,7 +669,7 @@
[i1]
i3 = same_as_i(81)
i2 = call_pure_i(123456, i3, descr=nonwritedescr)
- guard_no_exception() [i1, i2]
+ guard_no_exception()
jump(i2)
"""
expected = """
@@ -685,15 +682,15 @@
ops = """
[i1]
i2 = call_pure_i(123456, i1, descr=nonwritedescr)
- guard_no_exception() [i1, i2]
+ guard_no_exception()
i3 = call_pure_i(123456, i1, descr=nonwritedescr)
- guard_no_exception() [i1, i2, i3]
+ guard_no_exception()
jump(i3)
"""
expected = """
[i1]
i2 = call_i(123456, i1, descr=nonwritedescr)
- guard_no_exception() [i1, i2]
+ guard_no_exception()
jump(i2)
"""
self.optimize_loop(ops, expected)
@@ -704,26 +701,25 @@
ops = """
[i1]
i2 = call_loopinvariant_i(1, i1, descr=nonwritedescr)
- guard_no_exception() []
- guard_value(i2, 1) []
+ guard_no_exception()
+ guard_value(i2, 1)
i3 = call_loopinvariant_i(1, i1, descr=nonwritedescr)
- guard_no_exception() []
- guard_value(i3, 1) []
+ guard_no_exception()
+ guard_value(i3, 1)
i4 = call_loopinvariant_i(1, i1, descr=nonwritedescr)
- guard_no_exception() []
- guard_value(i4, 1) []
+ guard_no_exception()
+ guard_value(i4, 1)
jump(i1)
"""
expected = """
[i1]
i2 = call_i(1, i1, descr=nonwritedescr)
- guard_no_exception() []
- guard_value(i2, 1) []
+ guard_no_exception()
+ guard_value(i2, 1)
jump(i1)
"""
self.optimize_loop(ops, expected)
-
# ----------
def test_virtual_1(self):
@@ -1089,13 +1085,13 @@
def test_getfield_gc_pure_2(self):
ops = """
[p0, i]
- guard_value(p0, ConstPtr(myptr)) []
+ guard_value(p0, ConstPtr(myptr))
i1 = getfield_gc_pure_i(p0, descr=valuedescr)
jump(p0, i1)
"""
expected = """
[p0, i]
- guard_value(p0, ConstPtr(myptr)) []
+ guard_value(p0, ConstPtr(myptr))
jump(ConstPtr(myptr), 5)
"""
self.node.value = 5
@@ -1115,7 +1111,7 @@
[i1]
p1 = new_array(3, descr=arraydescr)
i3 = arraylen_gc(p1, descr=arraydescr)
- guard_value(i3, 3) []
+ guard_value(i3, 3)
setarrayitem_gc(p1, 1, i1, descr=arraydescr)
setarrayitem_gc(p1, 0, 25, descr=arraydescr)
i2 = getarrayitem_gc_i(p1, 1, descr=arraydescr)
@@ -1146,7 +1142,7 @@
[f1]
p1 = new_array(3, descr=floatarraydescr)
i3 = arraylen_gc(p1, descr=floatarraydescr)
- guard_value(i3, 3) []
+ guard_value(i3, 3)
setarrayitem_gc(p1, 1, f1, descr=floatarraydescr)
setarrayitem_gc(p1, 0, 3.5, descr=floatarraydescr)
f2 = getarrayitem_gc_f(p1, 1, descr=floatarraydescr)
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
@@ -425,7 +425,7 @@
# was already forced).
def optimize_GETFIELD_GC_i(self, op):
- value = self.getvalue(op.getarg(0))
+ value = self.getforwarded(op.getarg(0))
# If this is an immutable field (as indicated by op.is_always_pure())
# then it's safe to reuse the virtual's field, even if it has been
# forced, because it should never be written to again.
@@ -472,7 +472,7 @@
self.make_vstruct(op.getdescr(), op)
def optimize_NEW_ARRAY(self, op):
- sizebox = self.get_constant_box(op.getarg(0))
+ sizebox = self.get_constant_op(op.getarg(0))
if sizebox is not None:
# if the original 'op' did not have a ConstInt as argument,
# build a new one with the ConstInt argument
diff --git a/pypy/jit/metainterp/optimizeopt/vstring.py b/pypy/jit/metainterp/optimizeopt/vstring.py
--- a/pypy/jit/metainterp/optimizeopt/vstring.py
+++ b/pypy/jit/metainterp/optimizeopt/vstring.py
@@ -538,7 +538,7 @@
if oopspecindex == EffectInfo.OS_STR2UNICODE:
if self.opt_call_str_STR2UNICODE(op):
return
- self.emit_operation(op)
+ return op
optimize_CALL_f = optimize_CALL_i
optimize_CALL_r = optimize_CALL_i
optimize_CALL_v = optimize_CALL_i
More information about the pypy-commit
mailing list