[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