[issue45362] dis does not work with the new optimized ops
Ken Jin
report at bugs.python.org
Mon Oct 4 10:36:21 EDT 2021
Ken Jin <kenjin4096 at gmail.com> added the comment:
> Will this change be reflected in co_code?
No. As per PEP 659:
"Once any instruction in a code object has executed a few times, that code object will be "quickened" by allocating a new array for the bytecode that can be modified at runtime, and is not constrained as the code.co_code object is."
Example:
x = lambda a: len(a)
print(x.__code__.co_code)
#quickened
for _ in range(10):
x('')
print(x.__code__.co_code)
There should be no change.
> If not, how would it deal with co_code being modified?
Disclaimer: I am not a contributor to such libraries, so my knowledge in this area is limited.
co_code is readonly and the bytes object it points is also immutable. So I'd imagine that they'd have to create a brand new code object, in which case it shouldn't matter. But if there is some way to modify co_code in-place using ctypes: I don't know. Sorry! The best way to find out is to test those libraries with 3.11 and see if such functionality breaks, then file a bug report here please. Thank you.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue45362>
_______________________________________
More information about the Python-bugs-list
mailing list