Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
e1adeeb7
Kaydet (Commit)
e1adeeb7
authored
Nis 15, 2011
tarafından
Ezio Melotti
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Sade Fark
#5057: Merge with 3.2.
üst
b4961596
71e84a6e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
41 additions
and
1 deletion
+41
-1
test_peepholer.py
Lib/test/test_peepholer.py
+18
-0
NEWS
Misc/NEWS
+5
-1
peephole.c
Python/peephole.c
+18
-0
No files found.
Lib/test/test_peepholer.py
Dosyayı görüntüle @
e1adeeb7
...
...
@@ -205,6 +205,24 @@ class TestTranforms(unittest.TestCase):
asm
=
dis_single
(
'a="x"*1000'
)
self
.
assertIn
(
'(1000)'
,
asm
)
def
test_binary_subscr_on_unicode
(
self
):
# valid code get optimized
asm
=
dis_single
(
'"foo"[0]'
)
self
.
assertIn
(
"('f')"
,
asm
)
self
.
assertNotIn
(
'BINARY_SUBSCR'
,
asm
)
asm
=
dis_single
(
'"
\u0061\uffff
"[1]'
)
self
.
assertIn
(
"('
\\
uffff')"
,
asm
)
self
.
assertNotIn
(
'BINARY_SUBSCR'
,
asm
)
# invalid code doesn't get optimized
# out of range
asm
=
dis_single
(
'"fuu"[10]'
)
self
.
assertIn
(
'BINARY_SUBSCR'
,
asm
)
# non-BMP char (see #5057)
asm
=
dis_single
(
'"
\U00012345
"[0]'
)
self
.
assertIn
(
'BINARY_SUBSCR'
,
asm
)
def
test_folding_of_unaryops_on_constants
(
self
):
for
line
,
elem
in
(
(
'-0.5'
,
'(-0.5)'
),
# unary negative
...
...
Misc/NEWS
Dosyayı görüntüle @
e1adeeb7
...
...
@@ -10,6 +10,10 @@ What's New in Python 3.3 Alpha 1?
Core and Builtins
-----------------
- Issue #5057: fix a bug in the peepholer that led to non-portable pyc files
between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP
chars (e.g. "\U00012345"[0]).
- Issue #11845: Fix typo in rangeobject.c that caused a crash in
compute_slice_indices. Patch by Daniel Urban.
...
...
@@ -106,7 +110,7 @@ Core and Builtins
Library
-------
- Issue #11467: Fix urlparse behavior when handling urls which contains scheme
- Issue #11467: Fix urlparse behavior when handling urls which contains scheme
specific part only digits. Patch by Santoso Wijaya.
- Issue #11474: Fix the bug with url2pathname() handling of '
/
C
|/
' on Windows.
...
...
Python/peephole.c
Dosyayı görüntüle @
e1adeeb7
...
...
@@ -183,6 +183,24 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts, PyObject **ob
break
;
case
BINARY_SUBSCR
:
newconst
=
PyObject_GetItem
(
v
,
w
);
/* #5057: if v is unicode, there might be differences between
wide and narrow builds in cases like '\U00012345'[0].
Wide builds will return a non-BMP char, whereas narrow builds
will return a surrogate. In both the cases skip the
optimization in order to produce compatible pycs.
*/
if
(
newconst
!=
NULL
&&
PyUnicode_Check
(
v
)
&&
PyUnicode_Check
(
newconst
))
{
Py_UNICODE
ch
=
PyUnicode_AS_UNICODE
(
newconst
)[
0
];
#ifdef Py_UNICODE_WIDE
if
(
ch
>
0xFFFF
)
{
#else
if
(
ch
>=
0xD800
&&
ch
<=
0xDFFF
)
{
#endif
Py_DECREF
(
newconst
);
return
0
;
}
}
break
;
case
BINARY_LSHIFT
:
newconst
=
PyNumber_Lshift
(
v
,
w
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment