Author: Armin Rigo <ar...@tunes.org> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit