By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
425,529 Members | 1,826 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 425,529 IT Pros & Developers. It's quick & easy.

bytecode JUMP_IF_* always followed by POP_TOP?

P: n/a
Playing around with bytecodes some more:
def g(x): .... if x:
.... y
.... else:
.... z
.... dis.dis(g)
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) 14 POP_TOP
5 15 LOAD_GLOBAL 2 (z)
18 POP_TOP 19 LOAD_CONST 0 (None)

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
fu******@amor.org

Jul 18 '05 #1
Share this Question
Share on Google+
1 Reply


P: n/a
On Thu, 22 Apr 2004 13:48:16 -0700, rumours say that "Robert Brewer"
<fu******@amor.org> might have written:
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).


The following thread is relevant <long URL>:

<URL:http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&threadm=bpr6musc14m74uqss78iehtl72h9qrmu7o%404ax .com&rnum=1&prev=/groups%3Fq%3Dgroup%253Acomp.lang.python%2BPOP_TOP% 2Bauthor%253ATZOTZIOY%26ie%3DUTF-8%26oe%3DUTF-8%26hl%3Den>

Check also my next message in that thread.

I remember the results were not that impressive in pystone and some
other benchmarks (1-2% or less).
--
TZOTZIOY, I speak England very best,
Ils sont fous ces Redmontains! --Harddix
Jul 18 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.