Author: Richard Plangger <planri...@gmail.com> Branch: vecopt-merge Changeset: r79849:5d1e288a9250 Date: 2015-09-25 22:23 +0200 http://bitbucket.org/pypy/pypy/changeset/5d1e288a9250/
Log: test_zjit now passed the annotator to the rtyper 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 @@ -618,8 +618,8 @@ # the mapping might be wrong! if bridge_accum_info.vector_loc is not guard_accum_info.vector_loc: self.mov(guard_accum_info.vector_loc, bridge_accum_info.vector_loc) - bridge_accum_info = bridge_accum_info.prev - guard_accum_info = guard_accum_info.prev + bridge_accum_info = bridge_accum_info.next() + guard_accum_info = guard_accum_info.next() # register mapping is most likely NOT valid, thus remap it in this # short piece of assembler 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 @@ -318,6 +318,7 @@ def locs_for_fail(self, guard_op): faillocs = [self.loc(arg) for arg in guard_op.getfailargs()] descr = guard_op.getdescr() + assert isinstance(descr, ResumeGuardDescr) if descr and descr.rd_accum_list: accuminfo = descr.rd_accum_list while accuminfo: diff --git a/rpython/jit/metainterp/compile.py b/rpython/jit/metainterp/compile.py --- a/rpython/jit/metainterp/compile.py +++ b/rpython/jit/metainterp/compile.py @@ -15,7 +15,8 @@ TargetToken, AbstractFailDescr, ConstInt) from rpython.jit.metainterp import history, jitexc from rpython.jit.metainterp.optimize import InvalidLoop -from rpython.jit.metainterp.resume import NUMBERING, PENDINGFIELDSP, ResumeDataDirectReader +from rpython.jit.metainterp.resume import (NUMBERING, PENDINGFIELDSP, + ResumeDataDirectReader, AccumInfo) from rpython.jit.codewriter import heaptracker, longlong def giveup(): @@ -679,8 +680,7 @@ class ResumeGuardDescr(ResumeDescr): _attrs_ = ('rd_numb', 'rd_count', 'rd_consts', 'rd_virtuals', - 'rd_frame_info_list', 'rd_pendingfields', 'rd_accum_list', - 'status') + 'rd_frame_info_list', 'rd_pendingfields', 'status') rd_numb = lltype.nullptr(NUMBERING) rd_count = 0 @@ -688,7 +688,6 @@ rd_virtuals = None rd_frame_info_list = None rd_pendingfields = lltype.nullptr(PENDINGFIELDSP.TO) - rd_accum_list = None status = r_uint(0) @@ -702,6 +701,8 @@ self.rd_numb = other.rd_numb if other.rd_accum_list: self.rd_accum_list = other.rd_accum_list.clone() + else: + other.rd_accum_list = None # we don't copy status ST_BUSY_FLAG = 0x01 # if set, busy tracing from the guard @@ -850,6 +851,10 @@ def exits_early(self): return True + def attach_accum_info(self, pos, operator, arg, loc): + self.rd_accum_list = \ + AccumInfo(self.rd_accum_list, pos, operator, arg, loc) + class ResumeGuardNonnullDescr(ResumeGuardDescr): guard_opnum = rop.GUARD_NONNULL diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py --- a/rpython/jit/metainterp/history.py +++ b/rpython/jit/metainterp/history.py @@ -148,6 +148,8 @@ _attrs_ = ('adr_jump_offset', 'rd_locs', 'rd_loop_token', 'rd_accum_list') + rd_accum_list = None + def handle_fail(self, deadframe, metainterp_sd, jitdriver_sd): raise NotImplementedError def compile_and_attach(self, metainterp, new_loop, orig_inputargs): diff --git a/rpython/jit/metainterp/optimizeopt/schedule.py b/rpython/jit/metainterp/optimizeopt/schedule.py --- a/rpython/jit/metainterp/optimizeopt/schedule.py +++ b/rpython/jit/metainterp/optimizeopt/schedule.py @@ -446,7 +446,8 @@ if vecop: args[index] = vecop return vecop - vecop = OpHelpers.create_vec_expand(arg, op.bytesize, op.signed, pack.numops()) + left = pack.leftmost() + vecop = OpHelpers.create_vec_expand(arg, left.bytesize, left.signed, pack.numops()) ops.append(vecop) if variables is not None: variables.append(vecop) @@ -549,9 +550,10 @@ continue accum = self.accumulation.get(arg, None) if accum: + from rpython.jit.metainterp.compile import ResumeGuardDescr assert isinstance(accum, AccumPack) - descr.rd_accum_list = AccumInfo(descr.rd_accum_list, i, - accum.operator, arg, None) + assert isinstance(descr, ResumeGuardDescr) + descr.attach_accum_info(i, accum.operator, arg, None) seed = accum.getleftmostseed() failargs[i] = self.renamer.rename_map.get(seed, seed) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit