[pypy-svn] r63702 - pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86

fijal at codespeak.net fijal at codespeak.net
Mon Apr 6 05:39:05 CEST 2009


Author: fijal
Date: Mon Apr  6 05:39:04 2009
New Revision: 63702

Modified:
   pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/assembler.py
Log:
improve logging


Modified: pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/assembler.py
==============================================================================
--- pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/assembler.py	(original)
+++ pypy/branch/pyjitpl5-simplify/pypy/jit/backend/x86/assembler.py	Mon Apr  6 05:39:04 2009
@@ -10,7 +10,7 @@
 from pypy.tool.uid import fixid
 from pypy.jit.backend.x86.regalloc import (RegAlloc, FRAMESIZE, WORD, REGS,
                                       arg_pos, lower_byte, stack_pos)
-from pypy.rlib.objectmodel import we_are_translated, specialize
+from pypy.rlib.objectmodel import we_are_translated, specialize, compute_unique_id
 from pypy.jit.backend.x86 import codebuf
 from pypy.jit.backend.x86.support import gc_malloc_fnaddr
 from pypy.jit.backend.x86.ri386 import *
@@ -119,27 +119,39 @@
             if self.malloc_func_addr == 0:
                 self.malloc_func_addr = gc_malloc_fnaddr()
 
-    def eventually_log_operations(self, inputargs, operations, memo=None):
+    def eventually_log_operations(self, inputargs, operations, memo=None,
+                                  myid=0):
+        from pypy.jit.backend.x86.runner import ConstDescr3
+        
         if self._log_fd == -1:
             return
         if memo is None:
             memo = {}
         if inputargs is None:
-            args = ''
+            os.write(self._log_fd, "BEGIN(%s)\n" % myid)
         else:
             args = ",".join([repr_of_arg(memo, arg) for arg in inputargs])
-        os.write(self._log_fd, "LOOP %s\n" % args)
+            os.write(self._log_fd, "LOOP %s\n" % args)
         for op in operations:
             args = ",".join([repr_of_arg(memo, arg) for arg in op.args])
-            os.write(self._log_fd, "%s %s\n" % (op.getopname(), args))
+            if op.descr is not None and isinstance(op.descr, ConstDescr3):
+                descr = op.descr.sort_key()
+                os.write(self._log_fd, "%s %s[%s]\n" % (op.getopname(), args,
+                                                        descr))
+            else:
+                os.write(self._log_fd, "%s %s\n" % (op.getopname(), args))
             if op.result is not None:
                 os.write(self._log_fd, "  => %s\n" % repr_of_arg(memo,
                                                                  op.result))
             if op.is_guard():
-                os.write(self._log_fd, "BEGIN\n")
                 self.eventually_log_operations(None, op.suboperations, memo)
-                os.write(self._log_fd, "END\n")
-        os.write(self._log_fd, "LOOP END\n")
+        if operations[-1].opnum == rop.JUMP:
+            jump_target = compute_unique_id(operations[-1].jump_target)
+            os.write(self._log_fd, 'JUMPTO:%s\n' % jump_target)
+        if inputargs is None:
+            os.write(self._log_fd, "END\n")
+        else:
+            os.write(self._log_fd, "LOOP END\n")
 
     def log_failure_recovery(self, gf, guard_index):
         if self._log_fd == -1:
@@ -183,7 +195,8 @@
         self._compute_longest_fail_op(tree.operations)
         self.make_sure_mc_exists()
         inputargs = tree.inputargs
-        self.eventually_log_operations(tree.inputargs, tree.operations)
+        self.eventually_log_operations(tree.inputargs, tree.operations, None,
+                                       compute_unique_id(tree))
         regalloc = RegAlloc(self, tree, self.cpu.translate_support_code)
         if not we_are_translated():
             self._regalloc = regalloc # for debugging



More information about the Pypy-commit mailing list