H
Hartmut Goebel
Hi,
I'm facing a curious problem: 2.6, 2.6.1 and 2.6.4 are generating
different byte-code for the same source. I can not find the reason for.
As you may know, I'm providing the 'decompyle' service as
www.crazy-comnpilers.com. This service includes verification of the
source against the original byte code. So I need to solve these kind of
differences.
This is the source:
e.args += ('xxx',)
While Python 2.6 (r26:66714, Oct 24 2008, 17:31:07) and Python 2.6.4
(r264:75706, Jan 8 2010, 18:50:31) both optimize the source and load a
tuple constant,
LOAD_NAME 'e'
DUP_TOP
LOAD_ATTR 'args'
# load a tuple constant
LOAD_CONST ('xxx',)
INPLACE_ADD
ROT_TWO
STORE_ATTR 'args'
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
does *not* optimize:
LOAD_NAME 'e'
DUP_TOP
LOAD_ATTR 'args'
# load a string an build a tuple
LOAD_CONST 'xxx'
BUILD_TUPLE_1
INPLACE_ADD
ROT_TWO
STORE_ATTR 'args'
I checked the source in SVN and did not find any change here. But why
does this 2.6.1 generate different byte-code then? Is there anything
special about the Darwin-Build?
--
Regards
Hartmut Goebel
| Hartmut Goebel | (e-mail address removed) |
| www.crazy-compilers.com | compilers which you thought are impossible |
I'm facing a curious problem: 2.6, 2.6.1 and 2.6.4 are generating
different byte-code for the same source. I can not find the reason for.
As you may know, I'm providing the 'decompyle' service as
www.crazy-comnpilers.com. This service includes verification of the
source against the original byte code. So I need to solve these kind of
differences.
This is the source:
e.args += ('xxx',)
While Python 2.6 (r26:66714, Oct 24 2008, 17:31:07) and Python 2.6.4
(r264:75706, Jan 8 2010, 18:50:31) both optimize the source and load a
tuple constant,
LOAD_NAME 'e'
DUP_TOP
LOAD_ATTR 'args'
# load a tuple constant
LOAD_CONST ('xxx',)
INPLACE_ADD
ROT_TWO
STORE_ATTR 'args'
Python 2.6.1 (r261:67515, Jul 7 2009, 23:51:51)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
does *not* optimize:
LOAD_NAME 'e'
DUP_TOP
LOAD_ATTR 'args'
# load a string an build a tuple
LOAD_CONST 'xxx'
BUILD_TUPLE_1
INPLACE_ADD
ROT_TWO
STORE_ATTR 'args'
I checked the source in SVN and did not find any change here. But why
does this 2.6.1 generate different byte-code then? Is there anything
special about the Darwin-Build?
--
Regards
Hartmut Goebel
| Hartmut Goebel | (e-mail address removed) |
| www.crazy-compilers.com | compilers which you thought are impossible |