diff options
author | Damien George <damien.p.george@gmail.com> | 2016-02-11 22:30:53 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-02-25 10:05:46 +0000 |
commit | ea23520403777f9b026f49245d39f8be1ccdbdac (patch) | |
tree | 949532b08d2614af11e8616a2d902ac8ca9ad3c2 /py/mpconfig.h | |
parent | 57b96a7be214c8f2493db7d430348f5efcc8ad34 (diff) | |
download | micropython-ea23520403777f9b026f49245d39f8be1ccdbdac.tar.gz micropython-ea23520403777f9b026f49245d39f8be1ccdbdac.zip |
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).
Diffstat (limited to 'py/mpconfig.h')
-rw-r--r-- | py/mpconfig.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h index cd9380aa6e..39070b712e 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -283,6 +283,20 @@ #define MICROPY_ENABLE_COMPILER (1) #endif +// Whether the compiler is dynamically configurable (ie at runtime) +#ifndef MICROPY_DYNAMIC_COMPILER +#define MICROPY_DYNAMIC_COMPILER (0) +#endif + +// Configure dynamic compiler macros +#if MICROPY_DYNAMIC_COMPILER +#define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE_DYNAMIC (mp_dynamic_compiler.opt_cache_map_lookup_in_bytecode) +#define MICROPY_PY_BUILTINS_STR_UNICODE_DYNAMIC (mp_dynamic_compiler.py_builtins_str_unicode) +#else +#define MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE_DYNAMIC MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE +#define MICROPY_PY_BUILTINS_STR_UNICODE_DYNAMIC MICROPY_PY_BUILTINS_STR_UNICODE +#endif + // Whether to enable constant folding; eg 1+2 rewritten as 3 #ifndef MICROPY_COMP_CONST_FOLDING #define MICROPY_COMP_CONST_FOLDING (1) |