[pypy-commit] pypy improve-vmprof-testing: Improve the test, fix by adding another missing case

arigo pypy.commits at gmail.com
Mon Aug 8 02:54:41 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: improve-vmprof-testing
Changeset: r86075:d58a138573e9
Date: 2016-08-08 08:54 +0200
http://bitbucket.org/pypy/pypy/changeset/d58a138573e9/

Log:	Improve the test, fix by adding another missing case

diff --git a/rpython/jit/backend/test/test_rvmprof.py b/rpython/jit/backend/test/test_rvmprof.py
--- a/rpython/jit/backend/test/test_rvmprof.py
+++ b/rpython/jit/backend/test/test_rvmprof.py
@@ -139,7 +139,8 @@
                 else:
                     llfn()
                     c -= 1
-            jit.promote(c + 5)     # failing guard
+            if c & 1:      # a failing guard
+                pass
             raise MyExc(c)
 
         def main(n):
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
@@ -1458,6 +1458,20 @@
         from rpython.rlib.rvmprof import cintf
         cintf.jit_rvmprof_code(leaving, box_unique_id.getint())
 
+    def handle_rvmprof_enter_on_resume(self):
+        code = self.bytecode
+        position = self.pc
+        opcode = ord(code[position])
+        if opcode == self.metainterp.staticdata.op_rvmprof_code:
+            arg1 = self.registers_i[ord(code[position + 1])].getint()
+            arg2 = self.registers_i[ord(code[position + 2])].getint()
+            if arg1 == 1:
+                # we are resuming at a position that will do a
+                # jit_rvmprof_code(1), when really executed.  That's a
+                # hint for the need for a jit_rvmprof_code(0).
+                from rpython.rlib.rvmprof import cintf
+                cintf.jit_rvmprof_code(0, arg2)
+
     # ------------------------------
 
     def setup_call(self, argboxes):
diff --git a/rpython/jit/metainterp/resume.py b/rpython/jit/metainterp/resume.py
--- a/rpython/jit/metainterp/resume.py
+++ b/rpython/jit/metainterp/resume.py
@@ -1058,6 +1058,7 @@
         f.setup_resume_at_op(pc)
         resumereader.consume_boxes(f.get_current_position_info(),
                                    f.registers_i, f.registers_r, f.registers_f)
+        f.handle_rvmprof_enter_on_resume()
     return resumereader.liveboxes, virtualizable_boxes, virtualref_boxes
 
 


More information about the pypy-commit mailing list