Commit message (Collapse) | Author | Age | |
---|---|---|---|
* | py: Enable optimisation of multiplying 2 small ints in compiler. | Damien George | 2014-04-04 |
| | |||
* | py: This time, real proper overflow checking of small int power. | Damien George | 2014-04-04 |
| | | | | Previous overflow test was inadequate. | ||
* | py: Wrap compile_scope_inline_asm in #if; remove comment from misc.h. | Damien George | 2014-04-02 |
| | |||
* | py: Enable a jump optimisation in the compiler. | Damien George | 2014-04-02 |
| | |||
* | py: Move to Python 3.4.0 compatibility. | Damien George | 2014-04-02 |
| | | | | | | | | | | | | | Very little has changed. In Python 3.4 they removed the opcode STORE_LOCALS, but in Micro Python we only ever used this for CPython compatibility, so it was a trivial thing to remove. It also allowed to clean up some dead code (eg the 0xdeadbeef in class construction), and now class builders use 1 less stack word. Python 3.4.0 introduced the LOAD_CLASSDEREF opcode, which I have not yet understood. Still, all tests (apart from bytecode test) still pass. Bytecode tests needs some more attention, but they are not that important anymore. | ||
* | py: Fix bug in optimised for .. range. | Damien George | 2014-03-31 |
| | | | | | | Don't store final, failing value to the loop variable. This fix also makes for .. range a bit more efficient, as it uses less store/load pairs for the loop variable. | ||
* | py: Towards default keyword arguments. | Damien George | 2014-03-31 |
| | | | | These are default arguments after a bare *. | ||
* | Merge branch 'master' of github.com:micropython/micropython | Damien George | 2014-03-31 |
|\ | |||
| * | compile: Don't try to constant-fold division by zero. | Paul Sokolovsky | 2014-03-31 |
| | | | | | | | | | | The way it is, just crashes app. And optimizing to "raise ZeroDivisionError" is probably too much. | ||
* | | py: Rename and reorder parameters in emit_make_function/closure. | Damien George | 2014-03-31 |
|/ | | | | In preparation for implementing default keyword arguments. | ||
* | py: Fix bug in compiler for empty class bases. | Damien George | 2014-03-30 |
| | | | | Eg class A(): pass would fail an assertion. | ||
* | Rename rt_* to mp_*. | Damien George | 2014-03-30 |
| | | | | | | | Mostly just a global search and replace. Except rt_is_true which becomes mp_obj_is_true. Still would like to tidy up some of the names, but this will do for now. | ||
* | compile: Print error messages on unimplemented relative imports. | Paul Sokolovsky | 2014-03-30 |
| | |||
* | Merge pull request #389 from pfalcon/with-statement | Damien George | 2014-03-29 |
|\ | | | | | With statement implementation | ||
| * | vm: Implement "with" statement (SETUP_WITH and WITH_CLEANUP bytecodes). | Paul Sokolovsky | 2014-03-29 |
| | | |||
* | | py: Free unique_code slot for outer module. | Damien George | 2014-03-29 |
|/ | | | | | | Partly (very partly!) addresses issue #386. Most importantly, at the REPL command line, each invocation does not now lead to increased memory usage (unless you define a function/lambda). | ||
* | py: Factor out code from runtime.c to emitglue.c. | Damien George | 2014-03-27 |
| | |||
* | py: Calculate maximum exception stack size in compiler. | Damien George | 2014-03-27 |
| | |||
* | py: Restore CPython compatibility in compiler for closures with def args. | Damien George | 2014-03-26 |
| | |||
* | py: Support closures with default args. | Paul Sokolovsky | 2014-03-26 |
| | |||
* | Fixed floor division on mp ints and small ints. Added a floordivide test case. | Rachel Dowdall | 2014-03-22 |
| | |||
* | Fixed modulo operator on ints and mp ints to agree with python. Added ↵ | Rachel Dowdall | 2014-03-22 |
| | | | | intdivmod.c and tests/basics/modulo.py. | ||
* | py: Clean up includes. | xbe | 2014-03-17 |
| | | | | Remove unnecessary includes. Add includes that improve portability. | ||
* | py: Unify syntax error handling in compiler; check defualt arg syntax. | Damien George | 2014-03-03 |
| | | | | | Checks for non-default args following default args, and errors out. Addresses issue #328. | ||
* | py: Remove name of var arg from macros with var args. | Damien George | 2014-02-26 |
| | |||
* | parse: Refactor parse node encoding to support full range of small ints. | Paul Sokolovsky | 2014-02-22 |
| | | | | | Based on suggestion by @dpgeorge at https://github.com/micropython/micropython/pull/313 | ||
* | parse: Note that fact that parser's small ints are different than VM small int. | Paul Sokolovsky | 2014-02-21 |
| | | | | | | Specifically, VM's small ints are 31 bit, while parser's only 28. There's already MP_OBJ_FITS_SMALL_INT(), so, for clarity, rename MP_FIT_SMALL_INT() to MP_PARSE_FITS_SMALL_INT(). | ||
* | compile: Add comments ergarding non-implemented relative imports. | Paul Sokolovsky | 2014-02-20 |
| | |||
* | py: Pass all scope flags through to runtime. | Damien George | 2014-02-15 |
| | |||
* | Replace global "static" -> "STATIC", to allow "analysis builds". Part 2. | Paul Sokolovsky | 2014-02-12 |
| | |||
* | Clean up handling of function return type annotation. | Paul Sokolovsky | 2014-02-10 |
| | |||
* | py: Fix compile of class with keyword arguments in bases. | Damien George | 2014-02-06 |
| | |||
* | py: Add built-in super. | Damien George | 2014-02-05 |
| | |||
* | py: Tidy up BINARY_OPs; negation done by special NOT bytecode. | Damien George | 2014-02-01 |
| | | | | | IS_NOT and NOT_IN are now compiled to IS + NOT and IN + NOT, with a new special NOT bytecode. | ||
* | py: Reduce code size of compiler by a bit. | Damien George | 2014-02-01 |
| | |||
* | py: Implement break/continue from an exception with finally. | Damien George | 2014-02-01 |
| | | | | Still todo: break/continue from within the finally block itself. | ||
* | Implement default function arguments (for Python functions). | Paul Sokolovsky | 2014-02-01 |
| | | | | | | | | TODO: Decide if we really need separate bytecode for creating functions with default arguments - we would need same for closures, then there're keywords arguments too. Having all combinations is a small exponential explosion, likely we need just 2 cases - simplest (no defaults, no kw), and full - defaults & kw. | ||
* | py: Fix bug with LOAD_METHOD; fix int->machine_int_t for small int. | Damien George | 2014-01-29 |
| | | | | | | | | LOAD_METHOD bug was: emitbc did not correctly calculate the amount of stack usage for a LOAD_METHOD operation. small int bug was: int was being used to pass small ints, when it should have been machine_int_t. | ||
* | py: Implement 'not' in compiler, and improve rt_is_true. | Damien George | 2014-01-28 |
| | |||
* | py: Improve freeing of emitters in mp_compile. | Damien George | 2014-01-24 |
| | | | | | There can be multiple emitters allocated during compile (eg byte code and native). | ||
* | Add support for freeing code emitter objects at the end of compilation. | Paul Sokolovsky | 2014-01-24 |
| | |||
* | mp_compile(): Properly free module_scope and all nested scopes. | Paul Sokolovsky | 2014-01-23 |
| | |||
* | py: Use C99 way of variable macro arguments. | Damien George | 2014-01-23 |
| | | | | Addresses Issue #207. | ||
* | py: Change macro var args in parser to be C99 compliant. | Damien George | 2014-01-23 |
| | |||
* | py: Implement break and continue byte codes, and add tests. | Damien George | 2014-01-21 |
| | | | | | | | Also fixes a bug in the for-in-range optimiser. I hope to remove break and continue byte codes in the future and just use jump (if possible). | ||
* | Revamp qstrs: they now include length and hash. | Damien George | 2014-01-21 |
| | | | | | Can now have null bytes in strings. Can define ROM qstrs per port using qstrdefsport.h | ||
* | py: Add module/function/class name to exceptions. | Damien George | 2014-01-19 |
| | | | | | | | Exceptions know source file, line and block name. Also tidy up some debug printing functions and provide a global flag to enable/disable them. | ||
* | Add source file name and line number to error messages. | Damien George | 2014-01-18 |
| | | | | | Byte code has a map from byte-code offset to source-code line number, used to give better error messages. | ||
* | Implement eval. | Damien George | 2014-01-15 |
| | |||
* | py: AssertionError is loaded from global, to match CPython. | Damien George | 2014-01-12 |
| |