[Python-checkins] cpython: #11983: update comment to describe which fields are used and why.

andrew.kuchling python-checkins at python.org
Mon Apr 14 20:20:15 CEST 2014


http://hg.python.org/cpython/rev/0e35cef1d984
changeset:   90277:0e35cef1d984
user:        Andrew Kuchling <amk at amk.ca>
date:        Mon Apr 14 14:19:52 2014 -0400
summary:
  #11983: update comment to describe which fields are used and why.

Original patch by Caelyn McAulay; modified after discussion w/ her at
the PyCon 2014 sprints.

files:
  Include/code.h |  7 ++++++-
  1 files changed, 6 insertions(+), 1 deletions(-)


diff --git a/Include/code.h b/Include/code.h
--- a/Include/code.h
+++ b/Include/code.h
@@ -21,7 +21,12 @@
     PyObject *co_varnames;	/* tuple of strings (local variable names) */
     PyObject *co_freevars;	/* tuple of strings (free variable names) */
     PyObject *co_cellvars;      /* tuple of strings (cell variable names) */
-    /* The rest doesn't count for hash or comparisons */
+    /* The rest aren't used in either hash or comparisons, except for
+       co_name (used in both) and co_firstlineno (used only in
+       comparisons).  This is done to preserve the name and line number
+       for tracebacks and debuggers; otherwise, constant de-duplication
+       would collapse identical functions/lambdas defined on different lines.
+    */
     unsigned char *co_cell2arg; /* Maps cell vars which are arguments. */
     PyObject *co_filename;	/* unicode (where it was loaded from) */
     PyObject *co_name;		/* unicode (name, for reference) */

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list