[pypy-commit] pypy default: backout c8e9da1478dc, broke translation
bdkearns
noreply at buildbot.pypy.org
Thu May 1 20:13:07 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r71145:7b0b1b52601d
Date: 2014-05-01 14:11 -0400
http://bitbucket.org/pypy/pypy/changeset/7b0b1b52601d/
Log: backout c8e9da1478dc, broke translation
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -347,21 +347,6 @@
def forget_numberings(self, box):
self.optimizer.forget_numberings(box)
- def _can_optimize_call_pure(self, op):
- arg_consts = []
- for i in range(op.numargs()):
- arg = op.getarg(i)
- const = self.get_constant_box(arg)
- if const is None:
- return None
- arg_consts.append(const)
- else:
- # all constant arguments: check if we already know the result
- try:
- return self.optimizer.call_pure_results[arg_consts]
- except KeyError:
- return None
-
class Optimizer(Optimization):
diff --git a/rpython/jit/metainterp/optimizeopt/pure.py b/rpython/jit/metainterp/optimizeopt/pure.py
--- a/rpython/jit/metainterp/optimizeopt/pure.py
+++ b/rpython/jit/metainterp/optimizeopt/pure.py
@@ -57,16 +57,6 @@
self.emit_operation(nextop)
def optimize_CALL_PURE(self, op):
- # Step 1: check if all arguments are constant
- result = self._can_optimize_call_pure(op)
- if result is not None:
- # this removes a CALL_PURE with all constant arguments.
- self.make_constant(op.result, result)
- self.last_emitted_operation = REMOVED
- return
-
- # Step 2: check if all arguments are the same as a previous
- # CALL_PURE.
args = self.optimizer.make_args_key(op)
oldop = self.pure_operations.get(args, None)
if oldop is not None and oldop.getdescr() is op.getdescr():
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
@@ -516,13 +516,24 @@
return False
def optimize_CALL_PURE(self, op):
- # this removes a CALL_PURE with all constant arguments.
- # Note that it's also done in pure.py. For now we need both...
- result = self._can_optimize_call_pure(op)
- if result is not None:
- self.make_constant(op.result, result)
- self.last_emitted_operation = REMOVED
- return
+ arg_consts = []
+ for i in range(op.numargs()):
+ arg = op.getarg(i)
+ const = self.get_constant_box(arg)
+ if const is None:
+ break
+ arg_consts.append(const)
+ else:
+ # all constant arguments: check if we already know the result
+ try:
+ result = self.optimizer.call_pure_results[arg_consts]
+ except KeyError:
+ pass
+ else:
+ # this removes a CALL_PURE with all constant arguments.
+ self.make_constant(op.result, result)
+ self.last_emitted_operation = REMOVED
+ return
self.emit_operation(op)
def optimize_GUARD_NO_EXCEPTION(self, op):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -5164,6 +5164,7 @@
self.optimize_strunicode_loop(ops, expected)
def test_call_pure_vstring_const(self):
+ py.test.skip("implement me")
ops = """
[]
p0 = newstr(3)
More information about the pypy-commit
mailing list