diff options
| author | Damien George | 2019-08-22 12:39:07 +1000 |
|---|---|---|
| committer | Damien George | 2019-09-26 15:39:50 +1000 |
| commit | 02db91a7a311a96dd82a497cf513137e04191b29 (patch) | |
| tree | 781991a3b87530077bef6199aea8ff0ede034643 /tests/cmdline | |
| parent | 870e900d02937918187a4e4ef75a1e38880bae62 (diff) | |
py: Split RAISE_VARARGS opcode into 3 separate ones.
From the beginning of this project the RAISE_VARARGS opcode was named and
implemented following CPython, where it has an argument (to the opcode)
counting how many args the raise takes:
raise # 0 args (re-raise previous exception)
raise exc # 1 arg
raise exc from exc2 # 2 args (chained raise)
In the bytecode this operation therefore takes 2 bytes, one for
RAISE_VARARGS and one for the number of args.
This patch splits this opcode into 3, where each is now a single byte.
This reduces bytecode size by 1 byte for each use of raise. Every byte
counts! It also has the benefit of reducing code size (on all ports except
nanbox).
Diffstat (limited to 'tests/cmdline')
| -rw-r--r-- | tests/cmdline/cmd_showbc.py.exp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/tests/cmdline/cmd_showbc.py.exp b/tests/cmdline/cmd_showbc.py.exp index f1ce02b67..839034a69 100644 --- a/tests/cmdline/cmd_showbc.py.exp +++ b/tests/cmdline/cmd_showbc.py.exp @@ -305,9 +305,9 @@ Raw bytecode (code_info_size=\\d\+, bytecode_size=\\d\+): \\d\+ BUILD_TUPLE 1 \\d\+ IMPORT_NAME 'a' \\d\+ IMPORT_STAR -\\d\+ RAISE_VARARGS 0 +\\d\+ RAISE_LAST \\d\+ LOAD_CONST_SMALL_INT 1 -\\d\+ RAISE_VARARGS 1 +\\d\+ RAISE_OBJ \\d\+ LOAD_CONST_NONE \\d\+ RETURN_VALUE \\d\+ LOAD_CONST_SMALL_INT 1 |
