micropython/py
Damien George ea23520403 py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime.
This new compile-time option allows to make the bytecode compiler
configurable at runtime by setting the fields in the mp_dynamic_compiler
structure.  By using this feature, the compiler can generate bytecode
that targets any MicroPython runtime/VM, regardless of the host and
target compile-time settings.

Options so far that fall under this dynamic setting are:
- maximum number of bits that a small int can hold;
- whether caching of lookups is used in the bytecode;
- whether to use unicode strings or not (lexer behaviour differs, and
  therefore generated string constants differ).
2016-02-25 10:05:46 +00:00
..
argcheck.c py: Use mp_not_implemented consistently for not implemented features. 2015-09-03 23:14:06 +01:00
asmarm.c py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmarm.h py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
asmthumb.c py/asmthumb: Allow to compile with -Wsign-compare and -Wunused-parameter. 2015-11-09 14:11:21 +00:00
asmthumb.h py: Add lsl/lsr/asr opcode support to inline Thumb2 assembler. 2015-10-19 14:26:19 +01:00
asmx64.c py/asmx64: Support all 16 regs in reg to memory move instructions. 2016-02-15 09:05:50 +00:00
asmx64.h py: Implement ptr32 load and store in viper emitter. 2015-10-13 00:50:17 +01:00
asmx86.c py/asmx86: Fix function definition to use int32_t instead of int. 2015-11-27 14:06:53 +00:00
asmx86.h py: Implement native multiply operation in viper emitter. 2015-06-04 14:00:29 +00:00
bc.c py/bc: Update opcode format table now that MP_BC_NOT opcode is gone. 2016-01-28 16:11:41 +00:00
bc.h py/bc: Use size_t instead of mp_uint_t to count size of state and args. 2015-12-17 12:33:42 +00:00
bc0.h py: Make UNARY_OP_NOT a first-class op, to agree with Py not semantics. 2015-12-10 22:19:48 +00:00
binary.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
binary.h py/binary: Make return type of mp_binary_get_size size_t instead of int. 2015-05-17 18:12:19 +01:00
builtin.h extmod/modurandom: Add "urandom" module. 2016-01-17 12:13:01 +02:00
builtinevex.c py: Change type signature of builtin funs that take variable or kw args. 2016-01-11 00:49:27 +00:00
builtinimport.c py: Change type signature of builtin funs that take variable or kw args. 2016-01-11 00:49:27 +00:00
compile.c py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
compile.h py/compile: Add mp_compile_to_raw_code() to return raw code object. 2015-11-20 12:30:37 +00:00
emit.h py/inlineasm: Add ability to specify return type of asm_thumb funcs. 2016-01-27 14:27:10 +00:00
emitbc.c py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
emitcommon.c py: Add MICROPY_ENABLE_COMPILER and MICROPY_PY_BUILTINS_EVAL_EXEC opts. 2015-12-18 12:35:44 +00:00
emitglue.c py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
emitglue.h py/emitglue: Add mp_raw_code_load_mem to load raw-code from memory. 2015-11-20 12:44:20 +00:00
emitinlinethumb.c py/emitinlinethumb: Use qstrs instead of char* for names of asm ops. 2016-02-23 15:20:39 +00:00
emitnative.c py/emitnative: Add check that RHS of viper store is of integral type. 2016-02-15 09:38:02 +00:00
formatfloat.c py/formatfloat: Add ability to format doubles with exponents > 99. 2016-01-29 11:39:12 +00:00
formatfloat.h py: Implement mp_format_float for doubles and use where appropriate 2015-05-17 21:47:11 +01:00
frozenmod.c py/frozenmod: Store frozen module names together, to quickly scan them. 2016-01-03 18:08:45 +02:00
frozenmod.h py: Implement very simple frozen modules support. 2015-01-20 11:52:12 +02:00
gc.c py/gc: Improve mark/sweep debug output. 2015-12-27 20:40:36 +02:00
gc.h py/gc: Move away from using mp_uint_t, instead use uintptr_t and size_t. 2015-11-29 14:25:04 +00:00
grammar.h py/compile: Do proper checking of * and ** in function definition. 2015-11-23 16:50:42 +00:00
lexer.c py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
lexer.h unix: Allow to cat a script into stdin from the command line. 2015-06-04 23:42:45 +01:00
lexerstr.c py: Add MICROPY_ENABLE_COMPILER and MICROPY_PY_BUILTINS_EVAL_EXEC opts. 2015-12-18 12:35:44 +00:00
lexerunix.c unix: Allow to cat a script into stdin from the command line. 2015-06-04 23:42:45 +01:00
makeqstrdata.py py/makeqstrdata.py: Catch and report case of empty input file. 2015-10-11 11:09:57 +03:00
makeversionhdr.py py/makeversionhdr.py: Work with backslashes in paths. 2015-10-30 11:34:53 +03:00
malloc.c py/malloc: Provide a proper malloc-based implementation of realloc_ext. 2016-02-23 13:53:38 +00:00
map.c py/map: In map lookup, check for fixed map independent of ordered map. 2015-12-31 00:24:33 +00:00
misc.h py/repl: Check for an identifier char after the keyword. 2016-02-17 08:56:15 +00:00
mkenv.mk py: Allow to to build MicroPython as a static library. 2015-10-12 15:32:06 +03:00
mkrules.mk py/mkrules.mk: Don't pass COPT to linker. 2015-12-10 00:49:25 +02:00
modarray.c py: Add MP_ROM_* macros and mp_rom_* types and use them. 2015-11-29 14:25:04 +00:00
modbuiltins.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
modcmath.c py: Make it easy to build without MICROPY_PY_BUILTINS_COMPLEX. 2015-12-07 00:19:24 +02:00
modcollections.c py: Add MP_ROM_* macros and mp_rom_* types and use them. 2015-11-29 14:25:04 +00:00
modgc.c py/modgc: Remove obsolete extern declaration. 2015-12-17 13:20:40 +00:00
modio.c py: Add MP_ROM_* macros and mp_rom_* types and use them. 2015-11-29 14:25:04 +00:00
modmath.c py: Change type signature of builtin funs that take variable or kw args. 2016-01-11 00:49:27 +00:00
modmicropython.c py/modmicropython: Add stack_use, heap_lock and heap_unlock functions. 2016-01-24 09:12:06 +00:00
modstruct.c py: Add ustruct.pack_into and unpack_from 2016-01-19 12:25:28 +00:00
modsys.c py: Change type signature of builtin funs that take variable or kw args. 2016-01-11 00:49:27 +00:00
mpconfig.h py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
mphal.h all: Add py/mphal.h and use it in all ports. 2015-10-31 19:14:30 +03:00
mpprint.c py/mpprint: Fix sign extension when printf'ing %u, %x and %X. 2016-02-01 15:08:42 +00:00
mpprint.h py: Change mp_print_strn_t func type to use size_t for the str length. 2015-11-29 14:25:04 +00:00
mpstate.c py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
mpstate.h py: Add MICROPY_DYNAMIC_COMPILER option to config compiler at runtime. 2016-02-25 10:05:46 +00:00
mpz.c py/mpz: Add commented-out mpz_pow3_inpl function, to compute (x**y)%z. 2016-02-03 22:30:49 +00:00
mpz.h windows/py: Support 64bit mingw-w64 builds 2015-11-24 17:34:14 +02:00
nativeglue.c py/viper: Allow casting of Python integers to viper pointers. 2016-02-09 13:29:20 +00:00
nlr.h py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
nlrsetjmp.c py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
nlrthumb.S py/nlrthumb: Make compatible with Cortex-M0 (ARMv6M instr set). 2015-10-20 13:26:34 +01:00
nlrx64.S nlr: Use single preprocessor symbol to check if building on Windows 2015-11-24 17:34:14 +02:00
nlrx86.S nlr: Use single preprocessor symbol to check if building on Windows 2015-11-24 17:34:14 +02:00
nlrxtensa.S py: Put all global state together in state structures. 2015-01-07 20:33:00 +00:00
obj.c py: Change exception traceback data to use size_t instead of mp_uint_t. 2016-01-02 22:04:12 +00:00
obj.h py/obj.h: If not float support is enabled, define mp_obj_is_float(o) to false. 2016-02-14 19:12:57 +02:00
objarray.c py/objarray: Implement "in" operator for bytearray. 2016-02-14 18:57:11 +02:00
objattrtuple.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
objbool.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objboundmeth.c py: Change type of .make_new and .call args: mp_uint_t becomes size_t. 2016-01-11 00:48:41 +00:00
objcell.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
objclosure.c py: Change type of .make_new and .call args: mp_uint_t becomes size_t. 2016-01-11 00:48:41 +00:00
objcomplex.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objdict.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objenumerate.c py: Use new code pattern for parsing kw args with mp_arg_parse_all. 2016-01-13 15:47:56 +00:00
objexcept.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objexcept.h py: Change exception traceback data to use size_t instead of mp_uint_t. 2016-01-02 22:04:12 +00:00
objfilter.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objfloat.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objfun.c py: Extend native type-sig to use 4 bits, so uint is separate to ptr. 2016-02-02 23:16:05 +00:00
objfun.h py: Add constant table to bytecode. 2015-11-13 12:49:18 +00:00
objgenerator.c py: Change type signature of builtin funs that take variable or kw args. 2016-01-11 00:49:27 +00:00
objgenerator.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objgetitemiter.c py/objgetitemiter: Typo fix in comment. 2016-01-23 23:30:06 +02:00
objint.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objint.h py: Change mp_obj_int_is_positive to more general mp_obj_int_sign. 2016-01-07 14:29:12 +00:00
objint_longlong.c py: Change mp_obj_int_is_positive to more general mp_obj_int_sign. 2016-01-07 14:29:12 +00:00
objint_mpz.c py: Change mp_obj_int_is_positive to more general mp_obj_int_sign. 2016-01-07 14:29:12 +00:00
objlist.c py: Use new code pattern for parsing kw args with mp_arg_parse_all. 2016-01-13 15:47:56 +00:00
objlist.h py: Fix adding of traceback so that it appends to existing info. 2015-02-27 00:36:39 +00:00
objmap.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objmodule.c extmod/modurandom: Add "urandom" module. 2016-01-17 12:13:01 +02:00
objmodule.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
objnamedtuple.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objnone.c py: Convert hash API to use MP_UNARY_OP_HASH instead of ad-hoc function. 2015-05-12 22:46:02 +01:00
objobject.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objpolyiter.c py/objpolyiter: Implement instance-polymorphic iterator type. 2015-12-14 23:48:12 +02:00
objproperty.c py/objproperty: Fix static struct to build with OBJ_REPR_D. 2016-01-15 11:09:20 +00:00
objrange.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objreversed.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objset.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objsingleton.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
objslice.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
objstr.c py/objarray: Implement "in" operator for bytearray. 2016-02-14 18:57:11 +02:00
objstr.h py/objarray: Implement "in" operator for bytearray. 2016-02-14 18:57:11 +02:00
objstringio.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objstrunicode.c py: Use polymorphic iterator type where possible to reduce code size. 2016-01-03 16:27:55 +00:00
objtuple.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objtuple.h py: Add MP_ROM_* macros and mp_rom_* types and use them. 2015-11-29 14:25:04 +00:00
objtype.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objtype.h py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
objzip.c py: Change first arg of type.make_new from mp_obj_t to mp_obj_type_t*. 2016-01-11 00:49:27 +00:00
opmethods.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
parse.c py/parse: Use m_renew_maybe to ensure that memory is shrunk in-place. 2016-02-23 13:44:29 +00:00
parse.h py/parse: Improve constant folding to operate on small and big ints. 2016-01-07 14:40:35 +00:00
parsenum.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
parsenum.h py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
parsenumbase.c py: Parse big-int/float/imag constants directly in parser. 2015-02-08 01:57:40 +00:00
parsenumbase.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
py.mk extmod/vfs_fat_ffconf: Reusable FatFs module, move from stmhal/ffconf. 2016-02-15 00:19:27 +02:00
qstr.c py/qstr: Use size_t instead of mp_uint_t when counting allocated bytes. 2015-12-17 12:41:40 +00:00
qstr.h py/qstr: Change type of qstr from mp_uint_t to size_t. 2015-12-17 12:45:22 +00:00
qstrdefs.h py/emitinlinethumb: Use qstrs instead of char* for names of asm ops. 2016-02-23 15:20:39 +00:00
repl.c py/repl: Check for an identifier char after the keyword. 2016-02-17 08:56:15 +00:00
repl.h py, readline: Add tab autocompletion for REPL. 2015-04-29 00:46:26 +01:00
runtime.c py/runtime: mp_stack_ctrl_init() should be called immediately on startup. 2016-01-29 02:13:42 +02:00
runtime.h py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
runtime0.h py: Extend native type-sig to use 4 bits, so uint is separate to ptr. 2016-02-02 23:16:05 +00:00
scope.c py: Add MICROPY_ENABLE_COMPILER and MICROPY_PY_BUILTINS_EVAL_EXEC opts. 2015-12-18 12:35:44 +00:00
scope.h py: Put all bytecode state (arg count, etc) in bytecode. 2015-11-13 12:49:18 +00:00
sequence.c py: Wrap all obj-ptr conversions in MP_OBJ_TO_PTR/MP_OBJ_FROM_PTR. 2015-11-29 14:25:35 +00:00
showbc.c py: Make UNARY_OP_NOT a first-class op, to agree with Py not semantics. 2015-12-10 22:19:48 +00:00
smallint.c py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
smallint.h py/smallint: Allow to override MP_SMALL_INT_MIN et al. 2016-01-08 13:43:56 +00:00
stackctrl.c vm: Support strict stackless mode, with proper exception reporting. 2015-04-03 00:26:47 +03:00
stackctrl.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
stream.c py: Change type signature of builtin funs that take variable or kw args. 2016-01-11 00:49:27 +00:00
stream.h py: Add mp_get_stream_raise to factor out check for stream methods. 2015-12-09 18:47:43 +00:00
unicode.c py/repl: Check for an identifier char after the keyword. 2016-02-17 08:56:15 +00:00
unicode.h py: Move to guarded includes, everywhere in py/ core. 2015-01-01 20:32:09 +00:00
vm.c py/vm: Add macros to hook into various points in the VM. 2016-02-17 09:02:19 +00:00
vmentrytable.h py: Make UNARY_OP_NOT a first-class op, to agree with Py not semantics. 2015-12-10 22:19:48 +00:00
vstr.c py: Prevent many extra vstr allocations. 2015-07-06 17:29:27 +01:00
warning.c py: Convert occurrences of non-debug printf to mp_printf. 2015-04-16 14:30:16 +00:00