Christian Tismer wrote:
... but I'm curious.

Hi Guido,

while working on Psyco, I stumbled over a log entry in modsupport.h:


   19-Aug-2002  GvR    1012    Changes to string object struct for
                   interning changes, saving 3 bytes.


The change to stringobject was this  (rev. 28308):

Before:
typedef struct {
    PyObject_VAR_HEAD
    long ob_shash;
    PyObject *ob_sinterned;
    char ob_sval[1];
} PyStringObject;

After:
typedef struct {
    PyObject_VAR_HEAD
    long ob_shash;
    int ob_sstate;
    char ob_sval[1];
} PyStringObject;

Now, the internals are very clear to me. What I don't understand
is where the three saved bytes should be.

Thinking of the time where this change was made, I cannot imagine
that this comment was about the size diff between pointer and int,
and if this was meant, I still don't get how this could save three
bytes?

With unaligned ob_sval, structure packing and ob_sstate being
unsigned char one could save 3 bytes, but we don't do that.

Well, as said, this is no important question. I am just asking
myself what I don't see here, or if the comment is just sub-optimal :-)


At Resolver we've found it useful to short-circuit any doubt and just refer to comments in code as 'lies'. :-)

Michael

all the best -- chris


p.s.: won't make it to PyCon this time, see you soon at the piggies


--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to