[pypy-commit] pypy memoryerror3: furhter stripping down the commit
plan_rich
noreply at buildbot.pypy.org
Mon Aug 24 12:45:02 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: memoryerror3
Changeset: r79194:10602d3c86f4
Date: 2015-08-24 12:45 +0200
http://bitbucket.org/pypy/pypy/changeset/10602d3c86f4/
Log: furhter stripping down the commit
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
@@ -194,30 +194,32 @@
if loop.versions is not None:
# compile each version once for the first fail descr!
# this assumes that the root trace (= loop) is already compiled
- root = loop.versions[0]
- for faildescr in root.faildescrs:
- version = faildescr.version
- if not version or version.compiled():
- continue
- vl = create_empty_loop(metainterp)
- vl.inputargs = version.inputargs
- vl.operations = version.operations
- vl.original_jitcell_token = jitcell_token
- asminfo = send_bridge_to_backend(jitdriver_sd, metainterp_sd,
- faildescr, version.inputargs,
- version.operations, jitcell_token)
- record_loop_or_bridge(metainterp_sd, vl)
- version.compile_data = asminfo
+ for version in loop.versions:
+ if not version.compiled():
+ faildescr = version.faildescrs[0]
+ vl = create_empty_loop(metainterp)
+ vl.inputargs = version.inputargs
+ vl.operations = version.operations
+ vl.original_jitcell_token = jitcell_token
+ asminfo = send_bridge_to_backend(jitdriver_sd, metainterp_sd,
+ faildescr, version.inputargs,
+ version.operations, jitcell_token)
+ record_loop_or_bridge(metainterp_sd, vl)
+ version.compile_data = asminfo
+ version.operations = None
+ version.inputargs = None
# stitch the rest of the traces
for lv in loop.versions:
if not lv.compiled():
# the version was never compiled, do not bother
# to assign it's fail descr
continue
- for faildescr in lv.faildescrs:
- version = faildescr.version
+ for faildescr in lv.faildescrs[1:]:
if version and version.compiled():
cpu.stitch_bridge(faildescr, version.compile_data)
+ for lv in loop.versions:
+ lv.compile_data = None
+ lv.faildescrs = []
def compile_retrace(metainterp, greenkey, start,
inputargs, jumpargs,
@@ -525,7 +527,7 @@
class ResumeGuardDescr(ResumeDescr):
_attrs_ = ('rd_numb', 'rd_count', 'rd_consts', 'rd_virtuals',
'rd_frame_info_list', 'rd_pendingfields', 'rd_accum_list',
- 'status', 'version')
+ 'status')
rd_numb = lltype.nullptr(NUMBERING)
rd_count = 0
@@ -536,7 +538,6 @@
rd_accum_list = None
status = r_uint(0)
- version = None
def copy_all_attributes_from(self, other):
assert isinstance(other, ResumeGuardDescr)
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
@@ -759,13 +759,12 @@
def __init__(self, loop):
self.faildescrs = []
- if loop:
- self.operations = self.copy_operations(loop.operations)
- idx = index_of_first(rop.LABEL, self.operations)
- assert idx >= 0
- label = self.operations[idx]
- self.inputargs = label.getarglist()
- self.renamed_inputargs = label.getarglist()
+ self.operations = self.copy_operations(loop.operations)
+ idx = index_of_first(rop.LABEL, self.operations)
+ assert idx >= 0
+ label = self.operations[idx]
+ self.inputargs = label.getarglist()
+ self.renamed_inputargs = label.getarglist()
def compiled(self):
if self.operations is None:
@@ -804,7 +803,6 @@
if not descr.loop_version():
assert 0, "cannot register a guard that is not a CompileLoopVersionDescr"
assert isinstance(descr, CompileLoopVersionDescr)
- descr.version = version
self.faildescrs.append(descr)
# note: stitching a guard must resemble the order of the label
# otherwise a wrong mapping is handed to the register allocator
@@ -844,6 +842,7 @@
call_pure_results = None
logops = None
quasi_immutable_deps = None
+ versions = []
def _token(*args):
raise Exception("TreeLoop.token is killed")
@@ -856,7 +855,6 @@
def __init__(self, name):
self.name = name
- self.versions = []
# self.operations = list of ResOperations
# ops of the kind 'guard_xxx' contain a further list of operations,
# which may itself contain 'guard_xxx' and so on, making a tree.
@@ -911,15 +909,7 @@
return None
def snapshot(self):
- if len(self.versions) == 0:
- # create a root version, simplyfies the code in compile.py
- self.versions.append(LoopVersion(None))
- root_version = self.versions[0]
version = LoopVersion(self)
- if not we_are_translated():
- print "LOOP SNAPSHOT"
- for op in version.operations:
- print "", op
self.versions.append(version)
return version
More information about the pypy-commit
mailing list