| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
Harmless.
|
| |
|
|
|
|
|
| |
file can be dumped without (bogus) complaint if the the pickles were
created using a single pickle memo.
|
|
|
|
|
| |
shortcut meaning 0L. This allows LONG1 to encode 0L in two bytes
total.
|
|
|
|
| |
in 2.3.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
popped a MARK, but without stack emulation the disassembler couldn't
know that, and subsequent indentation got hosed.
Now the disassembler does do enough stack emulation to catch this. While
I was at it, also added lots of sanity checks for other stack operations,
and correct use of the memo. This goes (I think) a long way toward being
a "pickle verifier" now too.
|
| |
|
|
|
|
|
| |
between cPickle and pickle.py regarding __safe_for_unpickling__ before
Python 2.3.
|
| |
|
|
|
|
| |
pickletools: Import decode_long from pickle instead of duplicating it.
|
|
|
|
| |
they're easier to read this way.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
of the opcode character instead (but stripping the quotes).
Added a proto 2 test section for the canonical recursive-tuple case.
Note that since pickle's save_tuple() takes different paths depending on
tuple length now, beefier tests are really needed (but not in pickletools);
the "short tuple" case tried here was actually broken yesterday, and it's
subtle stuff so needs to be tested.
|
|
|
|
|
| |
memoized in text mode. Fixed some variable names in the disassembler
doctest.
|
| |
|
|
|
|
|
| |
Also moved the proto2 opcode descriptors into the sections they fit (like
TUPLE{1,2,3} in the group of tuple-building opcodes; etc).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
|
|
|
| |
The protocol now defaults to 1. Protocol 2 is still unimplemented.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
component strings by a blank instead of a period. Guido pointed
out that the component strings (at least the first one) can be
dotted already. find_class() is overridable too, so only God knows
all the possibilities that make sense to someone.
|
|
this over the weekend, and it made faster & better progress than I
expected -- it's already useful <wink>.
|