[pypy-commit] pypy default: Test and fix: produce a user-readable jit_debug() output in the logs

arigo noreply at buildbot.pypy.org
Mon Nov 10 21:24:59 CET 2014


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r74432:a5e7edf73a08
Date: 2014-11-10 21:24 +0100
http://bitbucket.org/pypy/pypy/changeset/a5e7edf73a08/

Log:	Test and fix: produce a user-readable jit_debug() output in the logs
	too, not just when tracing it the first time. It was half-pointless
	to record the jit_debug operation.

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
@@ -137,6 +137,14 @@
             s = jd_sd.warmstate.get_location_str(op.getarglist()[3:])
             s = s.replace(',', '.') # we use comma for argument splitting
             return "debug_merge_point(%d, %d, '%s')" % (op.getarg(1).getint(), op.getarg(2).getint(), s)
+        if op.getopnum() == rop.JIT_DEBUG:
+            args = op.getarglist()
+            s = args[0]._get_str()
+            s = s.replace(',', '.') # we use comma for argument splitting
+            s2 = ''
+            for box in args[1:]:
+                s2 += ', %d' % box.getint()
+            return "jit_debug('%s'%s)" % (s, s2)
         if ops_offset is None:
             offset = -1
         else:
diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -1178,10 +1178,7 @@
 
     @arguments("box", "box", "box", "box", "box")
     def opimpl_jit_debug(self, stringbox, arg1box, arg2box, arg3box, arg4box):
-        from rpython.rtyper.lltypesystem import rstr
-        from rpython.rtyper.annlowlevel import hlstr
-        msg = stringbox.getref(lltype.Ptr(rstr.STR))
-        debug_print('jit_debug:', hlstr(msg),
+        debug_print('jit_debug:', stringbox._get_str(),
                     arg1box.getint(), arg2box.getint(),
                     arg3box.getint(), arg4box.getint())
         args = [stringbox, arg1box, arg2box, arg3box, arg4box]
diff --git a/rpython/jit/metainterp/test/test_logger.py b/rpython/jit/metainterp/test/test_logger.py
--- a/rpython/jit/metainterp/test/test_logger.py
+++ b/rpython/jit/metainterp/test/test_logger.py
@@ -137,6 +137,17 @@
         assert loop.operations[0].getarg(2).getint() == 0
         assert oloop.operations[0].getarg(2)._get_str() == "dupa"
 
+    def test_jit_debug(self):
+        inp = '''
+        []
+        jit_debug('foobar', -1, 5)
+        '''
+        _, loop, oloop = self.reparse(inp)
+        assert loop.operations[0].getarg(0)._get_str() == "foobar"
+        assert loop.operations[0].getarg(1).getint() == -1
+        assert oloop.operations[0].getarg(0)._get_str() == "foobar"
+        assert oloop.operations[0].getarg(1).getint() == -1
+
     def test_floats(self):
         inp = '''
         [f0]


More information about the pypy-commit mailing list