bytecode JUMP_IF_* always followed by POP_TOP?

R

Robert Brewer

Playing around with bytecodes some more:
.... if x:
.... y
.... else:
.... z
.... 2 0 LOAD_FAST 0 (x)
3 JUMP_IF_FALSE 8 (to 14)
6 POP_TOP

3 7 LOAD_GLOBAL 1 (y)
10 POP_TOP
11 JUMP_FORWARD 5 (to 19)
5 15 LOAD_GLOBAL 2 (z)
18 POP_TOP 22 RETURN_VALUE

I notice that, whether JUMP_IF_FALSE jumps or not, the next instruction
it executes is POP_TOP (in the above, instruction numbers 6 and 14). Are
there any constructions whereby this does not happen for JUMP_IF_FALSE
and JUMP_IF_TRUE? If there aren't, is it just explicitness that kept
JUMP_IF_* from doing the POP on its own, before the jump (which would
thereby save two instructions)?


Robert Brewer
MIS
Amor Ministries
(e-mail address removed)
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,228
Members
46,818
Latest member
SapanaCarpetStudio

Latest Threads

Top