[pypy-commit] pypy default: merge
cfbolz
noreply at buildbot.pypy.org
Wed Aug 20 17:13:30 CEST 2014
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch:
Changeset: r72934:c9b9d0b2ab6c
Date: 2014-08-20 17:12 +0200
http://bitbucket.org/pypy/pypy/changeset/c9b9d0b2ab6c/
Log: merge
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -47,21 +47,15 @@
def find_rewritable_bool(self, op, args):
- try:
- oldopnum = opboolinvers[op.getopnum()]
- except KeyError:
- pass
- else:
+ oldopnum = opboolinvers[op.getopnum()]
+ if oldopnum != -1:
targs = self.optimizer.make_args_key(ResOperation(oldopnum, [args[0], args[1]],
None))
if self.try_boolinvers(op, targs):
return True
- try:
- oldopnum = opboolreflex[op.getopnum()] # FIXME: add INT_ADD, INT_MUL
- except KeyError:
- pass
- else:
+ oldopnum = opboolreflex[op.getopnum()] # FIXME: add INT_ADD, INT_MUL
+ if oldopnum != -1:
targs = self.optimizer.make_args_key(ResOperation(oldopnum, [args[1], args[0]],
None))
oldop = self.get_pure_result(targs)
@@ -69,15 +63,14 @@
self.make_equal_to(op.result, self.getvalue(oldop.result))
return True
- try:
- oldopnum = opboolinvers[opboolreflex[op.getopnum()]]
- except KeyError:
- pass
- else:
- targs = self.optimizer.make_args_key(ResOperation(oldopnum, [args[1], args[0]],
- None))
- if self.try_boolinvers(op, targs):
- return True
+ reflex = opboolreflex[op.getopnum()]
+ if reflex != -1:
+ oldopnum = opboolinvers[reflex]
+ if oldopnum != -1:
+ targs = self.optimizer.make_args_key(ResOperation(oldopnum, [args[1], args[0]],
+ None))
+ if self.try_boolinvers(op, targs):
+ return True
return False
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -185,7 +185,7 @@
op = opname[opnum]
except KeyError:
continue
- if 'FLOAT' in op:
+ if 'float' in op:
continue
args = []
for _ in range(oparity[opnum]):
diff --git a/rpython/jit/metainterp/optimizeopt/util.py b/rpython/jit/metainterp/optimizeopt/util.py
--- a/rpython/jit/metainterp/optimizeopt/util.py
+++ b/rpython/jit/metainterp/optimizeopt/util.py
@@ -19,7 +19,7 @@
opname = name[len(name_prefix):]
if opname.isupper():
assert hasattr(resoperation.rop, opname)
- for value, name in resoperation.opname.items():
+ for value, name in enumerate(resoperation.opname):
if op_prefix and not name.startswith(op_prefix):
continue
if hasattr(Class, name_prefix + name):
diff --git a/rpython/jit/metainterp/resoperation.py b/rpython/jit/metainterp/resoperation.py
--- a/rpython/jit/metainterp/resoperation.py
+++ b/rpython/jit/metainterp/resoperation.py
@@ -126,10 +126,7 @@
['descr=%r' % descr]))
def getopname(self):
- try:
- return opname[self.getopnum()].lower()
- except KeyError:
- return '<%d>' % self.getopnum()
+ return opname[self.getopnum()]
def is_guard(self):
return rop._GUARD_FIRST <= self.getopnum() <= rop._GUARD_LAST
@@ -549,7 +546,7 @@
pass
opclasses = [] # mapping numbers to the concrete ResOp class
-opname = {} # mapping numbers to the original names, for debugging
+opname = [] # mapping numbers to the original names, for debugging
oparity = [] # mapping numbers to the arity of the operation or -1
opwithdescr = [] # mapping numbers to a flag "takes a descr"
@@ -571,15 +568,16 @@
arity, withdescr, boolresult = -1, True, False # default
setattr(rop, name, i)
if not name.startswith('_'):
- opname[i] = name
cls = create_class_for_op(name, i, arity, withdescr)
cls._cls_has_bool_result = boolresult
else:
+ name = '<%d>' % i
cls = None
+ opname.append(name.lower())
opclasses.append(cls)
oparity.append(arity)
opwithdescr.append(withdescr)
- assert len(opclasses) == len(oparity) == len(opwithdescr) == len(_oplist)
+ assert len(opclasses) == len(oparity) == len(opwithdescr) == len(_oplist) == len(opname)
def get_base_class(mixin, base):
try:
@@ -619,7 +617,10 @@
setup(__name__ == '__main__') # print out the table when run directly
del _oplist
-opboolinvers = {
+def opdict_to_list(d, default=-1):
+ return [d.get(i, default) for i in range(len(opname))]
+
+opboolinvers = opdict_to_list({
rop.INT_EQ: rop.INT_NE,
rop.INT_NE: rop.INT_EQ,
rop.INT_LT: rop.INT_GE,
@@ -641,9 +642,9 @@
rop.PTR_EQ: rop.PTR_NE,
rop.PTR_NE: rop.PTR_EQ,
-}
+})
-opboolreflex = {
+opboolreflex = opdict_to_list({
rop.INT_EQ: rop.INT_EQ,
rop.INT_NE: rop.INT_NE,
rop.INT_LT: rop.INT_GT,
@@ -665,7 +666,7 @@
rop.PTR_EQ: rop.PTR_EQ,
rop.PTR_NE: rop.PTR_NE,
-}
+})
def get_deep_immutable_oplist(operations):
diff --git a/rpython/jit/metainterp/test/test_executor.py b/rpython/jit/metainterp/test/test_executor.py
--- a/rpython/jit/metainterp/test/test_executor.py
+++ b/rpython/jit/metainterp/test/test_executor.py
@@ -326,13 +326,13 @@
def make_args_for_op(op, a, b):
n=opname[op]
- if n[0:3] == 'INT' or n[0:4] == 'UINT':
+ if n[0:3] == 'int' or n[0:4] == 'uint':
arg1 = ConstInt(a)
arg2 = ConstInt(b)
- elif n[0:5] == 'FLOAT':
+ elif n[0:5] == 'float':
arg1 = constfloat(float(a))
arg2 = constfloat(float(b))
- elif n[0:3] == 'PTR':
+ elif n[0:3] == 'ptr':
arg1 = ConstPtr(rffi.cast(llmemory.GCREF, a))
arg2 = ConstPtr(rffi.cast(llmemory.GCREF, b))
else:
@@ -343,7 +343,9 @@
def test_opboolinvers():
cpu = FakeCPU()
- for op1, op2 in opboolinvers.items():
+ for op1, op2 in enumerate(opboolinvers):
+ if op2 == -1:
+ continue
for a in (1,2,3):
for b in (1,2,3):
arg1, arg2 = make_args_for_op(op1, a, b)
@@ -353,7 +355,9 @@
def test_opboolreflex():
cpu = FakeCPU()
- for op1, op2 in opboolreflex.items():
+ for op1, op2 in enumerate(opboolreflex):
+ if op2 == -1:
+ continue
for a in (1,2,3):
for b in (1,2,3):
arg1, arg2 = make_args_for_op(op1, a, b)
More information about the pypy-commit
mailing list