Author: Armin Rigo <[email protected]>
Branch:
Changeset: r80329:6d8880c45110
Date: 2015-10-19 09:28 +0200
http://bitbucket.org/pypy/pypy/changeset/6d8880c45110/
Log: fix in the llgraph backend: multiple redirections of compiled loops
didn't work
diff --git a/rpython/jit/backend/llgraph/runner.py
b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -371,16 +371,16 @@
trace.invalid = True
def redirect_call_assembler(self, oldlooptoken, newlooptoken):
- oldtrace = oldlooptoken.compiled_loop_token._llgraph_loop
- newtrace = newlooptoken.compiled_loop_token._llgraph_loop
+ oldc = oldlooptoken.compiled_loop_token
+ newc = newlooptoken.compiled_loop_token
+ oldtrace = oldc._llgraph_loop
+ newtrace = newc._llgraph_loop
OLD = [box.type for box in oldtrace.inputargs]
NEW = [box.type for box in newtrace.inputargs]
assert OLD == NEW
- assert not hasattr(oldlooptoken, '_llgraph_redirected')
- oldlooptoken.compiled_loop_token._llgraph_redirected = True
- oldlooptoken.compiled_loop_token._llgraph_loop = newtrace
- alltraces = newlooptoken.compiled_loop_token._llgraph_alltraces
- oldlooptoken.compiled_loop_token._llgraph_alltraces = alltraces
+ assert not hasattr(oldc, '_llgraph_redirected')
+ oldc._llgraph_redirected = newc
+ oldc._llgraph_alltraces = newc._llgraph_alltraces
def free_loop_and_bridges(self, compiled_loop_token):
for c in compiled_loop_token._llgraph_alltraces:
@@ -393,7 +393,10 @@
return self._execute_token
def _execute_token(self, loop_token, *args):
- lltrace = loop_token.compiled_loop_token._llgraph_loop
+ loopc = loop_token.compiled_loop_token
+ while hasattr(loopc, '_llgraph_redirected'):
+ loopc = loopc._llgraph_redirected
+ lltrace = loopc._llgraph_loop
frame = LLFrame(self, lltrace.inputargs, args)
try:
frame.execute(lltrace)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit