[pypy-commit] pypy vmprof-newstack: small fixes

fijal pypy.commits at gmail.com
Mon Jan 11 06:36:17 EST 2016


Author: fijal
Branch: vmprof-newstack
Changeset: r81669:80db53f41aa2
Date: 2016-01-11 13:35 +0200
http://bitbucket.org/pypy/pypy/changeset/80db53f41aa2/

Log:	small fixes

diff --git a/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py b/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py
--- a/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py
+++ b/rpython/jit/backend/llsupport/test/zrpy_vmprof_test.py
@@ -19,9 +19,14 @@
         from rpython.rlib import rvmprof
 
         class MyCode:
-            pass
+            def __init__(self, name):
+                self.name = name
+
         def get_name(code):
-            return 'py:code:52:x'
+            return code.name
+
+        code2 = MyCode("py:y:foo:4")
+
         try:
             rvmprof.register_code_object_class(MyCode, get_name)
         except rvmprof.VMProfPlatformUnsupported, e:
@@ -40,15 +45,15 @@
             while i < num:
                 driver.jit_merge_point(code=code, i=i, s=s, num=num)
                 s += (i << 1)
-                if s % 32423423423 == 0 and s > 0 == 0:
-                    print s
+                if s % 3 == 0 and code is not code2:
+                    main(code2, 100)
                 i += 1
             return s
 
         tmpfilename = str(udir.join('test_rvmprof'))
 
         def f(num):
-            code = MyCode()
+            code = MyCode("py:x:foo:3")
             rvmprof.register_code(code, get_name)
             fd = os.open(tmpfilename, os.O_WRONLY | os.O_CREAT, 0666)
             period = 0.0001
@@ -67,7 +72,7 @@
             import pdb
             pdb.set_trace()
 
-        self.meta_interp(f, [100000000])
+        self.meta_interp(f, [1000000])
         try:
             import vmprof
         except ImportError:
diff --git a/rpython/rlib/rvmprof/rvmprof.py b/rpython/rlib/rvmprof/rvmprof.py
--- a/rpython/rlib/rvmprof/rvmprof.py
+++ b/rpython/rlib/rvmprof/rvmprof.py
@@ -33,7 +33,7 @@
         self._code_classes = set()
         self._gather_all_code_objs = lambda: None
         self._cleanup_()
-        self._code_unique_id = 0
+        self._code_unique_id = 4
         self.cintf = cintf.setup()
         
     def _cleanup_(self):
diff --git a/rpython/rlib/rvmprof/src/vmprof_main.h b/rpython/rlib/rvmprof/src/vmprof_main.h
--- a/rpython/rlib/rvmprof/src/vmprof_main.h
+++ b/rpython/rlib/rvmprof/src/vmprof_main.h
@@ -154,16 +154,15 @@
         if (stack->kind == VMPROF_CODE_TAG) {
             result[n] = stack->kind;
             result[n + 1] = stack->value;
-            stack = stack->next;
             n += 2;
         }
 #ifdef PYPY_JIT_CODEMAP
         else if (stack->kind == VMPROF_JITTED_TAG) {
             pc = ((intptr_t*)(stack->value - sizeof(intptr_t)))[0];
             n = vmprof_write_header_for_jit_addr(result, n, pc, max_depth);
-            stack = stack->next;
         }
 #endif
+        stack = stack->next;
     }
     return n;
 }


More information about the pypy-commit mailing list