Python Bytecode
Tim Peters
tim.one at comcast.net
Sat Aug 3 15:08:44 EDT 2002
[Terry Reedy]
> Can you or someone answer a question regarding the following from the
> above:
> "
> JUMP_IF_TRUE delta
> If TOS is true, increment the byte code counter by delta. TOS is left
> on the stack.
>
> JUMP_IF_FALSE delta
> If TOS is false, increment the byte code counter by delta. TOS is not
> changed.
> "
>
> Why isn't TOS removed?
[Michael Hudson]
> Haven't thought about this in a while, but I think it's for chained
> comparisons, e.g. code like:
>
> if 10 < a < 20:
> ...
That may be its only use; as Terry suggested later, in other cases both
tails of the possible branch have to waste time with a POP_TOP. I've been
complaining about this for years, but it's never bubbled to the top of the
stack. Note that any change here would require bumping the PVM version
number.
> ...
> Hard to say whether this would be worth it without trying,
It would be a small win (since it does so little "real work", POP_TOP is
almost pure eval-loop overhead).
> and I'm unlikely to get around to trying it soon...
You're in good company <wink>.
More information about the Python-list
mailing list