From 93c4a6a3f70e389b466fbc7a4f1ad2e1df87c93f Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 21 Sep 2016 10:52:53 +1000 Subject: all: Remove 'name' member from mp_obj_module_t struct. One can instead lookup __name__ in the modules dict to get the value. --- py/modmicropython.c | 1 - 1 file changed, 1 deletion(-) (limited to 'py/modmicropython.c') diff --git a/py/modmicropython.c b/py/modmicropython.c index 805bda51d..31ae7025f 100644 --- a/py/modmicropython.c +++ b/py/modmicropython.c @@ -145,6 +145,5 @@ STATIC MP_DEFINE_CONST_DICT(mp_module_micropython_globals, mp_module_micropython const mp_obj_module_t mp_module_micropython = { .base = { &mp_type_module }, - .name = MP_QSTR_micropython, .globals = (mp_obj_dict_t*)&mp_module_micropython_globals, }; -- cgit v1.2.3 From 791b65f4b261a23e427664f0b86ce32b60e33cb5 Mon Sep 17 00:00:00 2001 From: Damien George Date: Tue, 27 Sep 2016 13:34:21 +1000 Subject: py/modmicropython: Add micropython.const, alias for identity function. Having a micropython.const identity function, and writing "from micropython import const" at the start of scripts that use the const feature, allows to write scripts which are compatible with CPython, and with uPy builds that don't include const optimisation. This patch adds such a function and updates the tests to do the import. --- py/modmicropython.c | 1 + tests/micropython/const.py | 2 ++ tests/micropython/const2.py | 2 ++ tests/micropython/const_error.py | 2 ++ 4 files changed, 7 insertions(+) (limited to 'py/modmicropython.c') diff --git a/py/modmicropython.c b/py/modmicropython.c index 31ae7025f..f7d74db2e 100644 --- a/py/modmicropython.c +++ b/py/modmicropython.c @@ -120,6 +120,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_micropython) }, + { MP_ROM_QSTR(MP_QSTR_const), MP_ROM_PTR(&mp_identity_obj) }, #if MICROPY_PY_MICROPYTHON_MEM_INFO #if MICROPY_MEM_STATS { MP_ROM_QSTR(MP_QSTR_mem_total), MP_ROM_PTR(&mp_micropython_mem_total_obj) }, diff --git a/tests/micropython/const.py b/tests/micropython/const.py index 09717fd14..660a095f2 100644 --- a/tests/micropython/const.py +++ b/tests/micropython/const.py @@ -1,5 +1,7 @@ # test constant optimisation +from micropython import const + X = const(123) Y = const(X + 456) diff --git a/tests/micropython/const2.py b/tests/micropython/const2.py index fb4588435..60085a1e0 100644 --- a/tests/micropython/const2.py +++ b/tests/micropython/const2.py @@ -1,5 +1,7 @@ # check that consts are not replaced in anything except standalone identifiers +from micropython import const + X = const(1) Y = const(2) Z = const(3) diff --git a/tests/micropython/const_error.py b/tests/micropython/const_error.py index b46efcae2..6d3d135b5 100644 --- a/tests/micropython/const_error.py +++ b/tests/micropython/const_error.py @@ -1,5 +1,7 @@ # make sure syntax error works correctly for bad const definition +from micropython import const + def test_syntax(code): try: exec(code) -- cgit v1.2.3 From 7dc2345715f6c0619e833661d709f6e4e550d7b5 Mon Sep 17 00:00:00 2001 From: Damien George Date: Fri, 7 Oct 2016 15:59:50 +1100 Subject: py/modmicropython: Add micropython.opt_level([value]) function. This allows to get/set at runtime the optimisation level of the compiler. --- py/modmicropython.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'py/modmicropython.c') diff --git a/py/modmicropython.c b/py/modmicropython.c index f7d74db2e..675d169cc 100644 --- a/py/modmicropython.c +++ b/py/modmicropython.c @@ -34,6 +34,16 @@ // Various builtins specific to MicroPython runtime, // living in micropython module +STATIC mp_obj_t mp_micropython_opt_level(size_t n_args, const mp_obj_t *args) { + if (n_args == 0) { + return MP_OBJ_NEW_SMALL_INT(MP_STATE_VM(mp_optimise_value)); + } else { + MP_STATE_VM(mp_optimise_value) = mp_obj_get_int(args[0]); + return mp_const_none; + } +} +STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_micropython_opt_level_obj, 0, 1, mp_micropython_opt_level); + #if MICROPY_PY_MICROPYTHON_MEM_INFO #if MICROPY_MEM_STATS @@ -121,6 +131,7 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_alloc_emergency_exception_buf_obj, mp_alloc_ STATIC const mp_rom_map_elem_t mp_module_micropython_globals_table[] = { { MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_micropython) }, { MP_ROM_QSTR(MP_QSTR_const), MP_ROM_PTR(&mp_identity_obj) }, + { MP_ROM_QSTR(MP_QSTR_opt_level), MP_ROM_PTR(&mp_micropython_opt_level_obj) }, #if MICROPY_PY_MICROPYTHON_MEM_INFO #if MICROPY_MEM_STATS { MP_ROM_QSTR(MP_QSTR_mem_total), MP_ROM_PTR(&mp_micropython_mem_total_obj) }, -- cgit v1.2.3