summaryrefslogtreecommitdiffstatshomepage
path: root/py/mpconfig.h
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2016-02-11 22:30:53 +0000
committerDamien George <damien.p.george@gmail.com>2016-02-25 10:05:46 +0000
commitea23520403777f9b026f49245d39f8be1ccdbdac (patch)
tree949532b08d2614af11e8616a2d902ac8ca9ad3c2 /py/mpconfig.h
parent57b96a7be214c8f2493db7d430348f5efcc8ad34 (diff)
downloadmicropython-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.h14
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)