[pypy-commit] pypy resume-refactor: some missing commit
fijal
noreply at buildbot.pypy.org
Fri Mar 21 12:12:47 CET 2014
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch: resume-refactor
Changeset: r70145:8f7d82dde2ed
Date: 2014-03-21 12:35 +0200
http://bitbucket.org/pypy/pypy/changeset/8f7d82dde2ed/
Log: some missing commit
diff --git a/TODO b/TODO
--- a/TODO
+++ b/TODO
@@ -7,4 +7,4 @@
* do escape analysis in the resume/optimizer.py
-* make_a_counter_per_value got screwed, but a bit no clue what it does
+* reimplement make_a_counter_per_value
diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -498,9 +498,8 @@
self.guard_opnum = guard_op.getopnum()
def make_a_counter_per_value(self, guard_value_op):
+ return # XXXX
assert guard_value_op.getopnum() == rop.GUARD_VALUE
- # XXX I have no clue what exactly it does, but we killed failargs
- # so i is always 0 now
box = guard_value_op.getarg(0)
i = 0
# used to be i = guard_value_op.getfailargs().index(box)
@@ -557,6 +556,7 @@
else: # we have a GUARD_VALUE that fails. Make a _counters instance
# (only now, when the guard is actually failing at least once),
# and use it to record some statistics about the failing values.
+ assert 0 # XXX this should be dead code until we fix it
index = self._counter & self.CNT_BASE_MASK
typetag = self._counter & self.CNT_TYPE_MASK
counters = self._counters
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
@@ -568,10 +568,6 @@
raise ValueError, "invalid optimization"
self.seen_results[op.result] = None
self._newoperations.append(op)
- if (self.delayed_resume_put is not None and
- self.delayed_resume_put.getarg(0) is op.result):
- self._newoperations.append(self.delayed_resume_put)
- self.delayed_resume_put = None
def replace_op(self, old_op, new_op):
# XXX: Do we want to cache indexes to prevent search?
diff --git a/rpython/jit/metainterp/optimizeopt/resume.py b/rpython/jit/metainterp/optimizeopt/resume.py
--- a/rpython/jit/metainterp/optimizeopt/resume.py
+++ b/rpython/jit/metainterp/optimizeopt/resume.py
@@ -1,6 +1,7 @@
from rpython.jit.metainterp.optimizeopt import optimizer
from rpython.jit.metainterp.optimizeopt.util import make_dispatcher_method
+from rpython.jit.metainterp.history import Const
""" All of this directly emit the ops, without calling emit_operation
(they also don't have boxes except a resume_put)
@@ -8,9 +9,12 @@
class OptResume(optimizer.Optimization):
def optimize_RESUME_PUT(self, op):
- if op.getarg(0) in self.optimizer.producer:
+ arg = op.getarg(0)
+ if (isinstance(arg, Const) or arg in self.optimizer.producer or
+ arg in self.optimizer.loop.inputargs):
self.optimizer.resumebuilder.resume_put(op)
else:
+ xxx
self.optimizer.delayed_resume_put = op
# otherwise we did not emit the operation just yet
diff --git a/rpython/jit/resume/optimizer.py b/rpython/jit/resume/optimizer.py
--- a/rpython/jit/resume/optimizer.py
+++ b/rpython/jit/resume/optimizer.py
@@ -49,6 +49,7 @@
no = op.getarg(2).getint()
self.framestack[op.getarg(1).getint()].values[no] = value
else:
+ XXX
self.opt.emit_operation(op)
def new_virtual_with_vtable(self, box, vtable, vvalue):
diff --git a/rpython/jit/resume/test/support.py b/rpython/jit/resume/test/support.py
new file mode 100644
--- /dev/null
+++ b/rpython/jit/resume/test/support.py
@@ -0,0 +1,5 @@
+
+class MockStaticData(object):
+ def __init__(self, jitcodes, descrs):
+ self.alljitcodes = jitcodes
+ self.opcode_descrs = descrs
More information about the pypy-commit
mailing list