[Python-Dev] JUMP_ABSOLUTE in nested if statements (original) (raw)
Obiesie ike-nwosu c4obi at yahoo.com
Sat Jun 18 17:04:10 EDT 2016
- Previous message (by thread): [Python-Dev] Compact dict implementations (was: PEP 468
- Next message (by thread): [Python-Dev] JUMP_ABSOLUTE in nested if statements
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi,
Could some one give a hand with explaining to me why we have a JUMP_ABSOLUTE followed by a JUMP_FORWARD op code when this function is disassembled.
def f1(): ... a, b = 10, 11 ... if a >= 10: ... if b >= 11: ... print("hello world") …
The disassembled function is shown below.
dis(f1) 2 0 LOAD_CONST 4 ((10, 11)) 3 UNPACK_SEQUENCE 2 6 STORE_FAST 0 (a) 9 STORE_FAST 1 (b)
3 12 LOAD_FAST 0 (a) 15 LOAD_CONST 1 (10) 18 COMPARE_OP 5 (>=) 21 POP_JUMP_IF_FALSE 47
4 24 LOAD_FAST 1 (b) 27 LOAD_CONST 2 (11) 30 COMPARE_OP 5 (>=) 33 POP_JUMP_IF_FALSE 47
5 36 LOAD_CONST 3 ('hello world')
39 PRINT_ITEM
40 PRINT_NEWLINE
41 JUMP_ABSOLUTE 47
44 JUMP_FORWARD 0 (to 47)
>> 47 LOAD_CONST 0 (None)
50 RETURN_VALUE
From my understanding, once JUMP_ABSOLUTE is executed, then JUMP_FORWARD is never gotten to so must be dead code so why is it being generated? Furthermore why is JUMP_ABSOLUTE rather than JUMP_FORWARD used in this particular case of nested if statements? I have tried other types of nested if statements and it has always been JUMP_FORWARD that is generated.
- Previous message (by thread): [Python-Dev] Compact dict implementations (was: PEP 468
- Next message (by thread): [Python-Dev] JUMP_ABSOLUTE in nested if statements
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]