Brett Cannon
409d8f2ebd
Allow classes to be defined with empty parentheses. This means that
...
``class C(): pass`` is no longer a syntax error.
2005-03-05 06:47:57 +00:00
Brett Cannon
5dc8ced4a8
Silence a gcc warning about putting in parentheses around && expressions mixed
...
with || expressions. Also clarifies intend of 'if' conditional.
2005-03-03 07:01:48 +00:00
Raymond Hettinger
e63a078635
Preserve sign of -0.0 when result is run through marshal.
2005-02-23 13:37:55 +00:00
Raymond Hettinger
07359a7fed
Document how the pattern recognizer keeps all of its references in bounds.
...
Add a test in case the underlying assumptions ever change (i.e. the
compiler starts generating code blocks that are not punctuated by
RETURN_VALUE).
2005-02-21 20:03:14 +00:00
Raymond Hettinger
80121491e0
Teach the peepholer to fold unary operations on constants.
...
Afterwards, -0.5 loads in a single step and no longer requires a runtime
UNARY_NEGATIVE operation.
2005-02-20 12:41:32 +00:00
Raymond Hettinger
b615bf0681
Remove the set conversion which didn't work with: [] in (0,)
2005-02-10 01:42:32 +00:00
Raymond Hettinger
5e547969f8
Have set conversion replace existing constant if not used elsewhere.
2005-02-09 21:24:51 +00:00
Raymond Hettinger
7fcb7869ba
Adopt Skip's idea to optimize lists of constants in the context
...
of a "in" or "not in" test.
2005-02-07 19:32:38 +00:00
Raymond Hettinger
a164574937
Transform "x in (1,2,3)" to "x in frozenset([1,2,3])".
...
Inspired by Skip's idea to recognize the throw-away nature of sequences
in this context and to transform their type to one with better performance.
2005-02-06 22:05:42 +00:00
Raymond Hettinger
9feb267caf
Do not fold a constant if a large sequence will result.
...
Saves space in the presence of code like: (None,)*10000
2005-01-26 12:50:05 +00:00
Armin Rigo
664b43b3f4
Re-running python with/without the -Qnew flag uses incorrectly optimized
...
bytecodes from the previously saved .pyc files. Fixed by disabling the static
optimization of BINARY_DIVIDE between two constants.
2005-01-07 18:10:51 +00:00
Raymond Hettinger
c34f8673a1
Teach the peephole optimizer to fold simple constant expressions.
2005-01-02 06:17:33 +00:00
Jeremy Hylton
16b047904c
SF patch 1025636: Check for NULL returns in compile.c:com_import_stmt
...
There is no test for this change, because there is no way to provoke memory errors on demand. Test suite passes, though.
2004-11-07 14:04:00 +00:00
Raymond Hettinger
5dec096e6a
Maintain peepholer's cumlc invariant by updating the running total
...
everytime a LOAD_CONSTANT is encountered, created, or overwritten.
Added two tests to cover cases affected by the patch.
2004-11-02 04:20:10 +00:00
Raymond Hettinger
099ecfbec9
Simplify and future proof NOP counting in the peepholer.
...
No longer assumes that the input is NOP free.
2004-11-01 15:19:11 +00:00
Armin Rigo
d7bcf4deb1
Fixed a comment and added another one.
2004-10-30 21:08:59 +00:00
Raymond Hettinger
effb3931ea
Adopt some peepholer suggestions from Armin Rigo:
...
* Use simpler, faster two pass algorithm for markblocks().
* Free the blocks variable if not NULL and exiting without change.
* Verify that the rest of the compiler has not set an exception.
* Make the test for tuple of constants less restrictive.
* Embellish the comment for chained conditional jumps.
2004-10-30 08:55:08 +00:00
Raymond Hettinger
23109ef11e
SF bug #1053819 : Segfault in tuple_of_constants
...
Peepholer could be fooled into misidentifying a tuple_of_constants.
Added code to count consecutive occurrences of LOAD_CONST.
Use the count to weed out the misidentified cases.
Added a unittest.
2004-10-26 08:59:14 +00:00
Raymond Hettinger
9047c8f73d
SF bug #1048870 : call arg of lambda not updating
2004-10-24 00:10:06 +00:00
Raymond Hettinger
fec0c466ad
Improve error message for augmented assignments to genexps or listcomps.
...
Rather than introduce new logic, took the approach of making the message
itself more general.
2004-09-29 23:54:08 +00:00
Raymond Hettinger
8ffc1410e2
Fix two erroneous error messages.
2004-09-29 21:47:10 +00:00
Raymond Hettinger
06cc973d06
Replaced a test with an assertion.
...
(Suggested by Michael Hudson.)
2004-09-28 17:22:12 +00:00
Raymond Hettinger
2c31a058eb
SF patch #1031667 : Fold tuples of constants into a single constant
...
Example:
>>> import dis
>>> dis.dis(compile('1,2,3', '', 'eval'))
0 0 LOAD_CONST 3 ((1, 2, 3))
3 RETURN_VALUE
2004-09-22 18:44:21 +00:00
Anthony Baxter
1a4ddaecc7
SF patch #1007189 , multi-line imports, for instance:
...
"from blah import (foo, bar
baz, bongo)"
2004-08-31 10:07:13 +00:00
Raymond Hettinger
1792bfbf90
Bypass peepholing of code with lineno tables having intervals >= 255.
...
Allows the lineno fixup code to remain simple and not have to deal with
multibyte codings.
* Add an assertion to that effect.
* Remove the XXX comment on the subject.
2004-08-25 17:19:38 +00:00