Author: Richard Plangger <r...@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 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit