Damien George
9aa2a527b5
py: Tidy up BINARY_OPs; negation done by special NOT bytecode.
IS_NOT and NOT_IN are now compiled to IS + NOT and IN + NOT, with a new
special NOT bytecode.
11 years ago
Damien George
cbddb279bb
py: Implement break/continue from an exception with finally.
Still todo: break/continue from within the finally block itself.
11 years ago
Damien George
fb083ea986
py: mp_execute_byte_code has 2 arg arrays, for more efficient default params.
11 years ago
Paul Sokolovsky
90750029df
Implement default function arguments (for Python functions).
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.
11 years ago
Damien George
62ad189a65
py: Add compile option to enable/disable source line numbers.
11 years ago
Damien George
08d075592f
py: Fix bug with LOAD_METHOD; fix int->machine_int_t for small int.
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.
11 years ago
Damien George
28eb57786d
py: Optimise generated code for working out line numbers.
11 years ago
Damien George
41d02b654e
py: Improve freeing of emitters in mp_compile.
There can be multiple emitters allocated during compile (eg byte code
and native).
11 years ago
Paul Sokolovsky
f46d87a30d
Add support for freeing code emitter objects at the end of compilation.
11 years ago
Damien George
55baff4c9b
Revamp qstrs: they now include length and hash.
Can now have null bytes in strings. Can define ROM qstrs per port using
qstrdefsport.h
11 years ago
Damien George
cbd2f7482c
py: Add module/function/class name to exceptions.
Exceptions know source file, line and block name.
Also tidy up some debug printing functions and provide a global
flag to enable/disable them.
11 years ago
Damien George
08335004cf
Add source file name and line number to error messages.
Byte code has a map from byte-code offset to source-code line number,
used to give better error messages.
11 years ago
Damien George
25042b19d2
py: Make arg to MP_BC_RAISE_VARARGS a byte.
11 years ago
John R. Lenton
b8698fca75
unified the bops
11 years ago
ian-v
5fd8fd2c16
Revert MP_BOOL, etc. and use <stdbool.h> instead
11 years ago
ian-v
7a16fadbf8
Co-exist with C++ (issue #85 )
11 years ago
Damien George
e9906ac3d7
Add ellipsis object.
11 years ago
Damien George
1fb031744f
Change mp_compile so that it returns a function object for the module.
11 years ago
Damien George
6baf76e28b
py: make closures work.
11 years ago
Damien
d99b05282d
Change object representation from 1 big union to individual structs.
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).
11 years ago
Damien
a1b2693161
py: remove further unnecessary emit_verbatim code.
11 years ago
Damien
9ecbcfff99
py: work towards working closures.
11 years ago
Damien
03c9cfb015
Make byte code jumps relative.
11 years ago
Damien
6addc89e55
Byte code for SMALL_INT uses 3 bytes for integer.
11 years ago
Damien
27fb45eb1c
Add local_num skeleton framework to deref/closure emit calls.
11 years ago
Damien
7bbd110691
Remove line in emitbc.c to print code size.
11 years ago
Damien
bd25445a82
Implement BC & runtime support for generator/yielding.
11 years ago
Damien
c025ebb2dc
Separate out mpy core and unix version.
11 years ago
Damien
eb19efb27e
Simplify and improve function & method calling.
11 years ago
Damien
7f5dacf345
Implement basic class/object in native code.
11 years ago
Damien
a397776d6b
Implement basic class/object functionality in runtime.
11 years ago
Damien
826005c60b
Add support for inline thumb assembly.
11 years ago
Damien
6cdd3af601
Implement built-in decorators to select emit type.
11 years ago
Damien
4b03e77d4a
Factorise EMIT_COMMON calls, mostly into emit_pass1.
11 years ago
Damien
054848a1b8
Compiler computes labels and max_num_labels.
11 years ago
Damien
b05d707b23
Further factorise PASS_1 out of specific emit code.
11 years ago
Damien
415eb6f850
Restructure emit so it goes through a method table.
11 years ago
Damien
429d71943d
Initial commit.
11 years ago