mirror of
https://github.com/licsber/micropython.git
synced 2024-09-21 01:20:23 +08:00
This patch refactors the handling of the special super() call within the compiler. It removes the need for a global (to the compiler) state variable which keeps track of whether the subject of an expression is super. The handling of super() is now done entirely within one function, which makes the compiler a bit cleaner and allows to easily add more optimisations to super calls. Changes to the code size are: bare-arm: +12 minimal: +0 unix x64: +48 unix nanbox: -16 stmhal: +4 cc3200: +0 esp8266: -56
68 lines
1.4 KiB
Plaintext
68 lines
1.4 KiB
Plaintext
----------------
|
|
[ 4] rule(1) (n=8)
|
|
tok(4)
|
|
[ 4] rule(22) (n=4)
|
|
id(i)
|
|
[ 4] rule(44) (n=1)
|
|
NULL
|
|
[ 5] rule(8) (n=0)
|
|
NULL
|
|
[ 6] rule(5) (n=2)
|
|
id(a)
|
|
tok(14)
|
|
[ 7] rule(5) (n=2)
|
|
id(b)
|
|
str(str)
|
|
[ 8] rule(5) (n=2)
|
|
id(c)
|
|
[ 8] literal \.\+
|
|
[ 9] rule(5) (n=2)
|
|
id(d)
|
|
bytes(bytes)
|
|
[ 10] rule(5) (n=2)
|
|
id(e)
|
|
[ 10] literal \.\+
|
|
[ 11] rule(5) (n=2)
|
|
id(f)
|
|
[ 11] literal \.\+
|
|
----------------
|
|
File cmdline/cmd_parsetree.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ bytes)
|
|
Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
|
|
########
|
|
\.\+5b
|
|
arg names:
|
|
(N_STATE 5)
|
|
(N_EXC_STACK 0)
|
|
bc=-1 line=1
|
|
bc=0 line=4
|
|
bc=9 line=5
|
|
bc=12 line=6
|
|
bc=16 line=7
|
|
bc=22 line=8
|
|
bc=27 line=9
|
|
bc=32 line=10
|
|
bc=37 line=11
|
|
00 BUILD_TUPLE 0
|
|
02 GET_ITER_STACK
|
|
03 FOR_ITER 12
|
|
06 STORE_NAME i
|
|
09 JUMP 3
|
|
12 LOAD_CONST_NONE
|
|
13 STORE_NAME a
|
|
16 LOAD_CONST_STRING 'str'
|
|
19 STORE_NAME b
|
|
22 LOAD_CONST_OBJ \.\+
|
|
24 STORE_NAME c
|
|
27 LOAD_CONST_OBJ \.\+
|
|
29 STORE_NAME d
|
|
32 LOAD_CONST_OBJ \.\+
|
|
34 STORE_NAME e
|
|
37 LOAD_CONST_OBJ \.\+
|
|
39 STORE_NAME f
|
|
42 LOAD_CONST_NONE
|
|
43 RETURN_VALUE
|
|
mem: total=\\d\+, current=\\d\+, peak=\\d\+
|
|
stack: \\d\+ out of \\d\+
|
|
GC: total: \\d\+, used: \\d\+, free: \\d\+
|
|
No. of 1-blocks: \\d\+, 2-blocks: \\d\+, max blk sz: \\d\+, max free sz: \\d\+
|