Damien George
600ae734cf
py: Implement break and continue byte codes, and add tests.
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).
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
d02c6d8962
Implement eval.
11 years ago
Damien George
e5863d9301
py: AssertionError is loaded from global, to match CPython.
11 years ago
John R. Lenton
b8698fca75
unified the bops
11 years ago
Paul Sokolovsky
899c69f94c
compile_for_stmt_optimised_range(): Properly handle negative & unknown steps.
If step is not constant, in first approximation, we can't apply optimization,
(well, we could, but need a special case for this).
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
71c5181a8d
Convert Python types to proper Python type hierarchy.
Now much more inline with how CPython does types.
11 years ago
Damien George
eb7bfcb286
Split qstr into pools, and put initial pool in ROM.
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).
11 years ago
Damien George
e67ed5d285
Improve configurability for native x64/thumb emitter.
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.
11 years ago
Damien George
1fb031744f
Change mp_compile so that it returns a function object for the module.
11 years ago
Damien George
fe8fb9165c
py: remove depedence on strcat and stpcpy.
This fixes Issue #29 , and means the core is no longer dependent on
string functions, except strlen.
11 years ago
Damien George
6baf76e28b
py: make closures work.
11 years ago
Damien
732407f1bf
Change memory allocation API to require size for free and realloc.
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
e2880aa2fd
Fix a few compiler warnings.
11 years ago
Damien
a1b2693161
py: remove further unnecessary emit_verbatim code.
11 years ago
Damien
e388f1034e
py: fix bug with doc string not recognised after first newline of file.
11 years ago
Damien
02f8941bf6
py: reduce use of emit_verbatim calls to minimum.
11 years ago
Damien
9ecbcfff99
py: work towards working closures.
11 years ago
Damien
318aec6ba9
py: emit correct id for closed over variables.
11 years ago
Damien
6332174ab4
py: compiler supports string juxtaposition=concatenation.
11 years ago
Damien
db4c361f1c
py: add skeletal import functionality.
11 years ago
Damien
d79338969b
py: restrict further when for-range optimisation is done.
11 years ago
Damien
0446a0d76d
Change some debugging/output messages for native code generation.
11 years ago
Damien
f3822fc34c
Fix but with optimised range being 1 over.
11 years ago
Damien
f72fd0e875
Add optimisation for "for x in range".
11 years ago
Damien
27fb45eb1c
Add local_num skeleton framework to deref/closure emit calls.
11 years ago
Damien
5ac1b2efbd
Implement REPL.
11 years ago
Damien
ce89a21ea4
Implement basic exception framework, and simple for loop.
11 years ago
Damien
3ef4abb446
Change ifdef/if defined to simple if's.
11 years ago
Damien
0efb3a1b66
Tidy up SMALL_INT optimisations and CPython compatibility.
11 years ago
Damien
3a205179ea
Option in compile.c to emit compatible or not with CPython.
11 years ago
Damien
c025ebb2dc
Separate out mpy core and unix version.
11 years ago
Damien
91d387de7d
Improve indent/dedent error checking and reporting.
11 years ago
Damien
13ed3a658d
Native Python and Viper support for x64 and thumb all together.
11 years ago
Damien
3410be8035
Merge viper types with standard native emitter.
11 years ago
Damien
7af3d19a3c
Implement crude viper emit stage.
11 years ago
Damien
dc83382903
Make runtime able to call inline asm with 1 argument.
11 years ago
Damien
b14de21fc8
Optimise typedargslist_name to not create a node if just an id.
11 years ago
Damien
a2f2f7db1f
Almost supports arguments for inline asm functions.
11 years ago
Damien
826005c60b
Add support for inline thumb assembly.
11 years ago
Damien
5bfb759980
Incorporate emit_thumb into new emit framework.
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