• Tim Peters's avatar
    Removed the new LONG2 opcode: it's extravagant. If LONG1 isn't enough, · fdb8cfab
    Tim Peters yazdı
    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.
    fdb8cfab
pickletools.py 64.1 KB