[pypy-commit] pypy value-profiling: (arigo, cfbolz): temporarily add some debug printing
cfbolz
noreply at buildbot.pypy.org
Tue Aug 11 16:17:45 CEST 2015
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: value-profiling
Changeset: r78898:77cb21016bed
Date: 2015-08-11 16:17 +0200
http://bitbucket.org/pypy/pypy/changeset/77cb21016bed/
Log: (arigo, cfbolz): temporarily add some debug printing
diff --git a/pypy/interpreter/pycode.py b/pypy/interpreter/pycode.py
--- a/pypy/interpreter/pycode.py
+++ b/pypy/interpreter/pycode.py
@@ -95,7 +95,7 @@
self._signature = cpython_code_signature(self)
self._initialize()
self._init_ready()
- self.vprofs = [ValueProf() for i in range(self.co_nlocals)]
+ self.vprofs = [ValueProf('%s %s' % (self.co_name, self.co_varnames[i])) for i in range(self.co_nlocals)]
def _initialize(self):
if self.co_cellvars:
diff --git a/pypy/interpreter/valueprof.py b/pypy/interpreter/valueprof.py
--- a/pypy/interpreter/valueprof.py
+++ b/pypy/interpreter/valueprof.py
@@ -10,14 +10,16 @@
_mixin_ = True
_immutable_fields_ = ['_vprof_status?']
- def __init__(self):
+ def __init__(self, msg=''):
# only if you subclass normally
- self.init_valueprof()
+ self.init_valueprof(msg)
- def init_valueprof(self):
+ def init_valueprof(self, msg=''):
self._vprof_status = SEEN_NOTHING
self._vprof_value_int = 0
self._vprof_value_wref = dead_ref
+ self._vprof_counter = 0
+ self._vprof_msg = msg
def is_int(self, w_obj):
raise NotImplementedError("abstract base")
@@ -38,6 +40,10 @@
elif status == SEEN_INT:
if self.read_constant_int() != value:
self._vprof_status = SEEN_TOO_MUCH
+ else:
+ self._vprof_counter += 1
+ if self._vprof_counter == 200:
+ print self._vprof_msg, 'int', value
elif status == SEEN_OBJ:
self._vprof_status = SEEN_TOO_MUCH
@@ -58,6 +64,10 @@
elif status == SEEN_OBJ:
if self.try_read_constant_obj() is not value:
self._vprof_status = SEEN_TOO_MUCH
+ else:
+ self._vprof_counter += 1
+ if self._vprof_counter == 200:
+ print self._vprof_msg, 'obj', value
def can_fold_read_int(self):
return self._vprof_status == SEEN_INT
diff --git a/pypy/objspace/std/mapdict.py b/pypy/objspace/std/mapdict.py
--- a/pypy/objspace/std/mapdict.py
+++ b/pypy/objspace/std/mapdict.py
@@ -297,7 +297,7 @@
self.back = back
self._size_estimate = self.length() * NUM_DIGITS_POW2
self.ever_mutated = False
- self.init_valueprof()
+ self.init_valueprof('%s.%s' % (back.terminator.w_cls.name, selector[0]))
# ____________________________________________________________
# methods for ValueProf mixin
More information about the pypy-commit
mailing list