1. 21 Mar, 2015 1 commit
    • Damien George's avatar
      py: Combine duplicated code that converts members from a lookup. · 55b74d1f
      Damien George authored
      Despite initial guess, this code factoring does not hamper performance.
      In fact it seems to improve speed by a little: running pystone(1.2) on
      pyboard (which gives a very stable result) this patch takes pystones
      from 1729.51 up to 1742.16.  Also, pystones on x64 increase by around
      the same proportion (but it's much noisier).
      Taking a look at the generated machine code, stack usage with this patch
      is unchanged, and call is tail-optimised with all arguments in
      registers.  Code size decreases by about 50 bytes on Thumb2 archs.
  2. 20 Mar, 2015 1 commit
  3. 03 Mar, 2015 1 commit
  4. 15 Feb, 2015 1 commit
  5. 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.
  6. 07 Feb, 2015 1 commit
    • Damien George's avatar
      py: Protect mp_parse and mp_compile with nlr push/pop block. · 0bfc7638
      Damien George authored
      To enable parsing constants more efficiently, mp_parse should be allowed
      to raise an exception, and mp_compile can already raise a MemoryError.
      So these functions need to be protected by an nlr push/pop block.
      This patch adds that feature in all places.  This allows to simplify how
      mp_parse and mp_compile are called: they now raise an exception if they
      have an error and so explicit checking is not needed anymore.
  7. 27 Jan, 2015 1 commit
    • Damien George's avatar
      py: Specify unary/binary op name in TypeError error message. · a5efcd47
      Damien George authored
      Eg, "() + 1" now tells you that __add__ is not supported for tuple and
      int types (before it just said the generic "binary operator").  We reuse
      the table of names for slot lookup because it would be a waste of code
      space to store the pretty name for each operator.
  8. 20 Jan, 2015 1 commit
  9. 16 Jan, 2015 1 commit
  10. 07 Jan, 2015 1 commit
  11. 01 Jan, 2015 1 commit
  12. 21 Dec, 2014 1 commit
  13. 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.
  14. 05 Dec, 2014 1 commit
    • Damien George's avatar
      py: Optimise lexer by exposing lexer type. · a4c52c5a
      Damien George authored
      mp_lexer_t type is exposed, mp_token_t type is removed, and simple lexer
      functions (like checking current token kind) are now inlined.
      This saves 784 bytes ROM on 32-bit unix, 348 bytes on stmhal, and 460
      bytes on bare-arm.  It also saves a tiny bit of RAM since mp_lexer_t
      is a bit smaller.  Also will run a bit more efficiently.
  15. 06 Nov, 2014 1 commit
  16. 02 Nov, 2014 1 commit
  17. 25 Oct, 2014 3 commits
  18. 23 Oct, 2014 1 commit
  19. 09 Oct, 2014 1 commit
  20. 07 Oct, 2014 1 commit
  21. 05 Oct, 2014 1 commit
    • Damien George's avatar
      py: Implement proper context save/restore for eval/exec; factor code. · c4d0868d
      Damien George authored
      This has benefits all round: code factoring for parse/compile/execute,
      proper context save/restore for exec, allow to sepcify globals/locals
      for eval, and reduced ROM usage by >100 bytes on stmhal and unix.
      Also, the call to mp_parse_compile_execute is tail call optimised for
      the import code, so it doesn't increase stack memory usage.
  22. 03 Oct, 2014 1 commit
  23. 25 Sep, 2014 2 commits
  24. 23 Sep, 2014 1 commit
    • Damien George's avatar
      stmhal: Initialise stack pointer correctly. · eaaebf32
      Damien George authored
      Stack is full descending and must be 8-byte aligned.  It must start off
      pointing to just above the last byte of RAM.
      Previously, stack started pointed to last byte of RAM (eg 0x2001ffff)
      and so was not 8-byte aligned.  This caused a bug in combination with
      This patch also updates some debug printing code.
      Addresses issue #872 (among many other undiscovered issues).
  25. 30 Aug, 2014 4 commits
  26. 28 Aug, 2014 1 commit
  27. 16 Aug, 2014 2 commits
  28. 15 Aug, 2014 1 commit
  29. 04 Aug, 2014 1 commit
  30. 03 Jul, 2014 1 commit
  31. 30 Jun, 2014 1 commit
  32. 27 Jun, 2014 1 commit
    • Paul Sokolovsky's avatar
      py: Move stack_ctrl_init() to mp_init(). · 8a96ebea
      Paul Sokolovsky authored
      As stack checking is enabled by default, ports which don't call
      stack_ctrl_init() are broken now (report RuntimeError on startup). Save
      them trouble and just init stack control framework in interpreter init.
  33. 20 Jun, 2014 1 commit