aboutsummaryrefslogtreecommitdiff
path: root/py/emitbc.c
AgeCommit message (Collapse)Author
2014-02-20emitbc: Correct buffer sizes for varlen int encoding.Paul Sokolovsky
Assuming we have truncating (floor) division, way to do ceiling division by N is to use formula (x + (N-1)) / N. Specifically, 63 bits, if stored 7 bits per byte, require exactly 9 bytes. 64 bits overflow that and require 10 bytes.
2014-02-19Bytecode int varlen encoding: support arbitrary values for signed ints too.Paul Sokolovsky
2014-02-19Bytecode uint varlen encoding: support arbitrary values.Paul Sokolovsky
2014-02-16Support passing positional args as keywords to bytecode functions.Paul Sokolovsky
For this, record argument names along with each bytecode function. The code still includes extensive debug logging support so far.
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-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: Implement break/continue from an exception with finally.Damien George
Still todo: break/continue from within the finally block itself.
2014-02-01py: mp_execute_byte_code has 2 arg arrays, for more efficient default params.Damien George
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: Add compile option to enable/disable source line numbers.Damien George
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-25py: Optimise generated code for working out line numbers.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-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-11Merge branch 'master' of github.com:dpgeorge/micropythonDamien George
2014-01-11py: Make arg to MP_BC_RAISE_VARARGS a byte.Damien George
2014-01-11unified the bopsJohn R. Lenton
2014-01-04Add ellipsis object.Damien George
2014-01-03Change mp_compile so that it returns a function object for the module.Damien George
2013-12-30py: make closures work.Damien George
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).
2013-12-12py: remove further unnecessary emit_verbatim code.Damien
2013-12-11py: work towards working closures.Damien
2013-11-05Make byte code jumps relative.Damien
2013-11-04Byte code for SMALL_INT uses 3 bytes for integer.Damien
2013-10-20Add local_num skeleton framework to deref/closure emit calls.Damien
2013-10-18Remove line in emitbc.c to print code size.Damien
2013-10-16Implement BC & runtime support for generator/yielding.Damien
2013-10-12Separate out mpy core and unix version.Damien
2013-10-10Simplify and improve function & method calling.Damien
2013-10-10Implement basic class/object in native code.Damien
2013-10-09Implement basic class/object functionality in runtime.Damien
2013-10-05Add support for inline thumb assembly.Damien
2013-10-05Implement built-in decorators to select emit type.Damien
2013-10-05Factorise EMIT_COMMON calls, mostly into emit_pass1.Damien
2013-10-05Compiler computes labels and max_num_labels.Damien
2013-10-05Further factorise PASS_1 out of specific emit code.Damien
2013-10-05Restructure emit so it goes through a method table.Damien
2013-10-04Initial commit.Damien