[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