[pypy-commit] pypy vecopt-merge: test_zjit now passed the annotator to the rtyper
plan_rich
noreply at buildbot.pypy.org
Sat Sep 26 09:59:45 CEST 2015
Author: Richard Plangger <planrichi at 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)
More information about the pypy-commit
mailing list