summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/cmdline/cmd_showbc.py8
-rw-r--r--tests/cmdline/cmd_showbc.py.exp126
-rw-r--r--tests/cmdline/cmd_showbc_opt.py33
-rw-r--r--tests/cmdline/cmd_showbc_opt.py.exp122
4 files changed, 224 insertions, 65 deletions
diff --git a/tests/cmdline/cmd_showbc.py b/tests/cmdline/cmd_showbc.py
index e5874f990..4a2e6500a 100644
--- a/tests/cmdline/cmd_showbc.py
+++ b/tests/cmdline/cmd_showbc.py
@@ -119,12 +119,12 @@ def f():
#from sys import * # tested at module scope
# raise
- raise
- raise 1
+ if a: raise
+ if a: raise 1
# return
- return
- return 1
+ if a: return
+ if a: return 1
# function with lots of locals
def f():
diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp
index 2eeb8eadd..db06de923 100644
--- a/tests/cmdline/cmd_showbc.py.exp
+++ b/tests/cmdline/cmd_showbc.py.exp
@@ -47,8 +47,8 @@ arg names:
42 IMPORT_STAR
43 LOAD_CONST_NONE
44 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 45\[46\] bytes)
-Raw bytecode (code_info_size=8\[46\], bytecode_size=372):
+File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 46\[68\] bytes)
+Raw bytecode (code_info_size=8\[46\], bytecode_size=382):
a8 12 9\[bf\] 03 05 60 60 26 22 24 64 22 24 25 25 24
26 23 63 22 22 25 23 23 2f 6c 25 65 25 25 69 68
26 65 27 6a 62 20 23 62 2a 29 69 24 25 28 67 26
@@ -126,19 +126,18 @@ arg names:
bc=313 line=100
bc=315 line=101
########
- bc=321 line=103
- bc=327 line=106
- bc=331 line=107
- bc=337 line=110
- bc=340 line=111
- bc=346 line=114
- bc=346 line=117
- bc=351 line=118
- bc=363 line=121
- bc=363 line=122
- bc=364 line=123
- bc=366 line=126
- bc=368 line=127
+ bc=325 line=106
+ bc=329 line=107
+ bc=335 line=110
+ bc=338 line=111
+ bc=344 line=114
+ bc=344 line=117
+ bc=349 line=118
+ bc=361 line=121
+ bc=361 line=122
+ bc=365 line=123
+ bc=370 line=126
+ bc=375 line=127
00 LOAD_CONST_NONE
01 LOAD_CONST_FALSE
02 BINARY_OP 27 __add__
@@ -363,48 +362,55 @@ arg names:
308 LOAD_FAST 1
309 POP_TOP
310 END_FINALLY
-311 JUMP 324
-313 SETUP_EXCEPT 320
-315 UNWIND_JUMP 327 1
-318 POP_EXCEPT_JUMP 324
-320 POP_TOP
-321 POP_EXCEPT_JUMP 324
-323 END_FINALLY
-324 LOAD_FAST 0
-325 POP_JUMP_IF_TRUE 313
-327 LOAD_FAST 0
-328 SETUP_WITH 335
-330 POP_TOP
-331 LOAD_DEREF 14
-333 POP_TOP
-334 LOAD_CONST_NONE
-335 WITH_CLEANUP
-336 END_FINALLY
-337 LOAD_CONST_SMALL_INT 1
-338 STORE_DEREF 16
-340 LOAD_FAST_N 16
-342 MAKE_CLOSURE \.\+ 1
-345 STORE_FAST 13
-346 LOAD_CONST_SMALL_INT 0
-347 LOAD_CONST_NONE
-348 IMPORT_NAME 'a'
-350 STORE_FAST 0
-351 LOAD_CONST_SMALL_INT 0
-352 LOAD_CONST_STRING 'b'
-354 BUILD_TUPLE 1
-356 IMPORT_NAME 'a'
-358 IMPORT_FROM 'b'
-360 STORE_DEREF 14
-362 POP_TOP
-363 RAISE_LAST
-364 LOAD_CONST_SMALL_INT 1
-365 RAISE_OBJ
-366 LOAD_CONST_NONE
-367 RETURN_VALUE
+311 JUMP 322
+313 SETUP_EXCEPT 318
+315 UNWIND_JUMP 325 1
+318 POP_TOP
+319 POP_EXCEPT_JUMP 322
+321 END_FINALLY
+322 LOAD_FAST 0
+323 POP_JUMP_IF_TRUE 313
+325 LOAD_FAST 0
+326 SETUP_WITH 333
+328 POP_TOP
+329 LOAD_DEREF 14
+331 POP_TOP
+332 LOAD_CONST_NONE
+333 WITH_CLEANUP
+334 END_FINALLY
+335 LOAD_CONST_SMALL_INT 1
+336 STORE_DEREF 16
+338 LOAD_FAST_N 16
+340 MAKE_CLOSURE \.\+ 1
+343 STORE_FAST 13
+344 LOAD_CONST_SMALL_INT 0
+345 LOAD_CONST_NONE
+346 IMPORT_NAME 'a'
+348 STORE_FAST 0
+349 LOAD_CONST_SMALL_INT 0
+350 LOAD_CONST_STRING 'b'
+352 BUILD_TUPLE 1
+354 IMPORT_NAME 'a'
+356 IMPORT_FROM 'b'
+358 STORE_DEREF 14
+360 POP_TOP
+361 LOAD_FAST 0
+362 POP_JUMP_IF_FALSE 365
+364 RAISE_LAST
+365 LOAD_FAST 0
+366 POP_JUMP_IF_FALSE 370
368 LOAD_CONST_SMALL_INT 1
-369 RETURN_VALUE
-370 LOAD_CONST_NONE
-371 RETURN_VALUE
+369 RAISE_OBJ
+370 LOAD_FAST 0
+371 POP_JUMP_IF_FALSE 375
+373 LOAD_CONST_NONE
+374 RETURN_VALUE
+375 LOAD_FAST 0
+376 POP_JUMP_IF_FALSE 380
+378 LOAD_CONST_SMALL_INT 1
+379 RETURN_VALUE
+380 LOAD_CONST_NONE
+381 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 05 80 82 34 38 81 57 c0 57 c1 57 c2 57
@@ -623,9 +629,9 @@ arg names: *
08 DELETE_DEREF 0
10 LOAD_CONST_NONE
11 RETURN_VALUE
-File cmdline/cmd_showbc.py, code block 'f' (descriptor: \.\+, bytecode @\.\+ 15 bytes)
-Raw bytecode (code_info_size=8, bytecode_size=7):
- 9a 01 0a 05 03 08 80 8b b1 25 00 f2 63 51 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 05 03 08 80 8b b1 25 00 f2 63
arg names: * b
(N_STATE 4)
(N_EXC_STACK 0)
@@ -635,8 +641,6 @@ arg names: * b
01 LOAD_DEREF 0
03 BINARY_OP 27 __add__
04 RETURN_VALUE
-05 LOAD_CONST_NONE
-06 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_opt.py b/tests/cmdline/cmd_showbc_opt.py
new file mode 100644
index 000000000..02785860d
--- /dev/null
+++ b/tests/cmdline/cmd_showbc_opt.py
@@ -0,0 +1,33 @@
+# cmdline: -v -v
+# test printing of bytecode when it's optimised away
+
+
+def f0():
+ return 0
+ print(1)
+
+
+def f1(x):
+ if x:
+ return
+ print(1)
+ print(2)
+
+
+def f2(x):
+ raise Exception
+ print(1)
+
+
+def f3(x):
+ while x:
+ break
+ print(1)
+ print(2)
+
+
+def f4(x):
+ while x:
+ continue
+ print(1)
+ print(2)
diff --git a/tests/cmdline/cmd_showbc_opt.py.exp b/tests/cmdline/cmd_showbc_opt.py.exp
new file mode 100644
index 000000000..9e4e4fae1
--- /dev/null
+++ b/tests/cmdline/cmd_showbc_opt.py.exp
@@ -0,0 +1,122 @@
+File cmdline/cmd_showbc_opt.py, code block '<module>' (descriptor: \.\+, bytecode @\.\+ 35 bytes)
+Raw bytecode (code_info_size=13, bytecode_size=22):
+ 00 16 01 60 20 64 40 84 07 64 40 84 07 32 00 16
+ 02 32 01 16 03 32 02 16 04 32 03 16 05 32 04 16
+ 06 51 63
+arg names:
+(N_STATE 1)
+(N_EXC_STACK 0)
+ bc=0 line=1
+ bc=0 line=4
+ bc=0 line=5
+ bc=4 line=8
+ bc=4 line=10
+ bc=8 line=17
+ bc=12 line=20
+ bc=12 line=22
+ bc=16 line=29
+00 MAKE_FUNCTION \.\+
+02 STORE_NAME f0
+04 MAKE_FUNCTION \.\+
+06 STORE_NAME f1
+08 MAKE_FUNCTION \.\+
+10 STORE_NAME f2
+12 MAKE_FUNCTION \.\+
+14 STORE_NAME f3
+16 MAKE_FUNCTION \.\+
+18 STORE_NAME f4
+20 LOAD_CONST_NONE
+21 RETURN_VALUE
+File cmdline/cmd_showbc_opt.py, code block 'f0' (descriptor: \.\+, bytecode @\.\+ 8 bytes)
+Raw bytecode (code_info_size=6, bytecode_size=2):
+ 08 08 02 60 40 22 80 63
+arg names:
+(N_STATE 2)
+(N_EXC_STACK 0)
+ bc=0 line=1
+ bc=0 line=4
+ bc=0 line=6
+ bc=2 line=7
+00 LOAD_CONST_SMALL_INT 0
+01 RETURN_VALUE
+File cmdline/cmd_showbc_opt.py, code block 'f1' (descriptor: \.\+, bytecode @\.\+ 22 bytes)
+Raw bytecode (code_info_size=9, bytecode_size=13):
+ 11 0e 03 08 80 0a 23 22 20 b0 44 42 51 63 12 07
+ 82 34 01 59 51 63
+arg names: x
+(N_STATE 3)
+(N_EXC_STACK 0)
+ bc=0 line=1
+ bc=0 line=11
+ bc=3 line=12
+ bc=5 line=13
+ bc=5 line=14
+00 LOAD_FAST 0
+01 POP_JUMP_IF_FALSE 5
+03 LOAD_CONST_NONE
+04 RETURN_VALUE
+05 LOAD_GLOBAL print
+07 LOAD_CONST_SMALL_INT 2
+08 CALL_FUNCTION n=1 nkw=0
+10 POP_TOP
+11 LOAD_CONST_NONE
+12 RETURN_VALUE
+File cmdline/cmd_showbc_opt.py, code block 'f2' (descriptor: \.\+, bytecode @\.\+ 10 bytes)
+Raw bytecode (code_info_size=7, bytecode_size=3):
+ 11 0a 04 08 80 11 23 12 09 65
+arg names: x
+(N_STATE 3)
+(N_EXC_STACK 0)
+ bc=0 line=1
+ bc=0 line=18
+ bc=3 line=19
+00 LOAD_GLOBAL Exception
+02 RAISE_OBJ
+File cmdline/cmd_showbc_opt.py, code block 'f3' (descriptor: \.\+, bytecode @\.\+ 24 bytes)
+Raw bytecode (code_info_size=9, bytecode_size=15):
+ 11 0e 05 08 80 16 22 22 23 42 42 42 43 b0 43 3b
+ 12 07 82 34 01 59 51 63
+arg names: x
+(N_STATE 3)
+(N_EXC_STACK 0)
+ bc=0 line=1
+ bc=0 line=23
+ bc=2 line=24
+ bc=4 line=25
+ bc=7 line=26
+00 JUMP 4
+02 JUMP 7
+04 LOAD_FAST 0
+05 POP_JUMP_IF_TRUE 2
+07 LOAD_GLOBAL print
+09 LOAD_CONST_SMALL_INT 2
+10 CALL_FUNCTION n=1 nkw=0
+12 POP_TOP
+13 LOAD_CONST_NONE
+14 RETURN_VALUE
+File cmdline/cmd_showbc_opt.py, code block 'f4' (descriptor: \.\+, bytecode @\.\+ 24 bytes)
+Raw bytecode (code_info_size=9, bytecode_size=15):
+ 11 0e 06 08 80 1d 22 22 23 42 42 42 40 b0 43 3b
+ 12 07 82 34 01 59 51 63
+arg names: x
+(N_STATE 3)
+(N_EXC_STACK 0)
+ bc=0 line=1
+ bc=0 line=30
+ bc=2 line=31
+ bc=4 line=32
+ bc=7 line=33
+00 JUMP 4
+02 JUMP 4
+04 LOAD_FAST 0
+05 POP_JUMP_IF_TRUE 2
+07 LOAD_GLOBAL print
+09 LOAD_CONST_SMALL_INT 2
+10 CALL_FUNCTION n=1 nkw=0
+12 POP_TOP
+13 LOAD_CONST_NONE
+14 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\+