[pypy-commit] pypy default: Backed out changeset 4033391a3442

arigo noreply at buildbot.pypy.org
Sat Feb 4 15:32:16 CET 2012


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r52089:28c54434dea0
Date: 2012-02-04 15:31 +0100
http://bitbucket.org/pypy/pypy/changeset/28c54434dea0/

Log:	Backed out changeset 4033391a3442 ...no, it does not work, because
	the CALL_ASSEMBLER/GUARD_NOT_FORCED are paired in the backend and
	the virtualizable still doesn't survive past that pair...

diff --git a/pypy/jit/backend/llgraph/llimpl.py b/pypy/jit/backend/llgraph/llimpl.py
--- a/pypy/jit/backend/llgraph/llimpl.py
+++ b/pypy/jit/backend/llgraph/llimpl.py
@@ -174,7 +174,7 @@
     'debug_merge_point': (('ref', 'int'), None),
     'force_token'     : ((), 'int'),
     'call_may_force'  : (('int', 'varargs'), 'intorptr'),
-    'guard_not_forced': (('ref',), None),
+    'guard_not_forced': ((), None),
 }
 
 # ____________________________________________________________
@@ -1053,7 +1053,7 @@
         finally:
             self._may_force = -1
 
-    def op_guard_not_forced(self, descr, vable_ignored):
+    def op_guard_not_forced(self, descr):
         forced = self._forced
         self._forced = False
         if forced:
diff --git a/pypy/jit/metainterp/pyjitpl.py b/pypy/jit/metainterp/pyjitpl.py
--- a/pypy/jit/metainterp/pyjitpl.py
+++ b/pypy/jit/metainterp/pyjitpl.py
@@ -1346,15 +1346,12 @@
             resbox = self.metainterp.execute_and_record_varargs(
                 rop.CALL_MAY_FORCE, allboxes, descr=descr)
             self.metainterp.vrefs_after_residual_call()
-            vablebox = None
             if assembler_call:
-                vablebox = self.metainterp.direct_assembler_call(
-                    assembler_call_jd)
+                self.metainterp.direct_assembler_call(assembler_call_jd)
             if resbox is not None:
                 self.make_result_of_lastop(resbox)
             self.metainterp.vable_after_residual_call()
-            self.generate_guard(rop.GUARD_NOT_FORCED,
-                                extraargs=[vablebox or history.CONST_NULL])
+            self.generate_guard(rop.GUARD_NOT_FORCED, None)
             self.metainterp.handle_possible_exception()
             return resbox
         else:
@@ -2481,15 +2478,6 @@
         token = warmrunnerstate.get_assembler_token(greenargs)
         op = op.copy_and_change(rop.CALL_ASSEMBLER, args=args, descr=token)
         self.history.operations.append(op)
-        #
-        # To fix an obscure issue, make sure the vable stays alive
-        # longer than the CALL_ASSEMBLER operation.  We stick it
-        # randomly to the GUARD_NOT_FORCED that follows.
-        jd = token.outermost_jitdriver_sd
-        if jd.index_of_virtualizable >= 0:
-            return args[jd.index_of_virtualizable]
-        else:
-            return None
 
 # ____________________________________________________________
 
diff --git a/pypy/jit/metainterp/resoperation.py b/pypy/jit/metainterp/resoperation.py
--- a/pypy/jit/metainterp/resoperation.py
+++ b/pypy/jit/metainterp/resoperation.py
@@ -391,7 +391,7 @@
     'GUARD_EXCEPTION/1d',       # may be called with an exception currently set
     'GUARD_NO_OVERFLOW/0d',
     'GUARD_OVERFLOW/0d',
-    'GUARD_NOT_FORCED/1d',      # may be called with an exception currently set
+    'GUARD_NOT_FORCED/0d',      # may be called with an exception currently set
     'GUARD_NOT_INVALIDATED/0d',
     '_GUARD_LAST', # ----- end of guard operations -----
 


More information about the pypy-commit mailing list