1. 22 Apr, 2017 1 commit
  2. 21 Apr, 2017 3 commits
  3. 19 Apr, 2017 1 commit
  4. 18 Apr, 2017 14 commits
  5. 16 Apr, 2017 7 commits
  6. 15 Apr, 2017 1 commit
  7. 14 Apr, 2017 2 commits
  8. 13 Apr, 2017 5 commits
  9. 12 Apr, 2017 6 commits
    • Damien George's avatar
      py/gc: Execute finaliser code in a protected environment. · c7e8c6f7
      Damien George authored
      If a finaliser raises an exception then it must not propagate through the
      GC sweep function.  This patch protects against such a thing by running
      finaliser code via the mp_call_function_1_protected call.
      
      This patch also adds scheduler lock/unlock calls around the finaliser
      execution to further protect against any possible reentrancy issues: the
      memory manager is already locked when doing a collection, but we also don't
      want to allow any scheduled code to run, KeyboardInterrupts to interupt the
      code, nor threads to switch.
      c7e8c6f7
    • Damien George's avatar
      py/nlrsetjmp: Add check for failed NLR jump. · 08242eed
      Damien George authored
      Also optimise the function so it only needs to call the MP_STATE_THREAD
      macro once (following how other nlr code is written).
      08242eed
    • Damien George's avatar
    • Damien George's avatar
      py/objfloat: Add implementation of high-quality float hashing. · a73501b1
      Damien George authored
      Disabled by default.
      a73501b1
    • Damien George's avatar
      py: Optimise types for common case where type has a single parent type. · 816413e4
      Damien George authored
      The common cases for inheritance are 0 or 1 parent types, for both built-in
      types (eg built-in exceptions) as well as user defined types.  So it makes
      sense to optimise the case of 1 parent type by storing just the type and
      not a tuple of 1 value (that value being the single parent type).
      
      This patch makes such an optimisation.  Even though there is a bit more
      code to handle the two cases (either a single type or a tuple with 2 or
      more values) it helps reduce overall code size because it eliminates the
      need to create a static tuple to hold single parents (eg for the built-in
      exceptions).  It also helps reduce RAM usage for user defined types that
      only derive from a single parent.
      
      Changes in code size (in bytes) due to this patch:
      
          bare-arm:       -16
          minimal (x86): -176
          unix (x86-64): -320
          unix nanbox:   -384
          stmhal:         -64
          cc3200:         -32
          esp8266:       -108
      816413e4
    • Damien George's avatar