This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2016年05月23日 21:26 by Demur Rumed, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| mkfu.patch | Demur Rumed, 2016年05月23日 21:26 | review | ||
| mkfu2.patch | Demur Rumed, 2016年05月23日 23:18 | review | ||
| mkfu3.patch | Demur Rumed, 2016年05月24日 12:27 | wordcode | review | |
| mkfu4.patch | Demur Rumed, 2016年06月12日 00:47 | review | ||
| mkfu5.patch | Demur Rumed, 2016年06月12日 13:13 | |||
| mkfu5.patch | serhiy.storchaka, 2016年06月12日 13:28 | review | ||
| Messages (13) | |||
|---|---|---|---|
| msg266187 - (view) | Author: Philip Dubé (Demur Rumed) * | Date: 2016年05月23日 21:26 | |
Implemented as per https://mail.python.org/pipermail/python-dev/2016-April/144135.html |
|||
| msg266205 - (view) | Author: Philip Dubé (Demur Rumed) * | Date: 2016年05月23日 23:18 | |
Attached are modifications to the patch based on feedback from Nikita. It produces a larger patch tho. The changes are to combine return branches in compiler_make_closure & to combine code between compiler_function & compiler_lambda into compiler_default_arguments |
|||
| msg266230 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年05月24日 05:51 | |
At first look your patch looks good (I'll make more detailed review later), but you should wait until we have finished all work related to the conversion to wordcode. |
|||
| msg266245 - (view) | Author: Philip Dubé (Demur Rumed) * | Date: 2016年05月24日 12:27 | |
May've been best to wait on posting a patch, but long weekend yesterday made time available mkfu3 updates mkfu2 with wordcode. Includes fix to EXTENDED_ARG documentation |
|||
| msg266512 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年05月27日 20:44 | |
In general the patch LGTM, besides few minor comments.
But new implementation uses longer bytecode for annotations. Current code packs argument names in one constant tuple:
$ ./python -m dis
def f(x: int, y: str, z: float): pass
1 0 LOAD_NAME 0 (int)
2 LOAD_NAME 1 (str)
4 LOAD_NAME 2 (float)
6 LOAD_CONST 0 (('x', 'y', 'z'))
8 LOAD_CONST 1 (<code object f at 0xb6fc1640, file "<stdin>", line 1>)
10 LOAD_CONST 2 ('f')
12 EXTENDED_ARG 4
14 EXTENDED_ARG 1024
16 MAKE_FUNCTION 262144
18 STORE_NAME 3 (f)
20 LOAD_CONST 3 (None)
22 RETURN_VALUE
New code uses LOAD_CONST for every name:
$ ./python -m dis
def f(x: int, y: str, z: float): pass
1 0 LOAD_CONST 0 ('x')
2 LOAD_NAME 0 (int)
4 LOAD_CONST 1 ('y')
6 LOAD_NAME 1 (str)
8 LOAD_CONST 2 ('z')
10 LOAD_NAME 2 (float)
12 BUILD_MAP 3
14 LOAD_CONST 3 (<code object f at 0xb7035a20, file "<stdin>", line 1>)
16 LOAD_CONST 4 ('f')
18 MAKE_FUNCTION 4
20 STORE_NAME 3 (f)
22 LOAD_CONST 5 (None)
24 RETURN_VALUE
With new opcode that creates a dict from values and a tuple of keys (issue27140) new code would be only one instruction longer.
|
|||
| msg268283 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年06月11日 21:46 | |
Now with adding BUILD_CONST_KEY_MAP I think MAKE_FUNCTION can be more compact. |
|||
| msg268303 - (view) | Author: Philip Dubé (Demur Rumed) * | Date: 2016年06月12日 00:47 | |
mkfu4 implements #27140. It doesn't special case 1-tuples into `BUILD_MAP 1` It may be easier to have `BUILD_CONST_KEY_MAP 1` peepholed if it's really preferable to strength reduce I'm also noticing that it could've been suggested to go to the extreme with BUILD_CONST_KEY_MAP where instead of relying on peepholer to constant fold tuple, we implement constant folding const keys entirely there. Just a random thought, not a suggestion or anything else |
|||
| msg268324 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年06月12日 04:56 | |
Added more comments on Rietveld. |
|||
| msg268373 - (view) | Author: Philip Dubé (Demur Rumed) * | Date: 2016年06月12日 13:13 | |
Kind of amusing how visit_argannoation logic went full circle. Makes sense considering pre-mkfu patch the ABI was quite similar on that front |
|||
| msg268375 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年06月12日 13:18 | |
Yes, this is why I wanted first push the patch with BUILD_CONST_KEY_MAP. |
|||
| msg268377 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年06月12日 13:28 | |
Regenerated for review. |
|||
| msg268388 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2016年06月12日 14:37 | |
New changeset 8a0fe3481c91 by Serhiy Storchaka in branch 'default': Issue #27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes. https://hg.python.org/cpython/rev/8a0fe3481c91 |
|||
| msg268389 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2016年06月12日 15:13 | |
Pushed with minor changes. Thank you for your contribution Demur! You change to the documentation of EXTENDED_ARG isn't pushed. I would prefer to see it as a part of larger documentation patch in issue26647. After pushing I found a bug (similar bug was existing) in compile.c. I'll open separate issue for this. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:31 | admin | set | github: 71282 |
| 2016年06月12日 15:13:20 | serhiy.storchaka | set | status: open -> closed messages: + msg268389 assignee: serhiy.storchaka dependencies: - ceval: use Wordcode, 16-bit bytecode resolution: fixed stage: patch review -> resolved |
| 2016年06月12日 14:37:18 | python-dev | set | nosy:
+ python-dev messages: + msg268388 |
| 2016年06月12日 13:28:50 | serhiy.storchaka | set | files:
+ mkfu5.patch messages: + msg268377 |
| 2016年06月12日 13:18:01 | serhiy.storchaka | set | messages: + msg268375 |
| 2016年06月12日 13:13:34 | Demur Rumed | set | files:
+ mkfu5.patch messages: + msg268373 |
| 2016年06月12日 04:56:34 | serhiy.storchaka | set | messages: + msg268324 |
| 2016年06月12日 00:47:45 | Demur Rumed | set | files:
+ mkfu4.patch messages: + msg268303 |
| 2016年06月11日 21:46:34 | serhiy.storchaka | set | messages: + msg268283 |
| 2016年06月04日 21:06:05 | serhiy.storchaka | set | nosy:
+ Mark.Shannon |
| 2016年05月27日 20:44:22 | serhiy.storchaka | set | messages:
+ msg266512 stage: patch review |
| 2016年05月24日 12:27:25 | Demur Rumed | set | files:
+ mkfu3.patch messages: + msg266245 |
| 2016年05月24日 05:51:59 | serhiy.storchaka | set | messages: + msg266230 |
| 2016年05月23日 23:18:49 | Demur Rumed | set | files:
+ mkfu2.patch messages: + msg266205 |
| 2016年05月23日 21:42:47 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka dependencies: + ceval: use Wordcode, 16-bit bytecode components: + Interpreter Core |
| 2016年05月23日 21:26:28 | Demur Rumed | set | versions: + Python 3.6 |
| 2016年05月23日 21:26:20 | Demur Rumed | create | |