Author: Maciej Fijalkowski <fij...@gmail.com> Branch: jitframe-on-heap Changeset: r61489:9ce793904fa2 Date: 2013-02-20 11:50 +0200 http://bitbucket.org/pypy/pypy/changeset/9ce793904fa2/
Log: rename confusing locs 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 @@ -19,8 +19,8 @@ from rpython.jit.backend.x86.regloc import (eax, ecx, edx, ebx, esp, ebp, esi, xmm0, xmm1, xmm2, xmm3, xmm4, xmm5, xmm6, xmm7, r8, r9, r10, r11, edi, r12, r13, r14, r15, X86_64_SCRATCH_REG, X86_64_XMM_SCRATCH_REG, - RegLoc, StackLoc, ConstFloatLoc, ImmedLoc, AddressLoc, imm, - imm0, imm1, FloatImmedLoc, RawStackLoc, RawEspLoc) + RegLoc, FrameLoc, ConstFloatLoc, ImmedLoc, AddressLoc, imm, + imm0, imm1, FloatImmedLoc, RawEbpLoc, RawEspLoc) from rpython.rlib.objectmodel import we_are_translated, specialize from rpython.jit.backend.x86 import rx86, codebuf from rpython.jit.metainterp.resoperation import rop, ResOperation @@ -884,7 +884,7 @@ if isinstance(loc, RegLoc) and loc.is_xmm: self.mc.SUB_ri(esp.value, 8) # = size of doubles self.mc.MOVSD_sx(0, loc.value) - elif WORD == 4 and isinstance(loc, StackLoc) and loc.get_width() == 8: + elif WORD == 4 and isinstance(loc, FrameLoc) and loc.get_width() == 8: # XXX evil trick self.mc.PUSH_b(loc.value + 4) self.mc.PUSH_b(loc.value) @@ -895,7 +895,7 @@ if isinstance(loc, RegLoc) and loc.is_xmm: self.mc.MOVSD_xs(loc.value, 0) self.mc.ADD_ri(esp.value, 8) # = size of doubles - elif WORD == 4 and isinstance(loc, StackLoc) and loc.get_width() == 8: + elif WORD == 4 and isinstance(loc, FrameLoc) and loc.get_width() == 8: # XXX evil trick self.mc.POP_b(loc.value) self.mc.POP_b(loc.value + 4) @@ -903,14 +903,14 @@ self.mc.POP(loc) def regalloc_immedmem2mem(self, from_loc, to_loc): - # move a ConstFloatLoc directly to a StackLoc, as two MOVs + # move a ConstFloatLoc directly to a FrameLoc, as two MOVs # (even on x86-64, because the immediates are encoded as 32 bits) assert isinstance(from_loc, ConstFloatLoc) low_part = rffi.cast(rffi.CArrayPtr(rffi.INT), from_loc.value)[0] high_part = rffi.cast(rffi.CArrayPtr(rffi.INT), from_loc.value)[1] low_part = intmask(low_part) high_part = intmask(high_part) - if isinstance(to_loc, RawStackLoc): + if isinstance(to_loc, RawEbpLoc): self.mc.MOV32_bi(to_loc.value, low_part) self.mc.MOV32_bi(to_loc.value + 4, high_part) else: @@ -1196,7 +1196,7 @@ for src, dst in singlefloats: if isinstance(dst, RawEspLoc): # XXX too much special logic - if isinstance(src, RawStackLoc): + if isinstance(src, RawEbpLoc): self.mc.MOV32(X86_64_SCRATCH_REG, src) self.mc.MOV32(dst, X86_64_SCRATCH_REG) else: @@ -1426,7 +1426,7 @@ assert isinstance(resloc, RegLoc) if isinstance(loc, RegLoc): self.mc.MOVD_rx(resloc.value, loc.value) - elif isinstance(loc, StackLoc): + elif isinstance(loc, FrameLoc): self.mc.MOV_rb(resloc.value, loc.value) else: not_implemented("llong_to_int: %s" % (loc,)) @@ -1739,7 +1739,7 @@ elif tmploc is not None: # if both are None, just ignore ofs = self.cpu.get_ofs_of_frame_field('jf_guard_exc') mc.MOV(tmploc, heap(self.cpu.pos_exc_value())) - mc.MOV(RawStackLoc(ofs), tmploc) + mc.MOV(RawEbpLoc(ofs), tmploc) if exctploc is not None: assert exctploc.is_reg() mc.MOV(exctploc, heap(self.cpu.pos_exception())) @@ -1753,7 +1753,7 @@ else: assert tmploc is not None ofs = self.cpu.get_ofs_of_frame_field('jf_guard_exc') - mc.MOV(tmploc, RawStackLoc(ofs)) + mc.MOV(tmploc, RawEbpLoc(ofs)) mc.MOV_bi(ofs, 0) mc.MOV(heap(self.cpu.pos_exc_value()), tmploc) mc.MOV(heap(self.cpu.pos_exception()), exctploc) @@ -1890,7 +1890,7 @@ def new_stack_loc(self, i, pos, tp): base_ofs = self.cpu.get_baseofs_of_frame_field() - return StackLoc(i, get_ebp_ofs(base_ofs, i), tp) + return FrameLoc(i, get_ebp_ofs(base_ofs, i), tp) def setup_failure_recovery(self): self.failure_recovery_code = [0, 0, 0, 0] @@ -1983,7 +1983,7 @@ else: [fail_descr_loc] = arglocs ofs = self.cpu.get_ofs_of_frame_field('jf_descr') - self.mov(fail_descr_loc, RawStackLoc(ofs)) + self.mov(fail_descr_loc, RawEbpLoc(ofs)) arglist = op.getarglist() if arglist and arglist[0].type == REF: gcmap = self.gcmap_for_finish @@ -2027,7 +2027,7 @@ argtypes=descr.get_arg_types(), callconv=descr.get_call_conv()) - if IS_X86_32 and isinstance(resloc, StackLoc) and resloc.type == FLOAT: + if IS_X86_32 and isinstance(resloc, FrameLoc) and resloc.type == FLOAT: # a float or a long long return if descr.get_result_type() == 'L': self.mc.MOV_br(resloc.value, eax.value) # long long @@ -2227,7 +2227,8 @@ return self.mc.get_relative_pos() def _call_assembler_patch_je(self, result_loc, je_location): - if IS_X86_32 and isinstance(result_loc, StackLoc) and result_loc.type == FLOAT: + if (IS_X86_32 and isinstance(result_loc, FrameLoc) and + result_loc.type == FLOAT): self.mc.FSTPL_b(result_loc.value) self.mc.JMP_l8(0) # jump to done, patched later jmp_location = self.mc.get_relative_pos() @@ -2498,7 +2499,7 @@ return AddressLoc(loc, imm0, 0, offset) def raw_stack(offset, type=INT): - return RawStackLoc(offset, type) + return RawEbpLoc(offset, type) def heap(addr): return AddressLoc(ImmedLoc(addr), imm0, 0, 0) diff --git a/rpython/jit/backend/x86/jump.py b/rpython/jit/backend/x86/jump.py --- a/rpython/jit/backend/x86/jump.py +++ b/rpython/jit/backend/x86/jump.py @@ -1,7 +1,5 @@ -import sys -from rpython.tool.pairtype import extendabletype + from rpython.jit.backend.x86.regloc import ImmediateAssemblerLocation -from rpython.jit.backend.x86.regloc import RegLoc, StackLoc def remap_frame_layout(assembler, src_locations, dst_locations, tmpreg): pending_dests = len(dst_locations) diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py --- a/rpython/jit/backend/x86/regalloc.py +++ b/rpython/jit/backend/x86/regalloc.py @@ -106,7 +106,7 @@ self.base_ofs = base_ofs def frame_pos(self, i, box_type): - return StackLoc(i, get_ebp_ofs(self.base_ofs, i), box_type) + return FrameLoc(i, get_ebp_ofs(self.base_ofs, i), box_type) @staticmethod def frame_size(box_type): @@ -117,7 +117,7 @@ @staticmethod def get_loc_index(loc): - assert isinstance(loc, StackLoc) + assert isinstance(loc, FrameLoc) return loc.position if WORD == 4: @@ -872,7 +872,7 @@ gcmap[val // WORD // 8] |= r_uint(1) << (val % (WORD * 8)) for box, loc in self.fm.bindings.iteritems(): if box.type == REF: - assert isinstance(loc, StackLoc) + assert isinstance(loc, FrameLoc) val = loc.position + JITFRAME_FIXED_SIZE gcmap[val // WORD // 8] |= r_uint(1) << (val % (WORD * 8)) for i in range(len(gcmap)): @@ -1195,7 +1195,7 @@ box = jump_op.getarg(i) if isinstance(box, Box): loc = arglocs[i] - if isinstance(loc, StackLoc): + if isinstance(loc, FrameLoc): self.fm.hint_frame_locations[box] = loc def consider_jump(self, op): diff --git a/rpython/jit/backend/x86/regloc.py b/rpython/jit/backend/x86/regloc.py --- a/rpython/jit/backend/x86/regloc.py +++ b/rpython/jit/backend/x86/regloc.py @@ -11,7 +11,7 @@ # # This module adds support for "locations", which can be either in a Const, -# or a RegLoc or a StackLoc. It also adds operations like mc.ADD(), which +# or a RegLoc or a FrameLoc. It also adds operations like mc.ADD(), which # take two locations as arguments, decode them, and calls the right # mc.ADD_rr()/ADD_rb()/ADD_ri(). # @@ -51,7 +51,7 @@ def get_position(self): raise NotImplementedError # only for stack -class RawStackLoc(AssemblerLocation): +class RawEbpLoc(AssemblerLocation): """ The same as stack location, but does not know it's position. Mostly usable for raw frame access """ @@ -77,7 +77,7 @@ return self.type == FLOAT def add_offset(self, ofs): - return RawStackLoc(self.value + ofs) + return RawEbpLoc(self.value + ofs) def is_stack(self): return True @@ -110,7 +110,7 @@ def is_float(self): return self.type == FLOAT -class StackLoc(RawStackLoc): +class FrameLoc(RawEbpLoc): _immutable_ = True def __init__(self, position, ebp_offset, type): diff --git a/rpython/jit/backend/x86/test/test_jump.py b/rpython/jit/backend/x86/test/test_jump.py --- a/rpython/jit/backend/x86/test/test_jump.py +++ b/rpython/jit/backend/x86/test/test_jump.py @@ -23,7 +23,7 @@ def regalloc_immedmem2mem(self, from_loc, to_loc): assert isinstance(from_loc, ConstFloatLoc) - assert isinstance(to_loc, StackLoc) + assert isinstance(to_loc, FrameLoc) self.ops.append(('immedmem2mem', from_loc, to_loc)) def got(self, expected): @@ -34,7 +34,7 @@ continue assert len(op1) == len(op2) for x, y in zip(op1, op2): - if isinstance(x, StackLoc) and isinstance(y, MODRM): + if isinstance(x, FrameLoc) and isinstance(y, MODRM): assert x.byte == y.byte assert x.extradata == y.extradata else: @@ -262,7 +262,7 @@ while len(result) < count: x = fn() keys = [x._getregkey()] - if isinstance(x, StackLoc) and x.get_width() > WORD: + if isinstance(x, FrameLoc) and x.get_width() > WORD: keys.append(keys[0] + WORD) for key in keys: if key in seen: @@ -288,7 +288,7 @@ regs2[loc.value] = newvalue else: regs1[loc.value] = 'value-int-%d' % i - elif isinstance(loc, StackLoc): + elif isinstance(loc, FrameLoc): stack[loc.value] = 'value-width%d-%d' % (loc.get_width(), i) if loc.get_width() > WORD: stack[loc.value+WORD] = 'value-hiword-%d' % i @@ -318,7 +318,7 @@ return regs2[loc.value] else: return regs1[loc.value] - if isinstance(loc, StackLoc): + if isinstance(loc, FrameLoc): got = stack[loc.value] if loc.get_width() > WORD: got = (got, stack[loc.value+WORD]) @@ -339,7 +339,7 @@ regs2[loc.value] = newvalue else: regs1[loc.value] = newvalue - elif isinstance(loc, StackLoc): + elif isinstance(loc, FrameLoc): if loc.get_width() > WORD: newval1, newval2 = newvalue stack[loc.value] = newval1 @@ -360,23 +360,23 @@ assert isinstance(dst, RegLoc) assert dst.is_xmm else: - assert isinstance(src, (RegLoc, StackLoc, ImmedLoc)) - assert isinstance(dst, (RegLoc, StackLoc)) - assert not (isinstance(src, StackLoc) and - isinstance(dst, StackLoc)) + assert isinstance(src, (RegLoc, FrameLoc, ImmedLoc)) + assert isinstance(dst, (RegLoc, FrameLoc)) + assert not (isinstance(src, FrameLoc) and + isinstance(dst, FrameLoc)) write(dst, read(src)) elif op[0] == 'push': src, = op[1:] - assert isinstance(src, (RegLoc, StackLoc)) + assert isinstance(src, (RegLoc, FrameLoc)) extrapushes.append(read(src)) elif op[0] == 'pop': dst, = op[1:] - assert isinstance(dst, (RegLoc, StackLoc)) + assert isinstance(dst, (RegLoc, FrameLoc)) write(dst, extrapushes.pop()) elif op[0] == 'immedmem2mem': src, dst = op[1:] assert isinstance(src, ConstFloatLoc) - assert isinstance(dst, StackLoc) + assert isinstance(dst, FrameLoc) write(dst, read(src, 8)) else: assert 0, "unknown op: %r" % (op,) @@ -406,8 +406,8 @@ def regalloc_immedmem2mem(self, x, y): print "?????????????????????????" def main(): - srclocs = [StackLoc(9999, x, 'i') for x,y in CASE] - dstlocs = [StackLoc(9999, y, 'i') for x,y in CASE] + srclocs = [FrameLoc(9999, x, 'i') for x,y in CASE] + dstlocs = [FrameLoc(9999, y, 'i') for x,y in CASE] remap_frame_layout(FakeAssembler(), srclocs, dstlocs, eax) # it works when run directly main() _______________________________________________ pypy-commit mailing list pypy-commit@python.org http://mail.python.org/mailman/listinfo/pypy-commit