[pypy-commit] pypy memoryerror: reverted some changes to get to the root of the problem

plan_rich noreply at buildbot.pypy.org
Mon Aug 24 10:27:20 CEST 2015


Author: Richard Plangger <rich at pasra.at>
Branch: memoryerror
Changeset: r79179:a2ed66c15857
Date: 2015-08-24 10:27 +0200
http://bitbucket.org/pypy/pypy/changeset/a2ed66c15857/

Log:	reverted some changes to get to the root of the problem

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
@@ -536,7 +536,7 @@
             self.cpu.profile_agent.native_code_written(name,
                                                        rawstart, full_size)
         return AsmInfo(ops_offset, rawstart + looppos,
-                       size_excluding_failure_stuff - looppos, rawstart)
+                       size_excluding_failure_stuff - looppos)
 
     @rgc.no_release_gil
     def assemble_bridge(self, faildescr, inputargs, operations,
@@ -589,11 +589,12 @@
             name = "Bridge # %s" % (descr_number,)
             self.cpu.profile_agent.native_code_written(name,
                                                        rawstart, fullsize)
-        return AsmInfo(ops_offset, startpos + rawstart, codeendpos - startpos, rawstart)
+        return AsmInfo(ops_offset, startpos + rawstart, codeendpos - startpos)
 
     def stitch_bridge(self, faildescr, target):
-        assert target.rawstart != 0
-        self.patch_jump_for_descr(faildescr, target.rawstart)
+        if target is not None:
+            assert target.rawstart != 0
+            self.patch_jump_for_descr(faildescr, target.rawstart)
 
     def write_pending_failure_recoveries(self, regalloc):
         # for each pending guard, generate the code of the recovery stub
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
@@ -204,26 +204,27 @@
             vl.inputargs = version.inputargs
             vl.operations = version.operations
             vl.original_jitcell_token = jitcell_token
-            asminfo = send_bridge_to_backend(jitdriver_sd, metainterp_sd,
+            send_bridge_to_backend(jitdriver_sd, metainterp_sd,
                                    faildescr, version.inputargs,
                                    version.operations, jitcell_token)
             record_loop_or_bridge(metainterp_sd, vl)
-            assert asminfo is not None
-            version._compiled = asminfo
-            faildescr.version = None
+            #assert asminfo is not None
+            #version._compiled = asminfo
+            #faildescr.version = None
+        loop.versions = 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:
-                assert isinstance(faildescr, CompileLoopVersionDescr)
-                version = faildescr.version
-                if version and version.compiled():
-                    cpu.stitch_bridge(faildescr, version._compiled)
-                faildescr.version = None
-    loop.versions = None
+        #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:
+        #        assert isinstance(faildescr, CompileLoopVersionDescr)
+        #        version = faildescr.version
+        #        if version and version.compiled():
+        #            cpu.stitch_bridge(faildescr, version._compiled)
+        #        faildescr.version = None
+    #loop.versions = None
 
 def compile_retrace(metainterp, greenkey, start,
                     inputargs, jumpargs,
@@ -454,7 +455,7 @@
     #if metainterp_sd.warmrunnerdesc is not None:    # for tests
     #    metainterp_sd.warmrunnerdesc.memory_manager.keep_loop_alive(
     #        original_loop_token)
-    return asminfo
+    #return asminfo
 
 # ____________________________________________________________
 
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
@@ -809,6 +809,8 @@
         assert version.renamed_inputargs is not None
 
     def update_token(self, jitcell_token, all_target_tokens):
+        if self.compiled():
+            return
         # this is only invoked for versioned loops!
         label_index = index_of_first(rop.LABEL, self.operations, 0)
         label = self.operations[label_index]
diff --git a/rpython/jit/metainterp/logger.py b/rpython/jit/metainterp/logger.py
--- a/rpython/jit/metainterp/logger.py
+++ b/rpython/jit/metainterp/logger.py
@@ -102,7 +102,6 @@
         return descr.repr_of_descr()
 
     def repr_of_arg(self, arg):
-        return str(arg) # XXX
         try:
             mv = self.memo[arg]
         except KeyError:
diff --git a/rpython/jit/metainterp/optimizeopt/guard.py b/rpython/jit/metainterp/optimizeopt/guard.py
--- a/rpython/jit/metainterp/optimizeopt/guard.py
+++ b/rpython/jit/metainterp/optimizeopt/guard.py
@@ -277,9 +277,9 @@
                 if descr.loop_version():
                     root_version.register_guard(op, version)
 
-            if user_code:
-                version = loop.snapshot()
-                self.eliminate_array_bound_checks(loop, root_version, version)
+            #if user_code:
+            #    version = loop.snapshot()
+            #    self.eliminate_array_bound_checks(loop, root_version, version)
 
     def emit_operation(self, op):
         self.renamer.rename(op)
diff --git a/rpython/rlib/jit.py b/rpython/rlib/jit.py
--- a/rpython/rlib/jit.py
+++ b/rpython/rlib/jit.py
@@ -1006,11 +1006,10 @@
     asmlen - assembler block length
     rawstart - address a guard can jump to
     """
-    def __init__(self, ops_offset, asmaddr, asmlen, rawstart):
+    def __init__(self, ops_offset, asmaddr, asmlen):
         self.ops_offset = ops_offset
         self.asmaddr = asmaddr
         self.asmlen = asmlen
-        self.rawstart = rawstart
 
 class JitDebugInfo(object):
     """ An object representing debug info. Attributes meanings:


More information about the pypy-commit mailing list