]> granicus.if.org Git - python/commit
Removed the new LONG2 opcode: it's extravagant. If LONG1 isn't enough,
authorTim Peters <tim.peters@gmail.com>
Tue, 28 Jan 2003 00:13:19 +0000 (00:13 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 28 Jan 2003 00:13:19 +0000 (00:13 +0000)
commitfdb8cfab085d0f412411b090796e9f856ee0cab5
tree17a5b88a77249d651d903f0f6a71c42065df65db
parentbdbe74183ceb7aedd71dd1afdf8755ee93e8c3ca
Removed the new LONG2 opcode:  it's extravagant.  If LONG1 isn't enough,
then the embedded argument consumes at least 256 bytes.  The difference
between a 3-byte prefix (LONG2 + 2 bytes) and a 5-byte prefix (LONG4 +
4 bytes) is at worst less than 1%.  Note that binary strings and binary
Unicode strings also have only "size is 1 byte, or size is 4 bytes?"
flavors, and I expect for the same reason.  The only place a 2-byte
thingie was used was in BININT2, where the 2 bytes make up the *entire*
embedded argument (and now EXT2 also does this); that's a large savings
over 4 bytes, because the total opcode+argument size is so small in
the BININT2/EXT2 case.

Removed the TAKEN_FROM_ARGUMENT "number of bytes" code, and bifurcated it
into TAKEN_FROM_ARGUMENT1 and TAKEN_FROM_ARGUMENT4.  Now there's enough
info in ArgumentDescriptor objects to deduce the # of bytes consumed by
each opcode.

Rearranged the order in which proto2 opcodes are listed in pickle.py.
Lib/pickle.py
Lib/pickletools.py