Author: Armin Rigo <[email protected]>
Branch: guard-compatible
Changeset: r84591:26d214acc8c3
Date: 2016-05-22 22:01 +0200
http://bitbucket.org/pypy/pypy/changeset/26d214acc8c3/
Log: Fix for guard_compatible_2
diff --git a/rpython/jit/backend/x86/assembler.py
b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -742,11 +742,11 @@
# the field in question to point (initially) to the recovery stub
clt = self.current_clt
for tok in self.pending_guard_tokens:
- addr = rawstart + tok.pos_jump_offset
if tok.guard_compatible():
- guard_compat.patch_guard_compatible(tok, addr,
+ guard_compat.patch_guard_compatible(tok, rawstart,
self.gc_table_addr)
continue
+ addr = rawstart + tok.pos_jump_offset
tok.faildescr.adr_jump_offset = addr
descr = tok.faildescr
if descr.loop_version():
diff --git a/rpython/jit/backend/x86/guard_compat.py
b/rpython/jit/backend/x86/guard_compat.py
--- a/rpython/jit/backend/x86/guard_compat.py
+++ b/rpython/jit/backend/x86/guard_compat.py
@@ -308,11 +308,12 @@
# bchoices.bc_list[0].asmaddr: patch_guard_compatible()
return bchoices
-def patch_guard_compatible(guard_token, sequel_label, gc_table_addr):
+def patch_guard_compatible(guard_token, rawstart, gc_table_addr):
# go to the address in the gctable, number 'bindex'
bindex = guard_token.guard_compat_bindex
choices_addr = gc_table_addr + WORD * bindex
- failure_recovery = guard_token.pos_recovery_stub
+ sequel_label = rawstart + guard_token.pos_jump_offset
+ failure_recovery = rawstart + guard_token.pos_recovery_stub
gcmap = guard_token.gcmap
# choices_addr: points to bchoices in the GC table
# sequel_label: "sequel:" label above
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit