[Python-checkins] CVS: python/dist/src/Lib/hotshot log.py,1.2,1.3
Fred L. Drake
fdrake@users.sourceforge.net
Mon, 15 Oct 2001 15:05:34 -0700
Update of /cvsroot/python/python/dist/src/Lib/hotshot
In directory usw-pr-cvs1:/tmp/cvs-serv25918/Lib/hotshot
Modified Files:
log.py
Log Message:
Avoid deep recursion when reading the header of the log file.
Add support for extracting function names from the log file, keeping the
extract-names-from-sources support as a fallback.
Index: log.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/hotshot/log.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** log.py 2001/10/13 02:55:40 1.2
--- log.py 2001/10/15 22:05:32 1.3
***************
*** 10,13 ****
--- 10,14 ----
WHAT_LINENO, \
WHAT_DEFINE_FILE, \
+ WHAT_DEFINE_FUNC, \
WHAT_ADD_INFO
***************
*** 45,77 ****
def next(self, index=0):
! try:
! what, tdelta, fileno, lineno = self._nextitem()
! except TypeError:
! # logreader().next() returns None at the end
! self._reader.close()
! raise StopIteration()
! if what == WHAT_DEFINE_FILE:
! self._filemap[fileno] = tdelta
! return self.next()
! if what == WHAT_ADD_INFO:
! key = tdelta.lower()
try:
! L = self._info[key]
! except KeyError:
! L = []
! self._info[key] = L
! L.append(lineno)
! if key == "current-directory":
! self.cwd = lineno
! return self.next()
! if what == WHAT_ENTER:
! t = self._decode_location(fileno, lineno)
! filename, funcname = t
! self._stack.append((filename, funcname, lineno))
! elif what == WHAT_EXIT:
! filename, funcname, lineno = self._stack.pop()
! else:
! filename, funcname, firstlineno = self._stack[-1]
! return what, (filename, lineno, funcname), tdelta
if sys.version < "2.2":
--- 46,83 ----
def next(self, index=0):
! while 1:
try:
! what, tdelta, fileno, lineno = self._nextitem()
! except TypeError:
! # logreader().next() returns None at the end
! self._reader.close()
! raise StopIteration()
! if what == WHAT_DEFINE_FILE:
! self._filemap[fileno] = tdelta
! continue
! if what == WHAT_DEFINE_FUNC:
! filename = self._filemap[fileno]
! self._funcmap[(fileno, lineno)] = (filename, tdelta)
! continue
! if what == WHAT_ADD_INFO:
! key = tdelta.lower()
! try:
! L = self._info[key]
! except KeyError:
! L = []
! self._info[key] = L
! L.append(lineno)
! if key == "current-directory":
! self.cwd = lineno
! continue
! if what == WHAT_ENTER:
! t = self._decode_location(fileno, lineno)
! filename, funcname = t
! self._stack.append((filename, funcname, lineno))
! elif what == WHAT_EXIT:
! filename, funcname, lineno = self._stack.pop()
! else:
! filename, funcname, firstlineno = self._stack[-1]
! return what, (filename, lineno, funcname), tdelta
if sys.version < "2.2":
***************
*** 91,94 ****
--- 97,105 ----
return self._funcmap[(fileno, lineno)]
except KeyError:
+ #
+ # This should only be needed when the log file does not
+ # contain all the DEFINE_FUNC records needed to allow the
+ # function name to be retrieved from the log file.
+ #
if self._loadfile(fileno):
filename = funcname = None