summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cmdline/cmd_parsetree.py.exp74
-rw-r--r--tests/cmdline/cmd_showbc.py.exp762
-rw-r--r--tests/cmdline/cmd_verbose.py.exp18
-rw-r--r--tests/micropython/import_mpy_invalid.py1
-rw-r--r--tests/micropython/import_mpy_invalid.py.exp1
-rw-r--r--tests/micropython/import_mpy_native_gc.py8
-rw-r--r--tests/micropython/import_mpy_native_x64.py63
-rw-r--r--tests/perf_bench/core_import_mpy_multi.py2
-rw-r--r--tests/perf_bench/core_import_mpy_single.py2
9 files changed, 518 insertions, 413 deletions
diff --git a/tests/cmdline/cmd_parsetree.py.exp b/tests/cmdline/cmd_parsetree.py.exp
index bee4fc99d..ac16f6d88 100644
--- a/tests/cmdline/cmd_parsetree.py.exp
+++ b/tests/cmdline/cmd_parsetree.py.exp
@@ -39,50 +39,52 @@
[ 13] \(rule\|arglist\)(164) (n=1)
id(b)
----------------
-File cmdline/cmd_parsetree.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_parsetree.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ 64 bytes)
+Raw bytecode (code_info_size=13, bytecode_size=51):
+ 20 16 01 60 28 23 23 24 24 24 24 24 25 2a 00 5f
+ 4b 05 00 16 02 42 f8 7f 51 16 03 10 04 16 05 23
+ 00 16 06 23 01 16 07 23 02 16 08 23 03 16 09 22
+ 80 7b 16 0a 23 04 14 0b 11 05 36 01 16 0c 51 63
arg names:
(N_STATE 5)
(N_EXC_STACK 0)
bc=0 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
- bc=42 line=12
- bc=48 line=13
+ bc=8 line=5
+ bc=11 line=6
+ bc=14 line=7
+ bc=18 line=8
+ bc=22 line=9
+ bc=26 line=10
+ bc=30 line=11
+ bc=34 line=12
+ bc=39 line=13
00 BUILD_TUPLE 0
02 GET_ITER_STACK
-03 FOR_ITER 12
+03 FOR_ITER 11
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_SMALL_INT 123
-45 STORE_NAME g
-48 LOAD_CONST_OBJ \.\+
-50 LOAD_METHOD format
-53 LOAD_NAME b
-56 CALL_METHOD n=1 nkw=0
-58 STORE_NAME h
-61 LOAD_CONST_NONE
-62 RETURN_VALUE
+08 JUMP 3
+11 LOAD_CONST_NONE
+12 STORE_NAME a
+14 LOAD_CONST_STRING 'str'
+16 STORE_NAME b
+18 LOAD_CONST_OBJ \.\+='a very long str that will not be interned'
+20 STORE_NAME c
+22 LOAD_CONST_OBJ \.\+=b'bytes'
+24 STORE_NAME d
+26 LOAD_CONST_OBJ \.\+=b'a very long bytes that will not be interned'
+28 STORE_NAME e
+30 LOAD_CONST_OBJ \.\+=123456789012345678901234567890
+32 STORE_NAME f
+34 LOAD_CONST_SMALL_INT 123
+37 STORE_NAME g
+39 LOAD_CONST_OBJ \.\+="fstring: '{}'"
+41 LOAD_METHOD format
+43 LOAD_NAME b
+45 CALL_METHOD n=1 nkw=0
+47 STORE_NAME h
+49 LOAD_CONST_NONE
+50 RETURN_VALUE
mem: total=\\d\+, current=\\d\+, peak=\\d\+
stack: \\d\+ out of \\d\+
GC: total: \\d\+, used: \\d\+, free: \\d\+
diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp
index 22712b79e..031820fcd 100644
--- a/tests/cmdline/cmd_showbc.py.exp
+++ b/tests/cmdline/cmd_showbc.py.exp
@@ -1,51 +1,144 @@
-File cmdline/cmd_showbc.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ 63 bytes)
+Raw bytecode (code_info_size=18, bytecode_size=45):
+ 10 20 01 60 20 84 7d 64 60 88 07 64 60 69 20 62
+ 64 20 32 00 16 02 32 01 16 02 81 2a 01 53 33 02
+ 16 02 32 03 16 02 54 32 04 10 03 34 02 16 03 19
+ 03 32 05 16 02 80 10 04 2a 01 1b 05 69 51 63
arg names:
(N_STATE 3)
(N_EXC_STACK 0)
bc=0 line=1
-########
- bc=\\d\+ line=160
+ bc=0 line=4
+ bc=0 line=5
+ bc=4 line=130
+ bc=8 line=133
+ bc=8 line=136
+ bc=16 line=143
+ bc=20 line=146
+ bc=20 line=149
+ bc=29 line=152
+ bc=29 line=153
+ bc=31 line=156
+ bc=35 line=159
+ bc=35 line=160
00 MAKE_FUNCTION \.\+
-\\d\+ STORE_NAME f
-\\d\+ MAKE_FUNCTION \.\+
-\\d\+ STORE_NAME f
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ BUILD_TUPLE 1
-\\d\+ LOAD_NULL
-\\d\+ MAKE_FUNCTION_DEFARGS \.\+
-\\d\+ STORE_NAME f
-\\d\+ MAKE_FUNCTION \.\+
-\\d\+ STORE_NAME f
-\\d\+ LOAD_BUILD_CLASS
-\\d\+ MAKE_FUNCTION \.\+
-\\d\+ LOAD_CONST_STRING 'Class'
-\\d\+ CALL_FUNCTION n=2 nkw=0
-\\d\+ STORE_NAME Class
-\\d\+ DELETE_NAME Class
-\\d\+ MAKE_FUNCTION \.\+
-\\d\+ STORE_NAME f
-\\d\+ LOAD_CONST_SMALL_INT 0
-\\d\+ LOAD_CONST_STRING '*'
-\\d\+ BUILD_TUPLE 1
-\\d\+ IMPORT_NAME 'sys'
-\\d\+ IMPORT_STAR
-\\d\+ LOAD_CONST_NONE
-\\d\+ RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
+02 STORE_NAME f
+04 MAKE_FUNCTION \.\+
+06 STORE_NAME f
+08 LOAD_CONST_SMALL_INT 1
+09 BUILD_TUPLE 1
+11 LOAD_NULL
+12 MAKE_FUNCTION_DEFARGS \.\+
+14 STORE_NAME f
+16 MAKE_FUNCTION \.\+
+18 STORE_NAME f
+20 LOAD_BUILD_CLASS
+21 MAKE_FUNCTION \.\+
+23 LOAD_CONST_STRING 'Class'
+25 CALL_FUNCTION n=2 nkw=0
+27 STORE_NAME Class
+29 DELETE_NAME Class
+31 MAKE_FUNCTION \.\+
+33 STORE_NAME f
+35 LOAD_CONST_SMALL_INT 0
+36 LOAD_CONST_STRING '*'
+38 BUILD_TUPLE 1
+40 IMPORT_NAME 'sys'
+42 IMPORT_STAR
+43 LOAD_CONST_NONE
+44 RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 48\[24\] bytes)
+Raw bytecode (code_info_size=8\[46\], bytecode_size=398):
+ a8 12 9\[bf\] 03 02 60 60 26 22 24 64 22 26 25 25 24
+ 26 23 63 22 22 25 23 23 31 6d 25 65 25 25 69 68
+ 26 65 27 6a 62 20 23 62 2a 29 69 24 25 28 67 26
########
-\.\+rg names:
+\.\+81 63
+arg names:
(N_STATE 22)
(N_EXC_STACK 2)
(INIT_CELL 14)
(INIT_CELL 15)
(INIT_CELL 16)
bc=0 line=1
+ bc=0 line=4
+ bc=0 line=7
+ bc=6 line=8
+ bc=8 line=9
+ bc=12 line=10
+ bc=16 line=13
+ bc=18 line=14
+ bc=24 line=15
+ bc=29 line=16
+ bc=34 line=17
+ bc=38 line=18
+ bc=44 line=19
+ bc=47 line=20
+ bc=50 line=23
+ bc=52 line=24
+ bc=54 line=25
+ bc=59 line=26
+ bc=62 line=27
+ bc=65 line=28
+ bc=82 line=29
+ bc=95 line=32
+ bc=100 line=33
+ bc=105 line=36
+ bc=110 line=37
+ bc=115 line=38
+ bc=124 line=41
+ bc=132 line=44
+ bc=138 line=45
+ bc=143 line=48
+ bc=150 line=49
+ bc=160 line=52
+ bc=162 line=55
+ bc=162 line=56
+ bc=165 line=57
+ bc=167 line=60
+ bc=177 line=61
+ bc=186 line=62
+ bc=195 line=65
+ bc=199 line=66
+ bc=204 line=67
+ bc=212 line=68
+ bc=219 line=71
+ bc=225 line=72
+ bc=232 line=73
+ bc=242 line=74
+ bc=250 line=77
+ bc=254 line=78
+ bc=260 line=80
+ bc=263 line=81
+ bc=266 line=82
+ bc=273 line=83
+ bc=276 line=84
+ bc=283 line=85
+ bc=289 line=88
+ bc=296 line=89
+ bc=301 line=92
+ bc=307 line=93
+ bc=310 line=94
+########
+ bc=321 line=96
+ bc=329 line=98
+ bc=332 line=99
+ bc=335 line=100
+ bc=338 line=101
########
- bc=\\d\+ line=127
+ bc=346 line=103
+ bc=354 line=106
+ bc=359 line=107
+ bc=365 line=110
+ bc=368 line=111
+ bc=374 line=114
+ bc=374 line=117
+ bc=379 line=118
+ bc=391 line=121
+ bc=391 line=122
+ bc=392 line=123
+ bc=394 line=126
+ bc=396 line=127
00 LOAD_CONST_NONE
01 LOAD_CONST_FALSE
02 BINARY_OP 27 __add__
@@ -80,247 +173,251 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
42 STORE_MAP
43 STORE_FAST 3
44 LOAD_CONST_STRING 'a'
-47 STORE_FAST 4
-48 LOAD_CONST_OBJ \.\+
-\\d\+ STORE_FAST 5
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ STORE_FAST 6
-\\d\+ LOAD_CONST_SMALL_INT 2
-\\d\+ STORE_FAST 7
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_DEREF 14
-58 BINARY_OP 27 __add__
-\\d\+ STORE_FAST 8
-\\d\+ LOAD_FAST 0
-\\d\+ UNARY_OP 1 __neg__
-\\d\+ STORE_FAST 9
-\\d\+ LOAD_FAST 0
-\\d\+ UNARY_OP 3
-\\d\+ STORE_FAST 10
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_DEREF 14
-\\d\+ DUP_TOP
-\\d\+ ROT_THREE
-\\d\+ BINARY_OP 2 __eq__
-\\d\+ JUMP_IF_FALSE_OR_POP \\d\+
-\\d\+ LOAD_FAST 1
-\\d\+ BINARY_OP 2 __eq__
-\\d\+ JUMP \\d\+
-\\d\+ ROT_TWO
-\\d\+ POP_TOP
-\\d\+ STORE_FAST 10
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_DEREF 14
-\\d\+ BINARY_OP 2 __eq__
-\\d\+ JUMP_IF_FALSE_OR_POP \\d\+
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_FAST 1
-\\d\+ BINARY_OP 2 __eq__
-\\d\+ UNARY_OP 3
-\\d\+ STORE_FAST 10
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_ATTR c
-\\d\+ STORE_FAST 11
-\\d\+ LOAD_FAST 11
-\\d\+ LOAD_DEREF 14
-\\d\+ STORE_ATTR c
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_CONST_SMALL_INT 0
-\\d\+ LOAD_SUBSCR
-\\d\+ STORE_FAST 12
-\\d\+ LOAD_FAST 12
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_CONST_SMALL_INT 0
-\\d\+ STORE_SUBSCR
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_CONST_SMALL_INT 0
-\\d\+ DUP_TOP_TWO
-\\d\+ LOAD_SUBSCR
-\\d\+ LOAD_FAST 12
-\\d\+ BINARY_OP 14 __iadd__
-\\d\+ ROT_THREE
-\\d\+ STORE_SUBSCR
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_CONST_NONE
-\\d\+ LOAD_CONST_NONE
-\\d\+ BUILD_SLICE 2
-\\d\+ LOAD_SUBSCR
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_FAST 1
-\\d\+ UNPACK_SEQUENCE 2
-\\d\+ STORE_FAST 0
-\\d\+ STORE_DEREF 14
-\\d\+ LOAD_FAST 0
-\\d\+ UNPACK_EX 1
-\\d\+ STORE_FAST 0
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_FAST 0
-\\d\+ ROT_TWO
-\\d\+ STORE_FAST 0
-\\d\+ STORE_DEREF 14
-\\d\+ LOAD_FAST 1
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_FAST 0
-\\d\+ ROT_THREE
-\\d\+ ROT_TWO
-\\d\+ STORE_FAST 0
-\\d\+ STORE_DEREF 14
-\\d\+ STORE_FAST 1
-\\d\+ DELETE_FAST 0
-\\d\+ LOAD_FAST 0
-\\d\+ STORE_GLOBAL gl
-\\d\+ DELETE_GLOBAL gl
-\\d\+ LOAD_FAST 14
-\\d\+ LOAD_FAST 15
-\\d\+ MAKE_CLOSURE \.\+ 2
-\\d\+ LOAD_FAST 2
-\\d\+ GET_ITER
-\\d\+ CALL_FUNCTION n=1 nkw=0
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_FAST 14
-\\d\+ LOAD_FAST 15
-\\d\+ MAKE_CLOSURE \.\+ 2
-\\d\+ LOAD_FAST 2
-\\d\+ CALL_FUNCTION n=1 nkw=0
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_FAST 14
-\\d\+ LOAD_FAST 15
-\\d\+ MAKE_CLOSURE \.\+ 2
-\\d\+ LOAD_FAST 2
-\\d\+ CALL_FUNCTION n=1 nkw=0
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_FAST 0
-\\d\+ CALL_FUNCTION n=0 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ CALL_FUNCTION n=1 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_CONST_STRING 'b'
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ CALL_FUNCTION n=0 nkw=1
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_DEREF 14
-\\d\+ LOAD_NULL
-\\d\+ CALL_FUNCTION_VAR_KW n=0 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_METHOD b
-\\d\+ CALL_METHOD n=0 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_METHOD b
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ CALL_METHOD n=1 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_METHOD b
-\\d\+ LOAD_CONST_STRING 'c'
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ CALL_METHOD n=0 nkw=1
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_METHOD b
-\\d\+ LOAD_FAST 1
-\\d\+ LOAD_NULL
-\\d\+ CALL_METHOD_VAR_KW n=0 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ POP_JUMP_IF_FALSE \\d\+
-\\d\+ LOAD_DEREF 16
-\\d\+ POP_TOP
-\\d\+ JUMP \\d\+
-\\d\+ LOAD_GLOBAL y
-\\d\+ POP_TOP
-\\d\+ JUMP \\d\+
-\\d\+ LOAD_DEREF 14
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ POP_JUMP_IF_TRUE \\d\+
-\\d\+ JUMP \\d\+
-\\d\+ LOAD_DEREF 14
-\\d\+ POP_TOP
-\\d\+ LOAD_FAST 0
-\\d\+ POP_JUMP_IF_FALSE \\d\+
-\\d\+ LOAD_FAST 0
-\\d\+ JUMP_IF_TRUE_OR_POP \\d\+
-\\d\+ LOAD_FAST 0
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_DEREF 14
-\\d\+ GET_ITER_STACK
-\\d\+ FOR_ITER \\d\+
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_FAST 1
-\\d\+ POP_TOP
-\\d\+ JUMP \\d\+
-\\d\+ SETUP_FINALLY \\d\+
-\\d\+ SETUP_EXCEPT \\d\+
-\\d\+ JUMP \\d\+
-\\d\+ JUMP \\d\+
-\\d\+ LOAD_FAST 0
-\\d\+ POP_JUMP_IF_TRUE \\d\+
-\\d\+ POP_EXCEPT_JUMP \\d\+
-\\d\+ POP_TOP
-\\d\+ LOAD_DEREF 14
-\\d\+ POP_TOP
-\\d\+ POP_EXCEPT_JUMP \\d\+
-\\d\+ END_FINALLY
-\\d\+ LOAD_CONST_NONE
-\\d\+ LOAD_FAST 1
-\\d\+ POP_TOP
-\\d\+ END_FINALLY
-\\d\+ JUMP \\d\+
-\\d\+ SETUP_EXCEPT \\d\+
-\\d\+ UNWIND_JUMP \\d\+ 1
-\\d\+ POP_EXCEPT_JUMP \\d\+
-\\d\+ POP_TOP
-\\d\+ POP_EXCEPT_JUMP \\d\+
-\\d\+ END_FINALLY
-\\d\+ LOAD_FAST 0
-\\d\+ POP_JUMP_IF_TRUE \\d\+
-\\d\+ LOAD_FAST 0
-\\d\+ SETUP_WITH \\d\+
-\\d\+ POP_TOP
-\\d\+ LOAD_DEREF 14
-\\d\+ POP_TOP
-\\d\+ LOAD_CONST_NONE
-\\d\+ WITH_CLEANUP
-\\d\+ END_FINALLY
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ STORE_DEREF 16
-\\d\+ LOAD_FAST_N 16
-\\d\+ MAKE_CLOSURE \.\+ 1
-\\d\+ STORE_FAST 13
-\\d\+ LOAD_CONST_SMALL_INT 0
-\\d\+ LOAD_CONST_NONE
-\\d\+ IMPORT_NAME 'a'
-\\d\+ STORE_FAST 0
-\\d\+ LOAD_CONST_SMALL_INT 0
-\\d\+ LOAD_CONST_STRING 'b'
-\\d\+ BUILD_TUPLE 1
-\\d\+ IMPORT_NAME 'a'
-\\d\+ IMPORT_FROM 'b'
-\\d\+ STORE_DEREF 14
-\\d\+ POP_TOP
-\\d\+ RAISE_LAST
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ RAISE_OBJ
-\\d\+ LOAD_CONST_NONE
-\\d\+ RETURN_VALUE
-\\d\+ LOAD_CONST_SMALL_INT 1
-\\d\+ RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+rg names:
+46 STORE_FAST 4
+47 LOAD_CONST_OBJ \.\+=b'a'
+49 STORE_FAST 5
+50 LOAD_CONST_SMALL_INT 1
+51 STORE_FAST 6
+52 LOAD_CONST_SMALL_INT 2
+53 STORE_FAST 7
+54 LOAD_FAST 0
+55 LOAD_DEREF 14
+57 BINARY_OP 27 __add__
+58 STORE_FAST 8
+59 LOAD_FAST 0
+60 UNARY_OP 1 __neg__
+61 STORE_FAST 9
+62 LOAD_FAST 0
+63 UNARY_OP 3
+64 STORE_FAST 10
+65 LOAD_FAST 0
+66 LOAD_DEREF 14
+68 DUP_TOP
+69 ROT_THREE
+70 BINARY_OP 2 __eq__
+71 JUMP_IF_FALSE_OR_POP 79
+74 LOAD_FAST 1
+75 BINARY_OP 2 __eq__
+76 JUMP 81
+79 ROT_TWO
+80 POP_TOP
+81 STORE_FAST 10
+82 LOAD_FAST 0
+83 LOAD_DEREF 14
+85 BINARY_OP 2 __eq__
+86 JUMP_IF_FALSE_OR_POP 93
+89 LOAD_DEREF 14
+91 LOAD_FAST 1
+92 BINARY_OP 2 __eq__
+93 UNARY_OP 3
+94 STORE_FAST 10
+95 LOAD_DEREF 14
+97 LOAD_ATTR c
+99 STORE_FAST 11
+100 LOAD_FAST 11
+101 LOAD_DEREF 14
+103 STORE_ATTR c
+105 LOAD_DEREF 14
+107 LOAD_CONST_SMALL_INT 0
+108 LOAD_SUBSCR
+109 STORE_FAST 12
+110 LOAD_FAST 12
+111 LOAD_DEREF 14
+113 LOAD_CONST_SMALL_INT 0
+114 STORE_SUBSCR
+115 LOAD_DEREF 14
+117 LOAD_CONST_SMALL_INT 0
+118 DUP_TOP_TWO
+119 LOAD_SUBSCR
+120 LOAD_FAST 12
+121 BINARY_OP 14 __iadd__
+122 ROT_THREE
+123 STORE_SUBSCR
+124 LOAD_DEREF 14
+126 LOAD_CONST_NONE
+127 LOAD_CONST_NONE
+128 BUILD_SLICE 2
+130 LOAD_SUBSCR
+131 STORE_FAST 0
+132 LOAD_FAST 1
+133 UNPACK_SEQUENCE 2
+135 STORE_FAST 0
+136 STORE_DEREF 14
+138 LOAD_FAST 0
+139 UNPACK_EX 1
+141 STORE_FAST 0
+142 STORE_FAST 0
+143 LOAD_DEREF 14
+145 LOAD_FAST 0
+146 ROT_TWO
+147 STORE_FAST 0
+148 STORE_DEREF 14
+150 LOAD_FAST 1
+151 LOAD_DEREF 14
+153 LOAD_FAST 0
+154 ROT_THREE
+155 ROT_TWO
+156 STORE_FAST 0
+157 STORE_DEREF 14
+159 STORE_FAST 1
+160 DELETE_FAST 0
+162 LOAD_FAST 0
+163 STORE_GLOBAL gl
+165 DELETE_GLOBAL gl
+167 LOAD_FAST 14
+168 LOAD_FAST 15
+169 MAKE_CLOSURE \.\+ 2
+172 LOAD_FAST 2
+173 GET_ITER
+174 CALL_FUNCTION n=1 nkw=0
+176 STORE_FAST 0
+177 LOAD_FAST 14
+178 LOAD_FAST 15
+179 MAKE_CLOSURE \.\+ 2
+182 LOAD_FAST 2
+183 CALL_FUNCTION n=1 nkw=0
+185 STORE_FAST 0
+186 LOAD_FAST 14
+187 LOAD_FAST 15
+188 MAKE_CLOSURE \.\+ 2
+191 LOAD_FAST 2
+192 CALL_FUNCTION n=1 nkw=0
+194 STORE_FAST 0
+195 LOAD_FAST 0
+196 CALL_FUNCTION n=0 nkw=0
+198 POP_TOP
+199 LOAD_FAST 0
+200 LOAD_CONST_SMALL_INT 1
+201 CALL_FUNCTION n=1 nkw=0
+203 POP_TOP
+204 LOAD_FAST 0
+205 LOAD_CONST_STRING 'b'
+207 LOAD_CONST_SMALL_INT 1
+208 CALL_FUNCTION n=0 nkw=1
+211 POP_TOP
+212 LOAD_FAST 0
+213 LOAD_DEREF 14
+215 LOAD_NULL
+216 CALL_FUNCTION_VAR_KW n=0 nkw=0
+218 POP_TOP
+219 LOAD_FAST 0
+220 LOAD_METHOD b
+222 CALL_METHOD n=0 nkw=0
+224 POP_TOP
+225 LOAD_FAST 0
+226 LOAD_METHOD b
+228 LOAD_CONST_SMALL_INT 1
+229 CALL_METHOD n=1 nkw=0
+231 POP_TOP
+232 LOAD_FAST 0
+233 LOAD_METHOD b
+235 LOAD_CONST_STRING 'c'
+237 LOAD_CONST_SMALL_INT 1
+238 CALL_METHOD n=0 nkw=1
+241 POP_TOP
+242 LOAD_FAST 0
+243 LOAD_METHOD b
+245 LOAD_FAST 1
+246 LOAD_NULL
+247 CALL_METHOD_VAR_KW n=0 nkw=0
+249 POP_TOP
+250 LOAD_FAST 0
+251 POP_JUMP_IF_FALSE 260
+254 LOAD_DEREF 16
+256 POP_TOP
+257 JUMP 263
+260 LOAD_GLOBAL y
+262 POP_TOP
+263 JUMP 269
+266 LOAD_DEREF 14
+268 POP_TOP
+269 LOAD_FAST 0
+270 POP_JUMP_IF_TRUE 266
+273 JUMP 279
+276 LOAD_DEREF 14
+278 POP_TOP
+279 LOAD_FAST 0
+280 POP_JUMP_IF_FALSE 276
+283 LOAD_FAST 0
+284 JUMP_IF_TRUE_OR_POP 288
+287 LOAD_FAST 0
+288 STORE_FAST 0
+289 LOAD_DEREF 14
+291 GET_ITER_STACK
+292 FOR_ITER 301
+295 STORE_FAST 0
+296 LOAD_FAST 1
+297 POP_TOP
+298 JUMP 292
+301 SETUP_FINALLY 329
+304 SETUP_EXCEPT 320
+307 JUMP 313
+310 JUMP 317
+313 LOAD_FAST 0
+314 POP_JUMP_IF_TRUE 310
+317 POP_EXCEPT_JUMP 328
+320 POP_TOP
+321 LOAD_DEREF 14
+323 POP_TOP
+324 POP_EXCEPT_JUMP 328
+327 END_FINALLY
+328 LOAD_CONST_NONE
+329 LOAD_FAST 1
+330 POP_TOP
+331 END_FINALLY
+332 JUMP 350
+335 SETUP_EXCEPT 345
+338 UNWIND_JUMP 354 1
+342 POP_EXCEPT_JUMP 350
+345 POP_TOP
+346 POP_EXCEPT_JUMP 350
+349 END_FINALLY
+350 LOAD_FAST 0
+351 POP_JUMP_IF_TRUE 335
+354 LOAD_FAST 0
+355 SETUP_WITH 363
+358 POP_TOP
+359 LOAD_DEREF 14
+361 POP_TOP
+362 LOAD_CONST_NONE
+363 WITH_CLEANUP
+364 END_FINALLY
+365 LOAD_CONST_SMALL_INT 1
+366 STORE_DEREF 16
+368 LOAD_FAST_N 16
+370 MAKE_CLOSURE \.\+ 1
+373 STORE_FAST 13
+374 LOAD_CONST_SMALL_INT 0
+375 LOAD_CONST_NONE
+376 IMPORT_NAME 'a'
+378 STORE_FAST 0
+379 LOAD_CONST_SMALL_INT 0
+380 LOAD_CONST_STRING 'b'
+382 BUILD_TUPLE 1
+384 IMPORT_NAME 'a'
+386 IMPORT_FROM 'b'
+388 STORE_DEREF 14
+390 POP_TOP
+391 RAISE_LAST
+392 LOAD_CONST_SMALL_INT 1
+393 RAISE_OBJ
+394 LOAD_CONST_NONE
+395 RETURN_VALUE
+396 LOAD_CONST_SMALL_INT 1
+397 RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 59 bytes)
+Raw bytecode (code_info_size=8, bytecode_size=51):
+ a8 10 0a 02 80 82 34 38 81 57 c0 57 c1 57 c2 57
+ c3 57 c4 57 c5 57 c6 57 c7 57 c8 c9 82 57 ca 57
+ cb 57 cc 57 cd 57 ce 57 cf 57 26 10 57 26 11 57
+ 26 12 26 13 b9 24 13 f2 59 51 63
+arg names:
(N_STATE 22)
(N_EXC_STACK 0)
bc=0 line=1
-########
- bc=\\d\+ line=133
+ bc=0 line=131
+ bc=20 line=132
+ bc=44 line=133
00 LOAD_CONST_SMALL_INT 1
01 DUP_TOP
02 STORE_FAST 0
@@ -367,28 +464,29 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
48 POP_TOP
49 LOAD_CONST_NONE
50 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 20 bytes)
+Raw bytecode (code_info_size=9, bytecode_size=11):
+ a1 01 0b 02 06 80 88 40 00 82 2a 01 53 b0 21 00
+ 01 c1 51 63
arg names: a
(N_STATE 5)
(N_EXC_STACK 0)
(INIT_CELL 0)
-########
- bc=\\d\+ line=139
+ bc=0 line=1
+ bc=0 line=137
+ bc=0 line=139
00 LOAD_CONST_SMALL_INT 2
01 BUILD_TUPLE 1
03 LOAD_NULL
04 LOAD_FAST 0
05 MAKE_CLOSURE_DEFARGS \.\+ 1
-\\d\+ STORE_FAST 1
-\\d\+ LOAD_CONST_NONE
-\\d\+ RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+08 STORE_FAST 1
+09 LOAD_CONST_NONE
+10 RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 21 bytes)
+Raw bytecode (code_info_size=8, bytecode_size=13):
+ 88 40 0a 02 80 8f 23 23 51 67 59 81 67 59 81 5e
+ 51 68 59 51 63
arg names:
(N_STATE 2)
(N_EXC_STACK 0)
@@ -409,49 +507,47 @@ arg names:
10 POP_TOP
11 LOAD_CONST_NONE
12 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'Class' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block 'Class' (descriptor: \.\+, bytecode @\.\+ 1\[56\] bytes)
+Raw bytecode (code_info_size=\[56\], bytecode_size=10):
+ 00 \.\+ 11 0c 16 0d 10 03 16 0e 51 63
arg names:
(N_STATE 1)
(N_EXC_STACK 0)
bc=0 line=1
########
- bc=12 line=150
+ bc=8 line=150
00 LOAD_NAME __name__
-03 STORE_NAME __module__
-06 LOAD_CONST_STRING 'Class'
-09 STORE_NAME __qualname__
-12 LOAD_CONST_NONE
-13 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+02 STORE_NAME __module__
+04 LOAD_CONST_STRING 'Class'
+06 STORE_NAME __qualname__
+08 LOAD_CONST_NONE
+09 RETURN_VALUE
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 18 bytes)
+Raw bytecode (code_info_size=6, bytecode_size=12):
+ 19 08 02 0f 80 9c 12 10 12 11 b0 15 02 36 00 59
+ 51 63
arg names: self
(N_STATE 4)
(N_EXC_STACK 0)
bc=0 line=1
bc=0 line=157
00 LOAD_GLOBAL super
-\\d\+ LOAD_GLOBAL __class__
-\\d\+ LOAD_FAST 0
-\\d\+ LOAD_SUPER_METHOD f
-\\d\+ CALL_METHOD n=0 nkw=0
-\\d\+ POP_TOP
-\\d\+ LOAD_CONST_NONE
-\\d\+ RETURN_VALUE
-File cmdline/cmd_showbc.py, code block '<genexpr>' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+02 LOAD_GLOBAL __class__
+04 LOAD_FAST 0
+05 LOAD_SUPER_METHOD f
+07 CALL_METHOD n=0 nkw=0
+09 POP_TOP
+10 LOAD_CONST_NONE
+11 RETURN_VALUE
+File cmdline/cmd_showbc.py, code block '<genexpr>' (descriptor: \.\+, bytecode @\.\+ 31 bytes)
+Raw bytecode (code_info_size=9, bytecode_size=22):
+ c3 40 0c 12 04 04 04 80 3b 53 b2 53 53 4b 0d 00
+ c3 25 01 44 f7 7f 25 00 67 59 42 f0 7f 51 63
arg names: * * *
(N_STATE 9)
(N_EXC_STACK 0)
bc=0 line=1
bc=0 line=60
-########
00 LOAD_NULL
01 LOAD_FAST 2
02 LOAD_NULL
@@ -466,16 +562,15 @@ arg names: * * *
17 JUMP 4
20 LOAD_CONST_NONE
21 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block '<listcomp>' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block '<listcomp>' (descriptor: \.\+, bytecode @\.\+ 29 bytes)
+Raw bytecode (code_info_size=8, bytecode_size=21):
+ 4b 0c 14 04 04 04 80 3c 2b 00 b2 5f 4b 0d 00 c3
+ 25 01 44 f7 7f 25 00 2f 14 42 f0 7f 63
arg names: * * *
(N_STATE 10)
(N_EXC_STACK 0)
bc=0 line=1
bc=0 line=61
-########
00 BUILD_LIST 0
02 LOAD_FAST 2
03 GET_ITER_STACK
@@ -487,15 +582,15 @@ arg names: * * *
15 STORE_COMP 20
17 JUMP 4
20 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block '<dictcomp>' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block '<dictcomp>' (descriptor: \.\+, bytecode @\.\+ 31 bytes)
+Raw bytecode (code_info_size=8, bytecode_size=23):
+ 53 0c 15 04 04 04 80 3d 2c 00 b2 5f 4b 0f 00 c3
+ 25 01 44 f7 7f 25 00 25 00 2f 19 42 ee 7f 63
arg names: * * *
(N_STATE 11)
(N_EXC_STACK 0)
bc=0 line=1
-########
+ bc=0 line=62
00 BUILD_MAP 0
02 LOAD_FAST 2
03 GET_ITER_STACK
@@ -508,16 +603,17 @@ arg names: * * *
17 STORE_COMP 25
19 JUMP 4
22 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'closure' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block 'closure' (descriptor: \.\+, bytecode @\.\+ 20 bytes)
+Raw bytecode (code_info_size=8, bytecode_size=12):
+ 19 0c 16 04 80 6f 25 23 25 00 81 f2 c1 81 27 00
+ 29 00 51 63
arg names: *
(N_STATE 4)
(N_EXC_STACK 0)
bc=0 line=1
-########
- bc=\\d\+ line=114
+ bc=0 line=112
+ bc=5 line=113
+ bc=8 line=114
00 LOAD_DEREF 0
02 LOAD_CONST_SMALL_INT 1
03 BINARY_OP 27 __add__
@@ -527,16 +623,14 @@ arg names: *
08 DELETE_DEREF 0
10 LOAD_CONST_NONE
11 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
-########
-\.\+63
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 13 bytes)
+Raw bytecode (code_info_size=8, bytecode_size=5):
+ 9a 01 0a 02 04 09 80 8b b1 25 00 f2 63
arg names: * b
(N_STATE 4)
(N_EXC_STACK 0)
bc=0 line=1
-########
- bc=\\d\+ line=140
+ bc=0 line=140
00 LOAD_FAST 1
01 LOAD_DEREF 0
03 BINARY_OP 27 __add__
diff --git a/tests/cmdline/cmd_verbose.py.exp b/tests/cmdline/cmd_verbose.py.exp
index 0edd050c2..ae833dbec 100644
--- a/tests/cmdline/cmd_verbose.py.exp
+++ b/tests/cmdline/cmd_verbose.py.exp
@@ -1,19 +1,17 @@
-File cmdline/cmd_verbose.py, code block '<module>' (descriptor: \.\+, bytecode \.\+ bytes)
-Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+):
- 08 \.\+
-########
-\.\+63
+File cmdline/cmd_verbose.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ 12 bytes)
+Raw bytecode (code_info_size=4, bytecode_size=8):
+ 08 04 01 40 11 02 81 34 01 59 51 63
arg names:
(N_STATE 2)
(N_EXC_STACK 0)
bc=0 line=1
bc=0 line=3
00 LOAD_NAME print
-03 LOAD_CONST_SMALL_INT 1
-04 CALL_FUNCTION n=1 nkw=0
-06 POP_TOP
-07 LOAD_CONST_NONE
-08 RETURN_VALUE
+02 LOAD_CONST_SMALL_INT 1
+03 CALL_FUNCTION n=1 nkw=0
+05 POP_TOP
+06 LOAD_CONST_NONE
+07 RETURN_VALUE
1
mem: total=\\d\+, current=\\d\+, peak=\\d\+
stack: \\d\+ out of \\d\+
diff --git a/tests/micropython/import_mpy_invalid.py b/tests/micropython/import_mpy_invalid.py
index 02fd4b125..b02312a7a 100644
--- a/tests/micropython/import_mpy_invalid.py
+++ b/tests/micropython/import_mpy_invalid.py
@@ -49,7 +49,6 @@ user_files = {
"/mod0.mpy": b"", # empty file
"/mod1.mpy": b"M", # too short header
"/mod2.mpy": b"M\x00\x00\x00", # bad version
- "/mod3.mpy": b"M\x00\x00\x00\x7f", # qstr window too large
}
# create and mount a user filesystem
diff --git a/tests/micropython/import_mpy_invalid.py.exp b/tests/micropython/import_mpy_invalid.py.exp
index ea748ff6c..1727ea1ce 100644
--- a/tests/micropython/import_mpy_invalid.py.exp
+++ b/tests/micropython/import_mpy_invalid.py.exp
@@ -1,4 +1,3 @@
mod0 ValueError incompatible .mpy file
mod1 ValueError incompatible .mpy file
mod2 ValueError incompatible .mpy file
-mod3 ValueError incompatible .mpy file
diff --git a/tests/micropython/import_mpy_native_gc.py b/tests/micropython/import_mpy_native_gc.py
index f982a4ee1..6f37b15ab 100644
--- a/tests/micropython/import_mpy_native_gc.py
+++ b/tests/micropython/import_mpy_native_gc.py
@@ -49,14 +49,14 @@ class UserFS:
# by the required value of sys.implementation.mpy.
features0_file_contents = {
# -march=x64
- 0xA05: b'M\x05\x0a\x1f \x84b\xe9/\x00\x00\x00SH\x8b\x1ds\x00\x00\x00\xbe\x02\x00\x00\x00\xffS\x18\xbf\x01\x00\x00\x00H\x85\xc0u\x0cH\x8bC \xbe\x02\x00\x00\x00[\xff\xe0H\x0f\xaf\xf8H\xff\xc8\xeb\xe6ATUSH\x8b\x1dA\x00\x00\x00H\x8b\x7f\x08L\x8bc(A\xff\xd4H\x8d5\x1f\x00\x00\x00H\x89\xc5H\x8b\x05-\x00\x00\x00\x0f\xb78\xffShH\x89\xefA\xff\xd4H\x8b\x03[]A\\\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x90\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x84@\x12factorial\x10\x00\x00\r \x01"\x9f\x1c\x01\x1e\xff',
+ 0xA06: b'M\x06\n\x1f\x01\x004build/features0.native.mpy\x00\x8aB\xe9/\x00\x00\x00SH\x8b\x1d\x83\x00\x00\x00\xbe\x02\x00\x00\x00\xffS\x18\xbf\x01\x00\x00\x00H\x85\xc0u\x0cH\x8bC \xbe\x02\x00\x00\x00[\xff\xe0H\x0f\xaf\xf8H\xff\xc8\xeb\xe6ATUSH\x8b\x1dQ\x00\x00\x00H\x8bG\x08L\x8bc(H\x8bx\x08A\xff\xd4H\x8d5+\x00\x00\x00H\x89\xc5H\x8b\x059\x00\x00\x00\x0f\xb78\xffShH\x89\xefA\xff\xd4H\x8b\x03[]A\\\xc3\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x85\x00\x12factorial\x00\x10\r$\x01&\x9f \x01"\xff',
# -march=armv7m
- 0x1605: b"M\x05\x16\x1f \x84\x12\x1a\xe0\x00\x00\x13\xb5\nK\nJ{D\x9cX\x02!\xe3h\x98G\x03F\x01 3\xb9\x02!#i\x01\x93\x02\xb0\xbd\xe8\x10@\x18GXC\x01;\xf4\xe7\x00\xbfj\x00\x00\x00\x00\x00\x00\x00\xf8\xb5\tN\tK~D\xf4X@hgi\xb8G\x05F\x07K\x07I\xf2XyD\x10\x88ck\x98G(F\xb8G h\xf8\xbd6\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x01\x84\x00\x12factorial\x10\x00\x00\r<\x01>\x9f8\x01:\xff",
+ 0x1606: b"M\x06\x16\x1f\x01\x004build/features0.native.mpy\x00\x88B\x1a\xe0\x00\x00\x13\xb5\nK\nJ{D\x9cX\x02!\xe3h\x98G\x03F\x01 3\xb9\x02!#i\x01\x93\x02\xb0\xbd\xe8\x10@\x18GXC\x01;\xf4\xe7\x00\xbfn\x00\x00\x00\x00\x00\x00\x00\xf8\xb5\nN\nK~D\xf4XChgiXh\xb8G\x05F\x07K\x08I\xf2XyD\x10\x88ck\x98G(F\xb8G h\xf8\xbd\x00\xbf:\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x1e\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x84\x00\x00\x00\x00\x00\x00\x00\x01\x84\x10\x12factorial\x00\x10\r>\x01@\x9f:\x01<\xff",
}
# Populate other armv7m-derived archs based on armv7m.
-for arch in (0x1A05, 0x1E05, 0x2205):
- features0_file_contents[arch] = features0_file_contents[0x1605]
+for arch in (0x1A06, 0x1E06, 0x2206):
+ features0_file_contents[arch] = features0_file_contents[0x1606]
if sys.implementation.mpy not in features0_file_contents:
print("SKIP")
diff --git a/tests/micropython/import_mpy_native_x64.py b/tests/micropython/import_mpy_native_x64.py
index ff0142a9c..3a25df186 100644
--- a/tests/micropython/import_mpy_native_x64.py
+++ b/tests/micropython/import_mpy_native_x64.py
@@ -52,49 +52,62 @@ class UserFS:
# fmt: off
user_files = {
# bad architecture
- '/mod0.mpy': b'M\x05\xfe\x00\x10',
+ '/mod0.mpy': b'M\x06\xfe\x00\x10',
# test loading of viper and asm
'/mod1.mpy': (
- b'M\x05\x0a\x1f\x20' # header
+ b'M\x06\x0a\x1f' # header
- b'\x20' # n bytes, bytecode
- b'\x00\x08\x02m\x02m' # prelude
+ b'\x02' # n_qstr
+ b'\x00' # n_obj
+
+ b'\x0emod1.py\x00' # qstr0 = "mod1.py"
+ b'\x0aouter\x00' # qstr1 = "outer"
+
+ b'\x2c' # 5 bytes, have children, bytecode
+ b'\x00\x02' # prelude
+ b'\x01' # simple name (qstr index)
b'\x51' # LOAD_CONST_NONE
b'\x63' # RETURN_VALUE
- b'\x00\x02' # n_obj, n_raw_code
+ b'\x02' # 2 children
- b'\x22' # n bytes, viper code
- b'\x00\x00\x00\x00\x00\x00' # dummy machine code
- b'\x00\x00' # qstr0
- b'\x01\x0c\x0aprint' # n_qstr, qstr0
- b'\x00\x00\x00' # scope_flags, n_obj, n_raw_code
+ b'\x42' # 8 bytes, no children, viper code
+ b'\x00\x00\x00\x00\x00\x00' # dummy machine code
+ b'\x00\x00' # slot for qstr0
+ b'\x01\x0c\x0aprint\x00' # n_qstr=1, qstr0
+ b'\x00' # scope_flags
- b'\x23' # n bytes, asm code
- b'\x00\x00\x00\x00\x00\x00\x00\x00' # dummy machine code
- b'\x00\x00\x00' # scope_flags, n_pos_args, type_sig
+ b'\x43' # 8 bytes, no children, asm code
+ b'\x00\x00\x00\x00\x00\x00\x00\x00' # dummy machine code
+ b'\x00\x00\x00' # scope_flags, n_pos_args, type_sig
),
# test loading viper with additional scope flags and relocation
'/mod2.mpy': (
- b'M\x05\x0a\x1f\x20' # header
+ b'M\x06\x0a\x1f' # header
+
+ b'\x02' # n_qstr
+ b'\x00' # n_obj
+
+ b'\x0emod2.py\x00' # qstr0 = "mod2.py"
+ b'\x0aouter\x00' # qstr1 = "outer"
- b'\x20' # n bytes, bytecode
- b'\x00\x08\x02m\x02m' # prelude
+ b'\x2c' # 5 bytes, have children, bytecode
+ b'\x00\x02' # prelude
+ b'\x01' # simple name (qstr index)
b'\x51' # LOAD_CONST_NONE
b'\x63' # RETURN_VALUE
- b'\x00\x01' # n_obj, n_raw_code
+ b'\x01' # 1 child
- b'\x12' # n bytes(=4), viper code
- b'\x00\x00\x00\x00' # dummy machine code
- b'\x00' # n_qstr
- b'\x70' # scope_flags: VIPERBSS | VIPERRODATA | VIPERRELOC
- b'\x00\x00' # n_obj, n_raw_code
- b'\x06rodata' # rodata, 6 bytes
- b'\x04' # bss, 4 bytes
- b'\x03\x01\x00' # dummy relocation of rodata
+ b'\x22' # 4 bytes, no children, viper code
+ b'\x00\x00\x00\x00' # dummy machine code
+ b'\x00' # n_qstr=0
+ b'\x70' # scope_flags: VIPERBSS | VIPERRODATA | VIPERRELOC
+ b'\x06\x04' # rodata=6 bytes, bss=4 bytes
+ b'rodata' # rodata content
+ b'\x03\x01\x00' # dummy relocation of rodata
),
}
# fmt: on
diff --git a/tests/perf_bench/core_import_mpy_multi.py b/tests/perf_bench/core_import_mpy_multi.py
index 0da466206..74caf20a3 100644
--- a/tests/perf_bench/core_import_mpy_multi.py
+++ b/tests/perf_bench/core_import_mpy_multi.py
@@ -23,7 +23,7 @@ def f():
x = ("const tuple", None, False, True, 1, 2, 3)
result = 123
"""
-file_data = b'M\x05\x02\x1f \x81\x0c\x10\x12\x00\x07\x0etest.py\x8b\x07e`\x00T2\x00\x10\x02A4\x02\x16\x012\x01\x16\x02f"\x80{\x16\x0cresultQc\x00\x02\x81\x1c\x00\x10\x05\x07,EE\x00\x11\x00\x17\x16\x00\x16\x10\x03\x16\x00\x1a2\x00\x16\x00\x112\x01\x16\x00\xa42\x02\x16\x00}Qc\x00\x03<\x1a\x0c\x00\x11\x03@\x00\xb1\xb0\x18\x06argQc\x00\x00\x00\x89\x01,\t\x0e\x00\xa4\x03` \x00Qc\x00\x00\x00\x89,\t\x0e\x00}\x01``\x00Qc\x00\x00\x00\x89\x81l8\x16\t\x03\x80\x08/,##\x00\x12\x00{\x12\x00\x97\x12\x00B\x12\x00K*\x04Y\x12\x00$\x12\x007\x12\x006*\x03Y#\x00\xc0#\x01\xc0#\x02QPR\x81\x82\x83*\x07\xc0Qc\x03\x00s\x1cthis will be a string objectb\x1bthis will be a bytes objects\x0bconst tuple'
+file_data = b'M\x06\x02\x1f\x14\x03\x0etest.py\x00\x0f\x02A\x00\x02f\x00\x0cresult\x00/-5#\x82I\x81{\x81w\x82/\x81\x05\x81\x17Iom\x82\x13\x06arg\x00s\x1cthis will be a string object\x00b\x1bthis will be a bytes object\x00s\x0bconst tuple\x00\x81\\\x10\n\x01\x89\x07d`T2\x00\x10\x024\x02\x16\x022\x01\x16\x03"\x80{\x16\x04Qc\x02\x81d\x00\x08\x02(DD\x11\x05\x16\x06\x10\x02\x16\x072\x00\x16\x082\x01\x16\t2\x02\x16\nQc\x03`\x1a\x08\x08\x12\x13@\xb1\xb0\x18\x13Qc@\t\x08\t\x12` Qc@\t\x08\n\x12``Qc\x83\x008\x0e\x03\x80\x08+)##\x12\x0b\x12\x0c\x12\r\x12\x0e*\x04Y\x12\x0f\x12\x10\x12\x11*\x03Y#\x00\xc0#\x01\xc0#\x02QPR\x81\x82\x83*\x07\xc0Qc'
class File(uio.IOBase):
diff --git a/tests/perf_bench/core_import_mpy_single.py b/tests/perf_bench/core_import_mpy_single.py
index 5ca358495..1e8a4f531 100644
--- a/tests/perf_bench/core_import_mpy_single.py
+++ b/tests/perf_bench/core_import_mpy_single.py
@@ -78,7 +78,7 @@ def f1():
x = ("const tuple 9", None, False, True, 1, 2, 3)
result = 123
"""
-file_data = b'M\x05\x02\x1f \x81\\\x10\x1a\x00\x07\x0etest.pyk@k@\x85\x18\x85\x1f\x00T2\x00\x10\x04A04\x02\x16\x01T2\x01\x10\x04A14\x02\x16\x012\x02\x16\x04f02\x03\x16\x04f1"\x80{\x16\x0cresultQc\x00\x04\x814\x00\x12\t\x0b,%%%\x00\x11\x00\x17\x16\x00\x16\x10\x03\x16\x00\x1a2\x00\x16\x04a02\x01\x16\x04a12\x02\x16\x04a22\x03\x16\x04a3Qc\x00\x04(\t\x0c\x07\x0b \x00Qc\x00\x00\x00\x89(\t\x0c\t\x03@\x00Qc\x00\x00\x00\x89(\t\x0c\t\x03`\x00Qc\x00\x00\x00\x89,\t\x0e\t\x03` \x00Qc\x00\x00\x00\x89\x818\x00\x14\x13\x03l`%%%\x00\x11\x00\x17\x16\x00\x16\x10\x03\x16\x00\x1a2\x00\x16\x0b2\x01\x16\x0b2\x02\x16\x0b2\x03\x16\x0bQc\x00\x04,\t\x0e\x07\x0b``\x00Qc\x00\x00\x00\x89,\t\x0e\t\x03\x80\x07\x00Qc\x00\x00\x00\x89,\t\x0e\t\x03\x80\x08\x00Qc\x00\x00\x00\x89,\t\x0e\t\x03\x80\t\x00Qc\x00\x00\x00\x89\x94\x1cPP\x13\x03\x80\x0b8;555222\x1f%\x1f%\x1f"\x1f"\x1f%\x1f%\x1f"\x1f%\x1f"\x1f%)\x1f"//\x00\x12\x00\t\x12\x00\n\x12\x00\x0b\x12\x00\x0c\x12\x00\r\x12\x00\x0e\x12\x00\x0f*\x07Y\x12\x00\x10\x12\x00\x11\x12\x00\x12\x12\x00\x13\x12\x00\x14\x12\x00\x15\x12\x00\x16\x12\x00\x17*\x08Y\x12\x00\x18\x12\x00\x19\x12\x00\x1a\x12\x00\x1b\x12\x00\x1c\x12\x00\x1d*\x06Y\x12\x00\x1e\x12\x00\x1f\x12\x00 \x12\x00!\x12\x00"\x12\x00#*\x06Y\x12\x00$\x12\x00%\x12\x00&\x12\x00\'\x12\x00(\x12\x00)*\x06Y\x12\x00*\x12\x00+\x12\x00,\x12\x00-\x12\x00.*\x05Y\x12\x00/\x12\x000\x12\x001\x12\x002\x12\x003*\x05Y\x12\x004\x12\x005\x12\x006\x12\x007\x12\x008*\x05Y\x12\x009\x12\x00:\x12\x00;\x12\x00<\x12\x00=\x12\x00>\x12\x00?\x12\x00@\x12\x00A\x12\x00B\x12\x00C*\x0bY\x12\x00D\x12\x00E\x12\x00F\x12\x00G\x12\x00H\x12\x00I\x12\x00J\x12\x00K\x12\x00L\x12\x00M\x12\x00N*\x0bY\x12\x00O\x12\x00P\x12\x00Q\x12\x00R\x12\x00S\x12\x00T\x12\x00U\x12\x00V\x12\x00W\x12\x00X*\nY\x12\x00Y\x12\x00Z\x12\x00[\x12\x00\\\x12\x00]\x12\x00^\x12\x00_\x12\x00`\x12\x00a\x12\x00b*\nY\x12\x00c\x12\x00d\x12\x00e\x12\x00f\x12\x00g\x12\x00h\x12\x00i\x12\x00j\x12\x00k\x12\x00l\x12\x00m*\x0bY\x12\x00n\x12\x00o\x12\x00p\x12\x00q\x12\x00r\x12\x00s\x12\x00t\x12\x00u\x12\x00v\x12\x00w\x12\x00x*\x0bY\x12\x00y\x12\x00z\x12\x00{\x12\x00|\x12\x00}\x12\x00~\x12\x00\x7f\x12\x00\x80\x12\x00\x81\x12\x00\x82*\nY\x12\x00\x83\x12\x00\x84\x12\x00\x85\x12\x00\x86\x12\x00\x87\x12\x00\x88\x12\x00\x89\x12\x00\x8a\x12\x00\x8b\x12\x00\x8c\x12\x00\x8d*\x0bY\x12\x00\x8e\x12\x00\x8f\x12\x00\x90\x12\x00\x91\x12\x00\x92\x12\x00\x93\x12\x00\x94\x12\x00\x95\x12\x00\x96\x12\x00\x97*\nY\x12\x00\x98\x12\x00\x99\x12\x00\x9a\x12\x00\x9b\x12\x00\x9c\x12\x00\x9d\x12\x00\x9e\x12\x00\x9f\x12\x00\xa0\x12\x00\xa2\x12\x00\xa3*\x0bY\x12\x00\xa4\x12\x00\xa5*\x02Y\x12\nname0\x12\nname1\x12\nname2\x12\nname3\x12\nname4\x12\nname5\x12\nname6\x12\nname7\x12\nname8\x12\nname9*\nY\x12$quite_a_long_name0\x12$quite_a_long_name1\x12$quite_a_long_name2\x12$quite_a_long_name3*\x04Y\x12$quite_a_long_name4\x12$quite_a_long_name5\x12$quite_a_long_name6\x12$quite_a_long_name7*\x04Y\x12$quite_a_long_name8\x12$quite_a_long_name9\x12&quite_a_long_name10\x12&quite_a_long_name11*\x04YQc\x00\x00\x86H8H?/\x80#####################+++++++++\x00#\x00\xc0#\x01\xc0#\x02\xc0#\x03\xc0#\x04\xc0#\x05\xc0#\x06\xc0#\x07\xc0#\x08\xc0#\t\xc0#\n\xc0#\x0b\xc0#\x0c\xc0#\r\xc0#\x0e\xc0#\x0f\xc0#\x10\xc0#\x11\xc0#\x12\xc0#\x13\xc0#\x14QPR\x81\x82\x83*\x07\xc0#\x15QPR\x81\x82\x83*\x07\xc0#\x16QPR\x81\x82\x83*\x07\xc0#\x17QPR\x81\x82\x83*\x07\xc0#\x18QPR\x81\x82\x83*\x07\xc0#\x19QPR\x81\x82\x83*\x07\xc0#\x1aQPR\x81\x82\x83*\x07\xc0#\x1bQPR\x81\x82\x83*\x07\xc0#\x1cQPR\x81\x82\x83*\x07\xc0#\x1dQPR\x81\x82\x83*\x07\xc0Qc\x1e\x00s\x1ethis will be a string object 0s\x1ethis will be a string object 1s\x1ethis will be a string object 2s\x1ethis will be a string object 3s\x1ethis will be a string object 4s\x1ethis will be a string object 5s\x1ethis will be a string object 6s\x1ethis will be a string object 7s\x1ethis will be a string object 8s\x1ethis will be a string object 9b\x1dthis will be a bytes object 0b\x1dthis will be a bytes object 1b\x1dthis will be a bytes object 2b\x1dthis will be a bytes object 3b\x1dthis will be a bytes object 4b\x1dthis will be a bytes object 5b\x1dthis will be a bytes object 6b\x1dthis will be a bytes object 7b\x1dthis will be a bytes object 8b\x1dthis will be a bytes object 9s\rconst tuple 0s\rconst tuple 1s\rconst tuple 2s\rconst tuple 3s\rconst tuple 4s\rconst tuple 5s\rconst tuple 6s\rconst tuple 7s\rconst tuple 8s\rconst tuple 9'
+file_data = b"M\x06\x02\x1f\x81=\x1e\x0etest.py\x00\x0f\x04A0\x00\x04A1\x00\x04f0\x00\x04f1\x00\x0cresult\x00/-5\x04a0\x00\x04a1\x00\x04a2\x00\x04a3\x00\x13\x15\x17\x19\x1b\x1d\x1f!#%')+1379;=?ACEGIKMOQSUWY[]_acegikmoqsuwy{}\x7f\x81\x01\x81\x03\x81\x05\x81\x07\x81\t\x81\x0b\x81\r\x81\x0f\x81\x11\x81\x13\x81\x15\x81\x17\x81\x19\x81\x1b\x81\x1d\x81\x1f\x81!\x81#\x81%\x81'\x81)\x81+\x81-\x81/\x811\x813\x815\x817\x819\x81;\x81=\x81?\x81A\x81C\x81E\x81G\x81I\x81K\x81M\x81O\x81Q\x81S\x81U\x81W\x81Y\x81[\x81]\x81_\x81a\x81c\x81e\x81g\x81i\x81k\x81m\x81o\x81q\x81s\x81u\x81w\x81y\x81{\x81}\x81\x7f\x82\x01\x82\x03\x82\x05\x82\x07\x82\t\x82\x0b\x82\r\x82\x0f\x82\x11\x82\x13\x82\x15\x82\x17\x82\x19\x82\x1b\x82\x1d\x82\x1f\x82!\x82#\x82%\x82'\x82)\x82+\x82-\x82/\x821\x823\x825\x827\x829\x82;\x82=\x82?\x82A\x82E\x82G\x82I\x82K\nname0\x00\nname1\x00\nname2\x00\nname3\x00\nname4\x00\nname5\x00\nname6\x00\nname7\x00\nname8\x00\nname9\x00$quite_a_long_name0\x00$quite_a_long_name1\x00$quite_a_long_name2\x00$quite_a_long_name3\x00$quite_a_long_name4\x00$quite_a_long_name5\x00$quite_a_long_name6\x00$quite_a_long_name7\x00$quite_a_long_name8\x00$quite_a_long_name9\x00&quite_a_long_name10\x00&quite_a_long_name11\x00s\x1ethis will be a string object 0\x00s\x1ethis will be a string object 1\x00s\x1ethis will be a string object 2\x00s\x1ethis will be a string object 3\x00s\x1ethis will be a string object 4\x00s\x1ethis will be a string object 5\x00s\x1ethis will be a string object 6\x00s\x1ethis will be a string object 7\x00s\x1ethis will be a string object 8\x00s\x1ethis will be a string object 9\x00b\x1dthis will be a bytes object 0\x00b\x1dthis will be a bytes object 1\x00b\x1dthis will be a bytes object 2\x00b\x1dthis will be a bytes object 3\x00b\x1dthis will be a bytes object 4\x00b\x1dthis will be a bytes object 5\x00b\x1dthis will be a bytes object 6\x00b\x1dthis will be a bytes object 7\x00b\x1dthis will be a bytes object 8\x00b\x1dthis will be a bytes object 9\x00s\rconst tuple 0\x00s\rconst tuple 1\x00s\rconst tuple 2\x00s\rconst tuple 3\x00s\rconst tuple 4\x00s\rconst tuple 5\x00s\rconst tuple 6\x00s\rconst tuple 7\x00s\rconst tuple 8\x00s\rconst tuple 9\x00\x82d\x10\x12\x01i@i@\x84\x18\x84\x1fT2\x00\x10\x024\x02\x16\x02T2\x01\x10\x034\x02\x16\x032\x02\x16\x042\x03\x16\x05\"\x80{\x16\x06Qc\x04\x82\x0c\x00\n\x02($$$\x11\x07\x16\x08\x10\x02\x16\t2\x00\x16\n2\x01\x16\x0b2\x02\x16\x0c2\x03\x16\rQc\x04@\t\x08\n\x81\x0b Qc@\t\x08\x0b\x81\x0b@Qc@\t\x08\x0c\x81\x0b`QcH\t\n\r\x81\x0b` Qc\x82\x14\x00\x0c\x03h`$$$\x11\x07\x16\x08\x10\x03\x16\t2\x00\x16\n2\x01\x16\x0b2\x02\x16\x0c2\x03\x16\rQc\x04H\t\n\n\x81\x0b``QcH\t\n\x0b\x81\x0b\x80\x07QcH\t\n\x0c\x81\x0b\x80\x08QcH\t\n\r\x81\x0b\x80\tQc\xa08P:\x04\x80\x0b13///---997799<\x1f%\x1f\"\x1f%)\x1f\"//\x12\x0e\x12\x0f\x12\x10\x12\x11\x12\x12\x12\x13\x12\x14*\x07Y\x12\x15\x12\x16\x12\x17\x12\x18\x12\x19\x12\x1a\x12\x08\x12\x07*\x08Y\x12\x1b\x12\x1c\x12\t\x12\x1d\x12\x1e\x12\x1f*\x06Y\x12 \x12!\x12\"\x12#\x12$\x12%*\x06Y\x12&\x12'\x12(\x12)\x12*\x12+*\x06Y\x12,\x12-\x12.\x12/\x120*\x05Y\x121\x122\x123\x124\x125*\x05Y\x126\x127\x128\x129\x12:*\x05Y\x12;\x12<\x12=\x12>\x12?\x12@\x12A\x12B\x12C\x12D\x12E*\x0bY\x12F\x12G\x12H\x12I\x12J\x12K\x12L\x12M\x12N\x12O\x12P*\x0bY\x12Q\x12R\x12S\x12T\x12U\x12V\x12W\x12X\x12Y\x12Z*\nY\x12[\x12\\\x12]\x12^\x12_\x12`\x12a\x12b\x12c\x12d*\nY\x12e\x12f\x12g\x12h\x12i\x12j\x12k\x12l\x12m\x12n\x12o*\x0bY\x12p\x12q\x12r\x12s\x12t\x12u\x12v\x12w\x12x\x12y\x12z*\x0bY\x12{\x12|\x12}\x12~\x12\x7f\x12\x81\x00\x12\x81\x01\x12\x81\x02\x12\x81\x03\x12\x81\x04*\nY\x12\x81\x05\x12\x81\x06\x12\x81\x07\x12\x81\x08\x12\x81\t\x12\x81\n\x12\x81\x0b\x12\x81\x0c\x12\x81\r\x12\x81\x0e\x12\x81\x0f*\x0bY\x12\x81\x10\x12\x81\x11\x12\x81\x12\x12\x81\x13\x12\x81\x14\x12\x81\x15\x12\x81\x16\x12\x81\x17\x12\x81\x18\x12\x81\x19*\nY\x12\x81\x1a\x12\x81\x1b\x12\x81\x1c\x12\x81\x1d\x12\x81\x1e\x12\x81\x1f\x12\x81 \x12\x81!\x12\x81\"\x12\x81#\x12\x81$*\x0bY\x12\x81%\x12\x81&*\x02Y\x12\x81'\x12\x81(\x12\x81)\x12\x81*\x12\x81+\x12\x81,\x12\x81-\x12\x81.\x12\x81/\x12\x810*\nY\x12\x811\x12\x812\x12\x813\x12\x814*\x04Y\x12\x815\x12\x816\x12\x817\x12\x818*\x04Y\x12\x819\x12\x81:\x12\x81;\x12\x81<*\x04YQc\x8cp8@\x05\x80#####################+++++++++#\x00\xc0#\x01\xc0#\x02\xc0#\x03\xc0#\x04\xc0#\x05\xc0#\x06\xc0#\x07\xc0#\x08\xc0#\t\xc0#\n\xc0#\x0b\xc0#\x0c\xc0#\r\xc0#\x0e\xc0#\x0f\xc0#\x10\xc0#\x11\xc0#\x12\xc0#\x13\xc0#\x14QPR\x81\x82\x83*\x07\xc0#\x15QPR\x81\x82\x83*\x07\xc0#\x16QPR\x81\x82\x83*\x07\xc0#\x17QPR\x81\x82\x83*\x07\xc0#\x18QPR\x81\x82\x83*\x07\xc0#\x19QPR\x81\x82\x83*\x07\xc0#\x1aQPR\x81\x82\x83*\x07\xc0#\x1bQPR\x81\x82\x83*\x07\xc0#\x1cQPR\x81\x82\x83*\x07\xc0#\x1dQPR\x81\x82\x83*\x07\xc0Qc"
class File(uio.IOBase):