- 20 Nov, 2015 2 commits
-
-
Damien George authored
-
Damien George authored
Here we are assuming that a thumb2 port will have fatfs, which is only roughly true. We need a better way of enabling specific raw-code file readers.
-
- 13 Nov, 2015 3 commits
-
-
Damien George authored
MICROPY_PERSISTENT_CODE must be enabled, and then enabling MICROPY_PERSISTENT_CODE_LOAD/SAVE (either or both) will allow loading and/or saving of code (at the moment just bytecode) from/to a .mpy file.
-
Damien George authored
Contains just argument names at the moment but makes it easy to add arbitrary constants.
-
Damien George authored
-
- 07 Apr, 2015 1 commit
-
-
Damien George authored
This patch gets full function argument passing working with native emitter. Includes named args, keyword args, default args, var args and var keyword args. Fully Python compliant. It reuses the bytecode mp_setup_code_state function to do all the hard work. This function is slightly adjusted to accommodate native calls, and the native emitter is forced a bit to emit similar prelude and code-info as bytecode.
-
- 24 Jan, 2015 1 commit
-
-
Damien George authored
This makes the code (more) compatible with the C99 standard.
-
- 20 Jan, 2015 1 commit
-
-
Damien George authored
See issue #699.
-
- 14 Jan, 2015 1 commit
-
-
Damien George authored
This helps compiler produce smaller code. Saves 124 bytes on stmhal and bare-arm.
-
- 01 Jan, 2015 1 commit
-
-
Damien George authored
Addresses issue #1022.
-
- 26 Oct, 2014 1 commit
-
-
Paul Sokolovsky authored
Also, move bytecode dumps to -v -v, because they're too verbose for just -v.
-
- 25 Oct, 2014 1 commit
-
-
Damien George authored
This saves a lot of RAM for 2 reasons: 1. For functions that don't have default values, var args or var kw args (which is a large number of functions in the general case), the mp_obj_fun_bc_t type now fits in 1 GC block (previously needed 2 because of the extra pointer to point to the arg_names array). So this saves 16 bytes per function (32 bytes on 64-bit machines). 2. Combining separate memory regions generally saves RAM because the unused bytes at the end of the GC block are saved for 1 of the blocks (since that block doesn't exist on its own anymore). So generally this saves 8 bytes per function. Tested by importing lots of modules: - 64-bit Linux gave about an 8% RAM saving for 86k of used RAM. - pyboard gave about a 6% RAM saving for 31k of used RAM.
-
- 24 Oct, 2014 1 commit
-
-
Damien George authored
Also move the raw bytecode printing code from emitglue to mp_bytecode_print.
-
- 26 Aug, 2014 1 commit
-
-
Damien George authored
With a file with 1 line (and an error on that line), used to show the line as number 0. Now shows it correctly as line number 1. But, when line numbers are disabled, it now prints line number 1 for any line that has an error (instead of 0 as previously). This might end up being confusing, but requires extra RAM and/or hack logic to make it print something special in the case of no line numbers.
-
- 24 Aug, 2014 1 commit
-
-
Damien George authored
Because (for Thumb) a function pointer has the LSB set, pointers to dynamic functions in RAM (eg native, viper or asm functions) were not being traced by the GC. This patch is a comprehensive fix for this. Addresses issue #820.
-
- 15 Aug, 2014 1 commit
-
-
Damien George authored
Viper functions can now be annotated with the type of their arguments and return value. Eg: @micropython.viper def f(x:int) -> int: return x + 1
-
- 03 Jul, 2014 1 commit
-
-
Damien George authored
See discussion in issue #50.
-
- 21 Jun, 2014 1 commit
-
-
Paul Sokolovsky authored
It defines types used by all other headers. Fixes #691.
-
- 07 Jun, 2014 2 commits
-
-
Damien George authored
Should finish addressing issue #524.
-
Paul Sokolovsky authored
Benefits: won't crash baremetal targets, will provide Python source location when not implemented feature used (it will no longer provide C source location, but just grep for error message).
-
- 02 Jun, 2014 2 commits
-
-
Paul Sokolovsky authored
-
Paul Sokolovsky authored
-
- 12 May, 2014 1 commit
-
-
Damien George authored
Debugging output for emit_glue now simplified so that the init and deinit functions are no longer needed.
-
- 10 May, 2014 2 commits
-
-
Damien George authored
This patch simplifies the glue between native emitter and runtime, and handles viper code like inline assember: return values are converted to Python objects. Fixes issue #531.
-
Damien George authored
bytecode is the more widely used. See issue #590.
-
- 04 May, 2014 1 commit
-
-
Paul Sokolovsky authored
This will work if MICROPY_DEBUG_PRINTERS is defined, which is only for unix/windows ports. This makes it convenient to user uPy normally, but easily get bytecode dump on the spot if needed, without constant recompiles back and forth. TODO: Add more useful debug output, adjust verbosity level on which specifically bytecode dump happens.
-
- 03 May, 2014 1 commit
-
-
Damien George authored
Blanket wide to all .c and .h files. Some files originating from ST are difficult to deal with (license wise) so it was left out of those. Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
-
- 27 Apr, 2014 1 commit
-
-
Damien George authored
Implements 'def f(*, a)' and 'def f(*a, b)', but not default keyword-only args, eg 'def f(*, a=1)'. Partially addresses issue #524.
-
- 23 Apr, 2014 1 commit
-
-
Paul Sokolovsky authored
-
- 20 Apr, 2014 1 commit
-
-
Damien George authored
Closed over variables are now passed on the stack, instead of creating a tuple and passing that. This way memory for the closed over variables can be allocated within the closure object itself. See issue #510 for background.
-
- 13 Apr, 2014 1 commit
-
-
Damien George authored
Attempt to address issue #386. unique_code_id's have been removed and replaced with a pointer to the "raw code" information. This pointer is stored in the actual byte code (aligned, so the GC can trace it), so that raw code (ie byte code, native code and inline assembler) is kept only for as long as it is needed. In memory it's now like a tree: the outer module's byte code points directly to its children's raw code. So when the outer code gets freed, if there are no remaining functions that need the raw code, then the children's code gets freed as well. This is pretty much like CPython does it, except that CPython stores indexes in the byte code rather than machine pointers. These indices index the per-function constant table in order to find the relevant code.
-
- 12 Apr, 2014 1 commit
-
-
Damien George authored
-
- 11 Apr, 2014 1 commit
-
-
Damien George authored
This simplifies the compiler a little, since now it can do 1 pass over a function declaration, to determine default arguments. I would have done this originally, but CPython 3.3 somehow had the default keyword args compiled before the default position args (even though they appear in the other order in the text of the script), and I thought it was important to have the same order of execution when evaluating default arguments. CPython 3.4 has changed the order to the more obvious one, so we can also change.
-
- 06 Apr, 2014 1 commit
-
-
Damien George authored
On x64, native emitter now passes 70 of the tests.
-
- 31 Mar, 2014 1 commit
-
-
Damien George authored
These are default arguments after a bare *.
-
- 30 Mar, 2014 1 commit
-
-
Damien George authored
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.
-
- 29 Mar, 2014 1 commit
-
-
Damien George authored
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).
-
- 28 Mar, 2014 1 commit
-
-
Damien George authored
show_bc now decodes the prelude correctly. Moved WRITE_FILE stuff from runtime.c to emitglue.c. Addresses issue #385.
-
- 27 Mar, 2014 1 commit
-
-
Damien George authored
-