aboutsummaryrefslogtreecommitdiff
path: root/py/compile.c
AgeCommit message (Collapse)Author
2014-03-30py: Fix bug in compiler for empty class bases.Damien George
Eg class A(): pass would fail an assertion.
2014-03-30Rename rt_* to mp_*.Damien George
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.
2014-03-30compile: Print error messages on unimplemented relative imports.Paul Sokolovsky
2014-03-29Merge pull request #389 from pfalcon/with-statementDamien George
With statement implementation
2014-03-29py: Free unique_code slot for outer module.Damien George
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).
2014-03-29vm: Implement "with" statement (SETUP_WITH and WITH_CLEANUP bytecodes).Paul Sokolovsky
2014-03-27py: Factor out code from runtime.c to emitglue.c.Damien George
2014-03-27py: Calculate maximum exception stack size in compiler.Damien George
2014-03-26py: Restore CPython compatibility in compiler for closures with def args.Damien George
2014-03-26py: Support closures with default args.Paul Sokolovsky
2014-03-22Fixed floor division on mp ints and small ints. Added a floordivide test case.Rachel Dowdall
2014-03-22Fixed modulo operator on ints and mp ints to agree with python. Added ↵Rachel Dowdall
intdivmod.c and tests/basics/modulo.py.
2014-03-17py: Clean up includes.xbe
Remove unnecessary includes. Add includes that improve portability.
2014-03-03py: Unify syntax error handling in compiler; check defualt arg syntax.Damien George
Checks for non-default args following default args, and errors out. Addresses issue #328.
2014-02-26py: Remove name of var arg from macros with var args.Damien George
2014-02-22parse: Refactor parse node encoding to support full range of small ints.Paul Sokolovsky
Based on suggestion by @dpgeorge at https://github.com/micropython/micropython/pull/313
2014-02-21parse: Note that fact that parser's small ints are different than VM small int.Paul Sokolovsky
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().
2014-02-20compile: Add comments ergarding non-implemented relative imports.Paul Sokolovsky
2014-02-15py: Pass all scope flags through to runtime.Damien George
2014-02-12Replace global "static" -> "STATIC", to allow "analysis builds". Part 2.Paul Sokolovsky
2014-02-10Clean up handling of function return type annotation.Paul Sokolovsky
2014-02-06py: Fix compile of class with keyword arguments in bases.Damien George
2014-02-05py: Add built-in super.Damien George
2014-02-01py: Tidy up BINARY_OPs; negation done by special NOT bytecode.Damien George
IS_NOT and NOT_IN are now compiled to IS + NOT and IN + NOT, with a new special NOT bytecode.
2014-02-01py: Reduce code size of compiler by a bit.Damien George
2014-02-01py: Implement break/continue from an exception with finally.Damien George
Still todo: break/continue from within the finally block itself.
2014-02-01Implement default function arguments (for Python functions).Paul Sokolovsky
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.
2014-01-29py: Fix bug with LOAD_METHOD; fix int->machine_int_t for small int.Damien George
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.
2014-01-28py: Implement 'not' in compiler, and improve rt_is_true.Damien George
2014-01-24py: Improve freeing of emitters in mp_compile.Damien George
There can be multiple emitters allocated during compile (eg byte code and native).
2014-01-24Add support for freeing code emitter objects at the end of compilation.Paul Sokolovsky
2014-01-23mp_compile(): Properly free module_scope and all nested scopes.Paul Sokolovsky
2014-01-23py: Use C99 way of variable macro arguments.Damien George
Addresses Issue #207.
2014-01-23py: Change macro var args in parser to be C99 compliant.Damien George
2014-01-21py: Implement break and continue byte codes, and add tests.Damien George
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).
2014-01-21Revamp qstrs: they now include length and hash.Damien George
Can now have null bytes in strings. Can define ROM qstrs per port using qstrdefsport.h
2014-01-19py: Add module/function/class name to exceptions.Damien George
Exceptions know source file, line and block name. Also tidy up some debug printing functions and provide a global flag to enable/disable them.
2014-01-18Add source file name and line number to error messages.Damien George
Byte code has a map from byte-code offset to source-code line number, used to give better error messages.
2014-01-15Implement eval.Damien George
2014-01-12py: AssertionError is loaded from global, to match CPython.Damien George
2014-01-11unified the bopsJohn R. Lenton
2014-01-11compile_for_stmt_optimised_range(): Properly handle negative & unknown steps.Paul Sokolovsky
If step is not constant, in first approximation, we can't apply optimization, (well, we could, but need a special case for this).
2014-01-04Convert Python types to proper Python type hierarchy.Damien George
Now much more inline with how CPython does types.
2014-01-04Split qstr into pools, and put initial pool in ROM.Damien George
Qstr's are now split into a linked-list of qstr pools. This has 2 benefits: the first pool can be in ROM (huge benefit, since we no longer use RAM for the core qstrs), and subsequent pools use m_new for the next pool instead of m_renew (thus avoiding a huge single table for all the qstrs). Still would be better to use a hash table, but this scheme takes us part of the way (eventually convert the pools to hash tables). Also fixed bug with import. Also improved the way the module code is referenced (not magic number 1 anymore).
2014-01-04Improve configurability for native x64/thumb emitter.Damien George
With MICROPY_EMIT_X64 and MICROPY_EMIT_THUMB disabled, the respective emitters and assemblers will not be included in the code. This can significantly reduce binary size for unix version.
2014-01-03Change mp_compile so that it returns a function object for the module.Damien George
2014-01-02py: remove depedence on strcat and stpcpy.Damien George
This fixes Issue #29, and means the core is no longer dependent on string functions, except strlen.
2013-12-30py: make closures work.Damien George
2013-12-29Change memory allocation API to require size for free and realloc.Damien
2013-12-21Change object representation from 1 big union to individual structs.Damien
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).