summaryrefslogtreecommitdiffstats
path: root/Python/compile.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix a few more memory leaksNeal Norwitz2005-11-201-0/+3
| | | | | Document more info about the benefits of configuring without pymalloc when running valgrind
* Last batch of ref leaks in new AST code.Neal Norwitz2005-11-191-25/+50
| | | | | | Also converted a bunch of assert(0) to SystemError's. There are still printfs, etc that need to be cleaned up.
* Correctly handle identifiers for anonymous scopes and align genexpr name ↵Nick Coghlan2005-11-161-11/+17
| | | | with symtable.c
* Fix a lot of memory and ref leaks in error paths.Neal Norwitz2005-11-131-9/+35
| | | | | | (Call symtable_exit_block or compiler_exit_scope as appropriate) Use PyMem_Free on c_future since it was allocated with PyMem_Malloc
* make internal method staticNeal Norwitz2005-11-131-1/+1
|
* Ensure that compiler_exit_scope() is called as necessary to free memoryNeil Schemenauer2005-10-251-10/+18
| | | | | allocated by compiler_enter_scope(). Change return type for compiler_exit_scope() to be void.
* Fix problem handling EXTENDED_ARGs from SF bug # 1333982Neal Norwitz2005-10-231-1/+30
|
* cleanup a bit and reuse instrsize (instruction size). working towards ↵Neal Norwitz2005-10-231-30/+24
| | | | fixing problems with EXTENDED_ARG
* Remove unnecessary local variable.Neil Schemenauer2005-10-231-3/+2
|
* Fix private name mangling. The symtable also must do mangles so thatNeil Schemenauer2005-10-231-4/+16
| | | | the scope of names can be correctly determined.
* Use PyTuple_Pack instead of Py_BuildValue.Neil Schemenauer2005-10-231-2/+1
|
* Fix arigo's funky LOAD_NAME bug: implicit globals inside classes haveNeil Schemenauer2005-10-231-1/+2
| | | | | historically been looked up using LOAD_NAME, not LOAD_GLOBAL. looked up by LOAD_NAME, not
* Don't stop generating code for import statements after the first "import as"Neil Schemenauer2005-10-231-2/+3
| | | | part. Fixes one bug from #1333982.
* Use <lamba> as the function name for lambdas (matches old compiler).Neil Schemenauer2005-10-211-1/+1
|
* ANSI-C-ify the placement of local var declarations.Armin Rigo2005-10-211-1/+2
|
* Merge ast-branch to headJeremy Hylton2005-10-201-5613/+2880
| | | | | | | | | | This change implements a new bytecode compiler, based on a transformation of the parse tree to an abstract syntax defined in Parser/Python.asdl. The compiler implementation is not complete, but it is in stable enough shape to run the entire test suite excepting two disabled tests.
* com_yield_expr(): Squash new compiler wng about unreferenced local.Tim Peters2005-08-031-1/+0
|
* PEP 342 implementation. Per Guido's comments, the generator throw()Phillip J. Eby2005-08-021-12/+64
| | | | | method still needs to support string exceptions, and allow None for the third argument. Documentation updates are needed, too.
* Fix signedness of various char variables to stop causing a warning under gcc 4.Brett Cannon2005-06-251-1/+1
|
* Allow classes to be defined with empty parentheses. This means thatBrett Cannon2005-03-051-2/+3
| | | | ``class C(): pass`` is no longer a syntax error.
* Silence a gcc warning about putting in parentheses around && expressions mixedBrett Cannon2005-03-031-5/+6
| | | | with || expressions. Also clarifies intend of 'if' conditional.
* Preserve sign of -0.0 when result is run through marshal.Raymond Hettinger2005-02-231-2/+4
|
* Document how the pattern recognizer keeps all of its references in bounds.Raymond Hettinger2005-02-211-0/+8
| | | | | | 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).
* Teach the peepholer to fold unary operations on constants.Raymond Hettinger2005-02-201-0/+62
| | | | | Afterwards, -0.5 loads in a single step and no longer requires a runtime UNARY_NEGATIVE operation.
* Remove the set conversion which didn't work with: [] in (0,)Raymond Hettinger2005-02-101-53/+1
|
* Have set conversion replace existing constant if not used elsewhere.Raymond Hettinger2005-02-091-1/+7
|
* Adopt Skip's idea to optimize lists of constants in the contextRaymond Hettinger2005-02-071-7/+13
| | | | of a "in" or "not in" test.
* Transform "x in (1,2,3)" to "x in frozenset([1,2,3])".Raymond Hettinger2005-02-061-1/+48
| | | | | 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.
* Do not fold a constant if a large sequence will result.Raymond Hettinger2005-01-261-5/+15
| | | | Saves space in the presence of code like: (None,)*10000
* Re-running python with/without the -Qnew flag uses incorrectly optimizedArmin Rigo2005-01-071-6/+3
| | | | | bytecodes from the previously saved .pyc files. Fixed by disabling the static optimization of BINARY_DIVIDE between two constants.
* Teach the peephole optimizer to fold simple constant expressions.Raymond Hettinger2005-01-021-1/+118
|
* SF patch 1025636: Check for NULL returns in compile.c:com_import_stmtJeremy Hylton2004-11-071-4/+14
| | | | There is no test for this change, because there is no way to provoke memory errors on demand. Test suite passes, though.
* Maintain peepholer's cumlc invariant by updating the running totalRaymond Hettinger2004-11-021-0/+4
| | | | | | everytime a LOAD_CONSTANT is encountered, created, or overwritten. Added two tests to cover cases affected by the patch.
* Simplify and future proof NOP counting in the peepholer.Raymond Hettinger2004-11-011-13/+6
| | | | No longer assumes that the input is NOP free.
* Fixed a comment and added another one.Armin Rigo2004-10-301-1/+4
|
* Adopt some peepholer suggestions from Armin Rigo:Raymond Hettinger2004-10-301-15/+20
| | | | | | | | * 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.
* SF bug #1053819: Segfault in tuple_of_constantsRaymond Hettinger2004-10-261-1/+9
| | | | | | | 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.
* SF bug #1048870: call arg of lambda not updatingRaymond Hettinger2004-10-241-0/+2
|
* Improve error message for augmented assignments to genexps or listcomps.Raymond Hettinger2004-09-291-2/+2
| | | | | Rather than introduce new logic, took the approach of making the message itself more general.
* Fix two erroneous error messages.Raymond Hettinger2004-09-291-2/+2
|
* Replaced a test with an assertion.Raymond Hettinger2004-09-281-3/+1
| | | | (Suggested by Michael Hudson.)
* SF patch #1031667: Fold tuples of constants into a single constantRaymond Hettinger2004-09-221-11/+91
| | | | | | | | Example: >>> import dis >>> dis.dis(compile('1,2,3', '', 'eval')) 0 0 LOAD_CONST 3 ((1, 2, 3)) 3 RETURN_VALUE
* SF patch #1007189, multi-line imports, for instance:Anthony Baxter2004-08-311-31/+47
| | | | | "from blah import (foo, bar baz, bongo)"
* Bypass peepholing of code with lineno tables having intervals >= 255.Raymond Hettinger2004-08-251-4/+8
| | | | | | | | 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.
* Fix typo in comment and add clarification.Raymond Hettinger2004-08-251-1/+2
|
* Simplify chains of conditional jumps.Raymond Hettinger2004-08-251-2/+25
| | | | (Suggested by Neal Norwitz.)
* Incorporate review comments courtesy of Neal Norwitz:Raymond Hettinger2004-08-241-6/+8
| | | | | | | | | * Perform the code length check earlier. * Eliminate the extra PyMem_Free() upon hitting an EXTENDED_ARG. * Assert that the NOP count used in jump retargeting matches the NOPs eliminated in the final step. * Add an XXX note to indicate that more work is being to done to handle linenotab with intervals > 255.
* SF Patch #1013667: Cleanup Peepholer OutputRaymond Hettinger2004-08-231-35/+100
| | | | | | | | | * Make a pass to eliminate NOPs. Produce code that is more readable, more compact, and a tiny bit faster. Makes the peepholer more flexible in the scope of allowable transformations. * With Guido's okay, bumped up the magic number so that this patch gets widely exercised before the alpha goes out.
* Move the bytecode optimizer upstream so that its results are saved in pycRaymond Hettinger2004-08-181-3/+6
| | | | | | | | | | | | | | files and not re-optimized upon import. Saves a bit of startup time while still remaining decoupled from the rest of the compiler. As a side benefit, handcoded bytecode is not run through the optimizer when new code objects are created. Hopefully, a handcoder has already created exactly what they want to have run. (Idea suggested by Armin Rigo and Michael Hudson. Initially avoided because of worries about compiler coupling; however, only the nexus point needed to be moved so there won't be a conflict when the AST branch is loaded.)
* This is Mark Russell's patch:Michael W. Hudson2004-08-171-22/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [ 1009560 ] Fix @decorator evaluation order From the description: Changes in this patch: - Change Grammar/Grammar to require newlines between adjacent decorators. - Fix order of evaluation of decorators in the C (compile.c) and python (Lib/compiler/pycodegen.py) compilers - Add better order of evaluation check to test_decorators.py (test_eval_order) - Update the decorator documentation in the reference manual (improve description of evaluation order and update syntax description) and the comment: Used Brett's evaluation order (see http://mail.python.org/pipermail/python-dev/2004-August/047835.html) (I'm checking this in for Anthony who was having problems getting SF to talk to him)