mirror of
https://github.com/micropython/micropython.git
synced 2026-01-05 03:30:14 +01:00
py/objcode: Factor code object out into its own file.
The `mp_obj_code_t` and `mp_type_code` code object was defined internally in both `py/builtinevex.c` and `py/profile.c`, with completely different implementations (the former very minimal, the latter quite complete). This commit factors these implementations into a new, separate source file, and allows the code object to have four different modes, selected at compile-time: - MICROPY_PY_BUILTINS_CODE_NONE: code object not included in the build. - MICROPY_PY_BUILTINS_CODE_MINIMUM: very simple code object that just holds a reference to the function that it represents. This level is used when MICROPY_PY_BUILTINS_COMPILE is enabled. - MICROPY_PY_BUILTINS_CODE_BASIC: simple code object that holds a reference to the proto-function and its constants. - MICROPY_PY_BUILTINS_CODE_FULL: almost complete implementation of the code object. This level is used when MICROPY_PY_SYS_SETTRACE is enabled. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -1129,6 +1129,15 @@ typedef double mp_float_t;
|
||||
#define MICROPY_PY_BUILTINS_BYTEARRAY (MICROPY_CONFIG_ROM_LEVEL_AT_LEAST_CORE_FEATURES)
|
||||
#endif
|
||||
|
||||
// Whether to support code objects, and how many features they have
|
||||
#define MICROPY_PY_BUILTINS_CODE_NONE (0)
|
||||
#define MICROPY_PY_BUILTINS_CODE_MINIMUM (1)
|
||||
#define MICROPY_PY_BUILTINS_CODE_BASIC (2)
|
||||
#define MICROPY_PY_BUILTINS_CODE_FULL (3)
|
||||
#ifndef MICROPY_PY_BUILTINS_CODE
|
||||
#define MICROPY_PY_BUILTINS_CODE (MICROPY_PY_SYS_SETTRACE ? MICROPY_PY_BUILTINS_CODE_FULL : (MICROPY_PY_BUILTINS_COMPILE ? MICROPY_PY_BUILTINS_CODE_MINIMUM : MICROPY_PY_BUILTINS_CODE_NONE))
|
||||
#endif
|
||||
|
||||
// Whether to support dict.fromkeys() class method
|
||||
#ifndef MICROPY_PY_BUILTINS_DICT_FROMKEYS
|
||||
#define MICROPY_PY_BUILTINS_DICT_FROMKEYS (MICROPY_CONFIG_ROM_LEVEL_AT_LEAST_CORE_FEATURES)
|
||||
|
||||
Reference in New Issue
Block a user