[pypy-svn] r64450 - in pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp: . test
arigo at codespeak.net
arigo at codespeak.net
Mon Apr 20 15:18:15 CEST 2009
Author: arigo
Date: Mon Apr 20 15:18:12 2009
New Revision: 64450
Modified:
pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py
pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py
Log:
Fix test_path_with_operations_not_from_start_2, by delaying the
effect of can_enter_jit() until the following jit_merge_point().
Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py (original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/codewriter.py Mon Apr 20 15:18:12 2009
@@ -719,12 +719,11 @@
self.emit('jit_merge_point')
assert ([self.var_position(i) for i in op.args[2:]] ==
range(0, 2*(len(op.args) - 2), 2))
- for i in range(2, len(op.args)):
- arg = op.args[i]
- #self._eventualy_builtin(arg)
+ #for i in range(2, len(op.args)):
+ # arg = op.args[i]
+ # self._eventualy_builtin(arg)
elif op.args[0].value == 'can_enter_jit':
self.emit('can_enter_jit')
- self.emit_varargs(op.args[2:])
## def _eventualy_builtin(self, arg, need_length=True):
## if isinstance(arg.concretetype, lltype.Ptr):
Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py (original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/pyjitpl.py Mon Apr 20 15:18:12 2009
@@ -585,14 +585,16 @@
for i in range(num_green_args):
varargs[i] = self.implement_guard_value(pc, varargs[i])
- @arguments("orgpc", "varargs")
- def opimpl_can_enter_jit(self, pc, varargs):
- self.generate_merge_point(pc, varargs)
- self.metainterp.reached_can_enter_jit(varargs)
+ @arguments("orgpc")
+ def opimpl_can_enter_jit(self, pc):
+ self.metainterp.seen_can_enter_jit = True
@arguments("orgpc")
def opimpl_jit_merge_point(self, pc):
self.generate_merge_point(pc, self.env)
+ if self.metainterp.seen_can_enter_jit:
+ self.metainterp.seen_can_enter_jit = False
+ self.metainterp.reached_can_enter_jit(self.env[:])
@arguments("jumptarget")
def opimpl_setup_exception_block(self, exception_target):
@@ -1006,6 +1008,7 @@
self.current_merge_points = [(original_boxes, 0)]
self.resumekey = compile.ResumeFromInterpDescr(original_boxes)
self.extra_rebuild_operations = -1
+ self.seen_can_enter_jit = False
try:
self.interpret()
assert False, "should always raise"
@@ -1021,6 +1024,7 @@
original_boxes = source_loop.greenkey + top_history.inputargs
self.current_merge_points = [(original_boxes, 0)]
self.resumekey = key
+ self.seen_can_enter_jit = False
guard_op = key.get_guard_op()
try:
self.prepare_resume_from_failure(guard_op.opnum)
Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py (original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/metainterp/test/test_loop.py Mon Apr 20 15:18:12 2009
@@ -509,7 +509,6 @@
def test_path_with_operations_not_from_start_2(self):
- py.test.skip("fix it fix it fix it fix it")
jitdriver = JitDriver(greens = ['k'], reds = ['n', 'z', 'stuff'])
class Stuff(object):
More information about the Pypy-commit
mailing list