1. 11 Ock, 2010 1 kayıt (commit)
  2. 09 Ock, 2010 1 kayıt (commit)
  3. 28 Şub, 2009 1 kayıt (commit)
  4. 06 Şub, 2009 1 kayıt (commit)
  5. 15 Ara, 2008 1 kayıt (commit)
  6. 27 Kas, 2007 1 kayıt (commit)
  7. 10 Mar, 2006 1 kayıt (commit)
  8. 03 Mar, 2006 2 kayıt (commit)
  9. 28 Şub, 2006 1 kayıt (commit)
  10. 25 Kas, 2005 1 kayıt (commit)
  11. 20 Eki, 2005 1 kayıt (commit)
    • Jeremy Hylton's avatar
      Merge ast-branch to head · 3e0055f8
      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.
      3e0055f8
  12. 31 Ara, 2002 1 kayıt (commit)
    • Jeremy Hylton's avatar
      SF patch [ 597919 ] compiler package and SET_LINENO · accb62b2
      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.
      accb62b2
  13. 06 Haz, 2002 1 kayıt (commit)
  14. 18 Eki, 2001 1 kayıt (commit)
  15. 17 Eki, 2001 1 kayıt (commit)
    • Jeremy Hylton's avatar
      Vastly improved stacksize calculation. · 138d90eb
      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.
      138d90eb
  16. 14 Eyl, 2001 1 kayıt (commit)
    • Jeremy Hylton's avatar
      Various sundry changes for 2.2 compatibility · 1e99a771
      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.
      1e99a771
  17. 30 Agu, 2001 1 kayıt (commit)
  18. 29 Agu, 2001 4 kayıt (commit)
  19. 28 Agu, 2001 1 kayıt (commit)
    • Jeremy Hylton's avatar
      XXX_NAME ops should affect varnames · 63db7b9c
      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.
      63db7b9c
  20. 09 Haz, 2001 1 kayıt (commit)
    • Tim Peters's avatar
      SF bug 430991: wrong co_lnotab · 2a7f3841
      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).
      2a7f3841
  21. 12 Nis, 2001 3 kayıt (commit)
    • Jeremy Hylton's avatar
      pyassem.py: · 542b11ac
      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.)
      542b11ac
    • Jeremy Hylton's avatar
      Revise handling of tuple arguments so that the variables names match · bfb0cf82
      Jeremy Hylton yazdı
      those used by compile.c.  (test_grammar now depends on the names)
      bfb0cf82
    • Jeremy Hylton's avatar
      Preliminary support for nested scopes · 364f9b9e
      Jeremy Hylton yazdı
      XXX Still doesn't work right for classes
      XXX Still doesn't do sufficient error checking
      364f9b9e
  22. 11 Nis, 2001 1 kayıt (commit)
  23. 06 Kas, 2000 2 kayıt (commit)
    • Jeremy Hylton's avatar
      eefaeb78
    • Jeremy Hylton's avatar
      Change the graph structure to contain the code generator object for · 314e3fb2
      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.
      314e3fb2
  24. 13 Eki, 2000 1 kayıt (commit)
    • Jeremy Hylton's avatar
      Now supports entire Python 2.0 language and still supports Python · 9c048f9f
      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
      9c048f9f
  25. 12 Eki, 2000 1 kayıt (commit)
  26. 01 Eyl, 2000 1 kayıt (commit)
  27. 12 Agu, 2000 1 kayıt (commit)
    • Thomas Wouters's avatar
      Bring Tools/compiler almost up to date. Specifically: · 46cc7c0f
      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.
      46cc7c0f
  28. 02 May, 2000 1 kayıt (commit)
    • Jeremy Hylton's avatar
      patches from Mark Hammond · be317e61
      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.
      be317e61
  29. 16 Mar, 2000 1 kayıt (commit)
    • Jeremy Hylton's avatar
      complete rewrite · 36cc6a21
      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
      36cc6a21
  30. 06 Mar, 2000 1 kayıt (commit)
  31. 21 Şub, 2000 1 kayıt (commit)
  32. 17 Şub, 2000 2 kayıt (commit)
    • Jeremy Hylton's avatar
      changes to _lookupName · efd0694a
      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
      efd0694a
    • Jeremy Hylton's avatar
      the previous quick hack to fix def foo((x,y)) failed on some cases · 3ec7e2c4
      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 ...
      3ec7e2c4