Author: Armin Rigo <[email protected]>
Branch:
Changeset: r91059:9fca81f13918
Date: 2017-04-15 20:08 +0200
http://bitbucket.org/pypy/pypy/changeset/9fca81f13918/
Log: Fix for f0ba81de1e4f: there is one caller using SlowPath with
mc._frame_size != DEFAULT_FRAME_BYTES
diff --git a/rpython/jit/backend/x86/codebuf.py
b/rpython/jit/backend/x86/codebuf.py
--- a/rpython/jit/backend/x86/codebuf.py
+++ b/rpython/jit/backend/x86/codebuf.py
@@ -7,7 +7,6 @@
from rpython.jit.backend.x86.rx86 import X86_32_CodeBuilder, X86_64_CodeBuilder
from rpython.jit.backend.x86.regloc import LocationCodeBuilder
from rpython.jit.backend.x86.arch import IS_X86_32, IS_X86_64, WORD
-from rpython.jit.backend.x86.arch import DEFAULT_FRAME_BYTES
from rpython.jit.backend.x86 import rx86, valgrind
# XXX: Seems nasty to change the superclass of MachineCodeBlockWrapper
@@ -86,15 +85,15 @@
class SlowPath(object):
def __init__(self, mc, condition):
- assert mc._frame_size == DEFAULT_FRAME_BYTES
mc.J_il(condition, 0xfffff) # patched later
self.cond_jump_addr = mc.get_relative_pos(break_basic_block=False)
self.saved_scratch_value_1 = mc.get_scratch_register_known_value()
+ self.frame_size = mc._frame_size
def set_continue_addr(self, mc):
- assert mc._frame_size == DEFAULT_FRAME_BYTES
self.continue_addr = mc.get_relative_pos(break_basic_block=False)
self.saved_scratch_value_2 = mc.get_scratch_register_known_value()
+ assert self.frame_size == mc._frame_size
def generate(self, assembler, mc):
# no alignment here, prefer compactness for these slow-paths.
@@ -103,7 +102,7 @@
mc.overwrite32(self.cond_jump_addr-4, offset)
# restore the knowledge of the scratch register value
# (this does not emit any code)
- mc.force_frame_size(DEFAULT_FRAME_BYTES)
+ mc.force_frame_size(self.frame_size)
mc.restore_scratch_register_known_value(self.saved_scratch_value_1)
# generate the body of the slow-path
self.generate_body(assembler, mc)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit