[Python-Dev] Unexpected bytecode difference (original) (raw)
Victor Stinner victor.stinner at gmail.com
Fri Jan 19 18:54:30 EST 2018
- Previous message (by thread): [Python-Dev] Unexpected bytecode difference
- Next message (by thread): [Python-Dev] Unexpected bytecode difference
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Python bytecode format changed deeply in Python 3.6. It now uses regular units of 2 bytes, instead of 1 or 3 bytes depending if the instruction has an argument.
See for example https://bugs.python.org/issue26647 "wordcode".
But CALL_FUNCTION bytecode also evolved.
Victor
2018-01-20 0:46 GMT+01:00 Alexander Belopolsky <alexander.belopolsky at gmail.com>:
I have encountered the following difference between Python 3 and 2:
(py3)
compile('xxx', '<>', 'eval').cocode b'e\x00S\x00' (py2) compile('xxx', '<>', 'eval').cocode 'e\x00\x00S' Note that 'S' (the code for RETURNVALUE) and a zero byte are swapped in Python 2 compared to Python 3. Is this change documented somewhere?
Python-Dev mailing list Python-Dev at python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/victor.stinner%40gmail.com
- Previous message (by thread): [Python-Dev] Unexpected bytecode difference
- Next message (by thread): [Python-Dev] Unexpected bytecode difference
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]