1. 12 Mar, 2015 1 commit
  2. 11 Mar, 2015 1 commit
  3. 03 Mar, 2015 1 commit
  4. 02 Mar, 2015 4 commits
  5. 27 Feb, 2015 1 commit
  6. 15 Feb, 2015 2 commits
  7. 14 Feb, 2015 1 commit
  8. 09 Feb, 2015 2 commits
  9. 08 Feb, 2015 1 commit
    • Damien George's avatar
      py: Parse big-int/float/imag constants directly in parser. · 7d414a1b
      Damien George authored
      Previous to this patch, a big-int, float or imag constant was interned
      (made into a qstr) and then parsed at runtime to create an object each
      time it was needed.  This is wasteful in RAM and not efficient.  Now,
      these constants are parsed straight away in the parser and turned into
      objects.  This allows constants with large numbers of digits (so
      addresses issue #1103) and takes us a step closer to #722.
      7d414a1b
  10. 02 Feb, 2015 1 commit
  11. 30 Jan, 2015 1 commit
  12. 29 Jan, 2015 2 commits
  13. 28 Jan, 2015 1 commit
  14. 27 Jan, 2015 1 commit
  15. 21 Jan, 2015 1 commit
  16. 14 Jan, 2015 1 commit
    • Damien George's avatar
      py: Reluctantly add an extra pass to bytecode compiler. · 1e1779ea
      Damien George authored
      Bytecode also needs a pass to compute the stack size.  This is because
      the state size of the bytecode function is encoded as a variable uint,
      so we must know the value of this uint before we encode it (otherwise
      the size of the generated code changes from one pass to the next).
      
      Having an entire pass for this seems wasteful (in time).  Alternative is
      to allocate fixed space for the state size (would need 3-4 bytes to be
      general, when 1 byte is usually sufficient) which uses a bit of extra
      RAM per bytecode function, and makes the code less elegant in places
      where this uint is encoded/decoded.
      
      So, for now, opt for an extra pass.
      1e1779ea
  17. 13 Jan, 2015 1 commit
    • Damien George's avatar
      py: Never intern data of large string/bytes object; add relevant tests. · 4c81ba80
      Damien George authored
      Previously to this patch all constant string/bytes objects were
      interned by the compiler, and this lead to crashes when the qstr was too
      long (noticeable now that qstr length storage defaults to 1 byte).
      
      With this patch, long string/bytes objects are never interned, and are
      referenced directly as constant objects within generated code using
      load_const_obj.
      4c81ba80
  18. 11 Jan, 2015 1 commit
  19. 08 Jan, 2015 2 commits
  20. 04 Jan, 2015 1 commit
  21. 03 Jan, 2015 1 commit
  22. 01 Jan, 2015 2 commits
  23. 31 Dec, 2014 1 commit
  24. 24 Dec, 2014 1 commit
  25. 12 Dec, 2014 1 commit
    • Damien George's avatar
      py: Fix optimised for-loop compiler so it follows proper semantics. · e181c0dc
      Damien George authored
      You can now assign to the range end variable and the for-loop still
      works correctly.  This fully addresses issue #565.
      
      Also fixed a bug with the stack not being fully popped when breaking out
      of an optimised for-loop (and it's actually impossible to write a test
      for this case!).
      e181c0dc
  26. 11 Dec, 2014 1 commit
  27. 09 Dec, 2014 1 commit
    • Damien George's avatar
      py: Allow builtins to be overridden. · 78d702c3
      Damien George authored
      This patch adds a configuration option (MICROPY_CAN_OVERRIDE_BUILTINS)
      which, when enabled, allows to override all names within the builtins
      module.  A builtins override dict is created the first time the user
      assigns to a name in the builtins model, and then that dict is searched
      first on subsequent lookups.  Note that this implementation doesn't
      allow deleting of names.
      
      This patch also does some refactoring of builtins code, creating the
      modbuiltins.c file.
      
      Addresses issue #959.
      78d702c3
  28. 05 Dec, 2014 1 commit
  29. 04 Dec, 2014 1 commit
  30. 30 Nov, 2014 1 commit
  31. 29 Nov, 2014 1 commit
  32. 15 Nov, 2014 1 commit