mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
bpo-46841: Quicken code in-place (GH-31888)
* Moves the bytecode to the end of the corresponding PyCodeObject, and quickens it in-place. * Removes the almost-always-unused co_varnames, co_freevars, and co_cellvars member caches * _PyOpcode_Deopt is a new mapping from all opcodes to their un-quickened forms. * _PyOpcode_InlineCacheEntries is renamed to _PyOpcode_Caches * _Py_IncrementCountAndMaybeQuicken is renamed to _PyCode_Warmup * _Py_Quicken is renamed to _PyCode_Quicken * _co_quickened is renamed to _co_code_adaptive (and is now a read-only memoryview). * Do not emit unused nonzero opargs anymore in the compiler.
This commit is contained in:
parent
08eb754d84
commit
2bde6827ea
18 changed files with 832 additions and 688 deletions
|
@ -641,7 +641,7 @@ if 1:
|
|||
self.check_constant(f1, frozenset({0}))
|
||||
self.assertTrue(f1(0))
|
||||
|
||||
# Merging equal co_linetable and co_code is not a strict requirement
|
||||
# Merging equal co_linetable is not a strict requirement
|
||||
# for the Python semantics, it's a more an implementation detail.
|
||||
@support.cpython_only
|
||||
def test_merge_code_attrs(self):
|
||||
|
@ -650,7 +650,6 @@ if 1:
|
|||
f2 = lambda a: a.b.c
|
||||
|
||||
self.assertIs(f1.__code__.co_linetable, f2.__code__.co_linetable)
|
||||
self.assertIs(f1.__code__.co_code, f2.__code__.co_code)
|
||||
|
||||
# Stripping unused constants is not a strict requirement for the
|
||||
# Python semantics, it's a more an implementation detail.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue