Author: Richard Plangger <[email protected]>
Branch: vmprof-0.4.4
Changeset: r91098:b289c381ebfa
Date: 2017-04-20 10:01 -0400
http://bitbucket.org/pypy/pypy/changeset/b289c381ebfa/
Log: test and fix get_profile_path for pypy
diff --git a/pypy/module/_vmprof/test/test__vmprof.py
b/pypy/module/_vmprof/test/test__vmprof.py
--- a/pypy/module/_vmprof/test/test__vmprof.py
+++ b/pypy/module/_vmprof/test/test__vmprof.py
@@ -103,3 +103,15 @@
assert _vmprof.is_enabled() is True
_vmprof.disable()
assert _vmprof.is_enabled() is False
+
+ def test_get_profile_path(self):
+ import _vmprof
+ tmpfile = open(self.tmpfilename, 'wb')
+ assert _vmprof.get_profile_path() is None
+ _vmprof.enable(tmpfile.fileno(), 0.01, 0, 0, 0)
+ path = _vmprof.get_profile_path()
+ if path != tmpfile.name:
+ with open(path, "rb") as fd1:
+ assert fd1.read() == tmpfile.read()
+ _vmprof.disable()
+ assert _vmprof.get_profile_path() is None
diff --git a/rpython/rlib/rvmprof/__init__.py b/rpython/rlib/rvmprof/__init__.py
--- a/rpython/rlib/rvmprof/__init__.py
+++ b/rpython/rlib/rvmprof/__init__.py
@@ -48,12 +48,11 @@
if not vmp.is_enabled:
return None
- buflen = 4096
- with rffi.scoped_alloc_buffer(buflen) as buf:
- length = vmp.cintf.vmprof_get_profile_path(buf, buflen)
+ with rffi.scoped_alloc_buffer(4096) as buf:
+ length = vmp.cintf.vmprof_get_profile_path(buf.raw, buf.size)
if length == -1:
return ""
- return rffi.charp2strn(buf, length)
+ return buf.str(length)
return None
diff --git a/rpython/rlib/rvmprof/src/rvmprof.c
b/rpython/rlib/rvmprof/src/rvmprof.c
--- a/rpython/rlib/rvmprof/src/rvmprof.c
+++ b/rpython/rlib/rvmprof/src/rvmprof.c
@@ -29,3 +29,9 @@
return ptr == __vmprof_eval_vmprof;
}
#endif
+
+
+long vmprof_get_profile_path(const char * buffer, long size)
+{
+ return vmp_fd_to_path(vmp_profile_fileno(), buffer, size);
+}
diff --git a/rpython/rlib/rvmprof/src/rvmprof.h
b/rpython/rlib/rvmprof/src/rvmprof.h
--- a/rpython/rlib/rvmprof/src/rvmprof.h
+++ b/rpython/rlib/rvmprof/src/rvmprof.h
@@ -35,6 +35,7 @@
RPY_EXTERN long vmprof_stack_pop(void*);
RPY_EXTERN void vmprof_stack_free(void*);
RPY_EXTERN intptr_t vmprof_get_traceback(void *, void *, intptr_t*, intptr_t);
+RPY_EXTERN long vmprof_get_profile_path(const char *, long);
long vmprof_write_header_for_jit_addr(intptr_t *result, long n,
intptr_t addr, int max_depth);
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit