Author: Armin Rigo <[email protected]>
Branch: improve-vmprof-testing
Changeset: r86088:e09e83478469
Date: 2016-08-08 19:07 +0200
http://bitbucket.org/pypy/pypy/changeset/e09e83478469/
Log: JIT fix: make '_vmprof_unique_id' an immutable field; I think
decorated_function() reads it all the time, without this
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
@@ -46,6 +46,7 @@
def _cleanup_(self):
self.is_enabled = False
+ @jit.dont_look_inside
@specialize.argtype(1)
def register_code(self, code, full_name_func):
"""Register the code object. Call when a new code object is made.
@@ -87,6 +88,8 @@
if CodeClass in self._code_classes:
return
CodeClass._vmprof_unique_id = 0 # default value: "unknown"
+ immut = CodeClass.__dict__.get('_immutable_fields_', [])
+ CodeClass._immutable_fields_ = list(immut) + ['_vmprof_unique_id']
self._code_classes.add(CodeClass)
#
class WeakCodeObjectList(RWeakListMixin):
@@ -111,6 +114,7 @@
prev = self._gather_all_code_objs
self._gather_all_code_objs = gather_all_code_objs
+ @jit.dont_look_inside
def enable(self, fileno, interval):
"""Enable vmprof. Writes go to the given 'fileno'.
The sampling interval is given by 'interval' as a number of
@@ -131,6 +135,7 @@
raise VMProfError(os.strerror(rposix.get_saved_errno()))
self.is_enabled = True
+ @jit.dont_look_inside
def disable(self):
"""Disable vmprof.
Raises VMProfError if something goes wrong.
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit