1. 15 Nov, 2016 2 commits
  2. 07 Jan, 2016 1 commit
    • Damien George's avatar
      py/parse: Improve constant folding to operate on small and big ints. · 22b22650
      Damien George authored
      Constant folding in the parser can now operate on big ints, whatever
      their representation.  This is now possible because the parser can create
      parse nodes holding arbitrary objects.  For the case of small ints the
      folding is still efficient in RAM because the folded small int is stored
      inplace in the parse node.
      
      Adds 48 bytes to code size on Thumb2 architecture.  Helps reduce heap
      usage because more constants can be computed at compile time, leading to
      a smaller parse tree, and most importantly means that the constants don't
      have to be computed at runtime (perhaps more than once).  Parser will now
      be a little slower when folding due to calls to runtime to do the
      arithmetic.
      22b22650
  3. 17 Dec, 2015 2 commits
  4. 29 Nov, 2015 1 commit
    • Damien George's avatar
      py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. · 999cedb9
      Damien George authored
      This allows the mp_obj_t type to be configured to something other than a
      pointer-sized primitive type.
      
      This patch also includes additional changes to allow the code to compile
      when sizeof(mp_uint_t) != sizeof(void*), such as using size_t instead of
      mp_uint_t, and various casts.
      999cedb9
  5. 01 Oct, 2015 1 commit
  6. 13 Feb, 2015 1 commit
  7. 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
  8. 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.
      0bfc7638
  9. 01 Jan, 2015 1 commit
  10. 27 Dec, 2014 1 commit
  11. 03 Oct, 2014 1 commit
  12. 03 Jul, 2014 2 commits
  13. 28 May, 2014 1 commit
  14. 25 May, 2014 1 commit
    • Damien George's avatar
      py: Don't automatically intern strings in parser. · 5042bce8
      Damien George authored
      This completes non-automatic interning of strings in the parser, so that
      doc strings don't take up RAM.  It complicates the parser and compiler,
      and bloats stmhal by about 300 bytes.  It's complicated because now
      there are 2 kinds of parse-nodes that can be strings: interned leaves
      and non-interned structs.
      5042bce8
  15. 08 May, 2014 1 commit
  16. 03 May, 2014 1 commit
    • Damien George's avatar
      Add license header to (almost) all files. · 04b9147e
      Damien George authored
      Blanket wide to all .c and .h files.  Some files originating from ST are
      difficult to deal with (license wise) so it was left out of those.
      
      Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
      04b9147e
  17. 10 Apr, 2014 1 commit
  18. 22 Feb, 2014 2 commits
  19. 21 Feb, 2014 1 commit
  20. 15 Feb, 2014 1 commit
    • Damien George's avatar
      Implement proper exception type hierarchy. · c5966128
      Damien George authored
      Each built-in exception is now a type, with base type BaseException.
      C exceptions are created by passing a pointer to the exception type to
      make an instance of.  When raising an exception from the VM, an
      instance is created automatically if an exception type is raised (as
      opposed to an exception instance).
      
      Exception matching (RT_BINARY_OP_EXCEPTION_MATCH) is now proper.
      
      Handling of parse error changed to match new exceptions.
      
      mp_const_type renamed to mp_type_type for consistency.
      c5966128
  21. 25 Jan, 2014 2 commits
  22. 19 Jan, 2014 1 commit
  23. 18 Jan, 2014 1 commit
  24. 15 Jan, 2014 1 commit
  25. 21 Dec, 2013 1 commit
    • Damien's avatar
      Change object representation from 1 big union to individual structs. · d99b0528
      Damien authored
      A big change.  Micro Python objects are allocated as individual structs
      with the first element being a pointer to the type information (which
      is itself an object).  This scheme follows CPython.  Much more flexible,
      not necessarily slower, uses same heap memory, and can allocate objects
      statically.
      
      Also change name prefix, from py_ to mp_ (mp for Micro Python).
      d99b0528
  26. 18 Oct, 2013 1 commit
  27. 12 Oct, 2013 1 commit
  28. 04 Oct, 2013 1 commit