- 11 Ock, 2010 1 kayıt (commit)
-
-
Alexandre Vassalotti yazdı
-
- 09 Ock, 2010 1 kayıt (commit)
-
-
Alexandre Vassalotti yazdı
-
- 28 Şub, 2009 1 kayıt (commit)
-
-
Jeffrey Yasskin yazdı
POP_JUMP_IF_{TRUE,FALSE} and JUMP_IF_{TRUE,FALSE}_OR_POP. This avoids executing a POP_TOP on each conditional and sometimes allows the peephole optimizer to skip a JUMP_ABSOLUTE entirely. It speeds up list comprehensions significantly.
-
- 06 Şub, 2009 1 kayıt (commit)
-
-
Neil Schemenauer yazdı
hacks. The new code is based on issue #2472 posted by Antoine Pitrou. I did some further cleanups of the pyassem code and optimized the block ordering pass.
-
- 15 Ara, 2008 1 kayıt (commit)
-
-
Georg Brandl yazdı
-
- 27 Kas, 2007 1 kayıt (commit)
-
-
Christian Heimes yazdı
Replaced import of the 'new' module with 'types' module and added a deprecation warning to the 'new' module.
-
- 10 Mar, 2006 1 kayıt (commit)
-
-
Guido van Rossum yazdı
Anyway, this is the changes to the with-statement so that __exit__ must return a true value in order for a pending exception to be ignored. The PEP (343) is already updated.
-
- 03 Mar, 2006 2 kayıt (commit)
-
-
Neal Norwitz yazdı
Add it back.
-
Thomas Wouters yazdı
- regenerate ast.py - add future flags for absolute-import and with-statement so they (hopefully) properly get set in code-object flags - try out if/else expressions in actual code for the hell of it. Seems to generate the same kind of bytecode as the normal compiler.
-
- 28 Şub, 2006 1 kayıt (commit)
-
-
Guido van Rossum yazdı
Sigh -- we really should have one place for all opcode metadata.
-
- 25 Kas, 2005 1 kayıt (commit)
-
-
Neal Norwitz yazdı
-
- 20 Eki, 2005 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
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.
-
- 31 Ara, 2002 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
A variety of changes from Michael Hudson to get the compiler working with 2.3. The primary change is the handling of SET_LINENO: # The set_lineno() function and the explicit emit() calls for # SET_LINENO below are only used to generate the line number table. # As of Python 2.3, the interpreter does not have a SET_LINENO # instruction. pyassem treats SET_LINENO opcodes as a special case. A few other small changes: - Remove unused code from pycodegen and pyassem. - Fix error handling in parsermodule. When PyParser_SimplerParseString() fails, it sets an exception with detailed info. The parsermodule was clobbering that exception and replacing it was a generic "could not parse string" exception. Keep the original exception.
-
- 06 Haz, 2002 1 kayıt (commit)
-
-
Neal Norwitz yazdı
-
- 18 Eki, 2001 1 kayıt (commit)
-
-
Tim Peters yazdı
-
- 17 Eki, 2001 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
There are now no known cases where the compiler package computes a stack depth lower than the one computed by the builtin compiler. (To achieve this state, we had to fix bugs in both compilers :-). The chief change is to do the depth calculations with respect to basic blocks. The stack effect of block is calculated. Then the flow graph is traversed using breadth-first search to find the max weight path through the graph. Had to fix the StackDepthTracker to calculate the right info for several opcodes: LOAD_ATTR, CALL_FUNCTION (and friends), MAKE_CLOSURE, and DUP_TOPX. XXX Still need to handle free variables in MAKE_CLOSURE. XXX There are still a lot of places where the computed stack depth is larger than for the builtin compiler. These won't cause the interpreter to overflow the frame, but they waste space.
-
- 14 Eyl, 2001 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
Remove the option to have nested scopes or old LGB scopes. This has a large impact on the code base, by removing the need for two variants of each CodeGenerator. Add a get_module() method to CodeGenerator objects, used to get the future features for the current module. Set CO_GENERATOR, CO_GENERATOR_ALLOWED, and CO_FUTURE_DIVISION flags as appropriate. Attempt to fix the value of nlocals in newCodeObject(), assuming that nlocals is 0 if CO_NEWLOCALS is not defined.
-
- 30 Agu, 2001 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
Fix list comp code generation -- emit GET_ITER instead of Const(0) after the list. Add CO_GENERATOR flag to generators. Get CO_xxx flags from the new module
-
- 29 Agu, 2001 4 kayıt (commit)
-
-
Jeremy Hylton yazdı
Add CONTINUE_LOOP to the list of unconditional transfers
-
Jeremy Hylton yazdı
XXX The code is still widely inaccurate, but most (all?) of the time it's an overestimate.
-
Jeremy Hylton yazdı
As the doc string for _lookupName() explains: This routine uses a list instead of a dictionary, because a dictionary can't store two different keys if the keys have the same value but different types, e.g. 2 and 2L. The compiler must treat these two separately, so it does an explicit type comparison before comparing the values.
-
Jeremy Hylton yazdı
Use a dictionary instead of a list to map objects to their offsets in a const/name tuple of a code object. XXX The conversion is perhaps incomplete, in that we shouldn't have to do the list2dict to start.
-
- 28 Agu, 2001 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
varnames should list all the local variables (with arguments first). The XXX_NAME ops typically occur at the module level and assignment ops should create locals.
-
- 09 Haz, 2001 1 kayıt (commit)
-
-
Tim Peters yazdı
Armin Rigo pointed out that the way the line-# table got built didn't work for lines generating more than 255 bytes of bytecode. Fixed as he suggested, plus corresponding changes to pyassem.py, plus added some long overdue docs about this subtle table to compile.c. Bugfix candidate (line numbers may be off in tracebacks under -O).
-
- 12 Nis, 2001 3 kayıt (commit)
-
-
Jeremy Hylton yazdı
Fix annoying bugs in flow graph layout code. In some cases the implicit control transfers weren't honored. In other cases, JUMP_FORWARD instructions jumped backwards. Remove unused arg from nextBlock(). pycodegen.py Add optional force kwarg to set_lineno() that will emit a SET_LINENO even if it is the same as the previous lineno. Use explicit LOAD_FAST and STORE_FAST to access list comp implicit variables. (The symbol table doesn't know about them.)
-
Jeremy Hylton yazdı
those used by compile.c. (test_grammar now depends on the names)
-
Jeremy Hylton yazdı
XXX Still doesn't work right for classes XXX Still doesn't do sufficient error checking
-
- 11 Nis, 2001 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
consts, even if it is None. Simplify _lookupName() by removing lots of redundant tests.
-
- 06 Kas, 2000 2 kayıt (commit)
-
-
Jeremy Hylton yazdı
-
Jeremy Hylton yazdı
embedded code objects (e.g. functions) rather than the generated code object. This change means that the compiler generates code for everything at the end, rather then generating code for each function as it finds it. Implementation note: _convert_LOAD_CONST in pyassem.py must be change to call getCode(). Other changes follow. Several changes creates extra edges between basic blocks to reflect control flow for loops and exceptions. These missing edges had gone unnoticed because they do not affect the current compilation process. pyassem.py: Add _enable_debug() and _disable_debug() methods that print instructions and blocks to stdout as they are generated. Add edges between blocks for instructions like SETUP_LOOP, FOR_LOOP, etc. Add pruneNext to get rid of bogus edges remaining after unconditional transfer ops (e.g. JUMP_FORWARD) Change repr of Block to omit block length. pycodegen.py: Make sure a new block is started after FOR_LOOP, etc. Change assert implementation to use RAISE_VARARGS 1 when there is no user-specified failure output. misc.py: Implement __contains__ and copy for Set.
-
- 13 Eki, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
1.5.2. The compiler generates code for the version of the interpreter it is run under. ast.py: Print and Printnl add dest attr for extended print new node AugAssign for augmented assignments new nodes ListComp, ListCompFor, and ListCompIf for list comprehensions pyassem.py: add work around for string-Unicode comparison raising UnicodeError on comparison of two objects in code object's const table pycodegen.py: define VERSION, the Python major version number get magic number using imp.get_magic() instead of hard coding implement list comprehensions, extended print, and augmented assignment; augmented assignment uses Delegator classes (see doc string) fix import and tuple unpacking for 1.5.2 transformer.py: various changes to support new 2.0 grammar and old 1.5 grammar add debug_tree helper than converts and symbol and token numbers to their names
-
- 12 Eki, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
transformer.py: return '*', None from com_import_as_name pycodegen.py: special case for name == '*' pyassem.py: fix stack counting for IMPORT_ opcodes
-
- 01 Eyl, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
-
- 12 Agu, 2000 1 kayıt (commit)
-
-
Thomas Wouters yazdı
- fix tab space issues (SF patch #101167 by Neil Schemenauer) - fix co_flags for classes to include CO_NEWLOCALS (SF patch #101145 by Neil) - fix for merger of UNPACK_LIST and UNPACK_TUPLE into UNPACK_SEQUENCE, (SF patch #101168 by, well, Neil :) - Adjust bytecode MAGIC to current bytecode. TODO: teach compile.py about list comprehensions.
-
- 02 May, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
Attached is a set of diffs for the .py compiler that adds support for the new extended call syntax. compiler/ast.py: CallFunc node gets 2 new children to support extended call syntax - "star_args" (for "*args") and "dstar_args" (for "**args") compiler/pyassem.py It appear that self.lnotab is supposed to be responsible for tracking line numbers, but self.firstlineno was still hanging around. Removed self.firstlineno completely. NOTE - I didnt actually test that the generated code has the correct line numbers!! Stack depth tracking appeared a little broken - the checks never made it beyond the "self.patterns" check - thus, the custom methods were never called! Fixed this. (XXX Jeremy notes: I think this code is still broken because it doesn't track stack effects across block bounaries.) Added support for the new extended call syntax opcodes for depth calculations. compiler/pycodegen.py Added support for the new extended call syntax opcodes. compiler/transformer.py Added support for the new extended call syntax.
-
- 16 Mar, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
code generator uses flowgraph as intermediate representation. the old rep uses a list with explicit "StackRefs" to indicate the target of jumps. pyassem converts flowgraph to bytecode, breaks up individual steps of generating bytecode
-
- 06 Mar, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
that are internally converted to chars, rather than taking a string.
-
- 21 Şub, 2000 1 kayıt (commit)
-
-
Jeremy Hylton yazdı
-
- 17 Şub, 2000 2 kayıt (commit)
-
-
Jeremy Hylton yazdı
- removed now (happily) unused second arg - need to verify results of [].index are correct; for building consts, need to have same value and same type, e.g. 2 not the same as 2L
-
Jeremy Hylton yazdı
(big surprise). new solution is a little less hackish. Code gen adds a TupleArg instance in the argument slot. The tuple arg includes a copy of the names that it is responsble for binding. The PyAssembler uses this information to calculate the correct argcount. all fix this wacky case: del (a, ((b,), c)), d which is the same as: del a, b, c, d (Can't wait for Guido to tell me why.) solution uses findOp which walks a tree to find out whether it contains OP_ASSIGN or OP_DELETE or ...
-