10000 py/objdict: Make .fromkeys() method configurable. · msuszko/micropython@fbb8335 · GitHub
[go: up one dir, main page]

Skip to content

Commit fbb8335

Browse files
pfalcondpgeorge
authored andcommitted
py/objdict: Make .fromkeys() method configurable.
On by default, turned off for minimal/bare-arm. Saves 144 bytes on x86.
1 parent 169b152 commit fbb8335

File tree

4 files changed

+11
-0
lines changed

4 files changed

+11
-0
lines changed

ports/bare-arm/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#define MICROPY_BUILTIN_METHOD_CHECK_SELF_ARG (0)
2323
#define MICROPY_PY_ASYNC_AWAIT (0)
2424
#define MICROPY_PY_BUILTINS_BYTEARRAY (0)
25+
#define MICROPY_PY_BUILTINS_DICT_FROMKEYS (0)
2526
#define MICROPY_PY_BUILTINS_MEMORYVIEW (0)
2627
#define MICROPY_PY_BUILTINS_ENUMERATE (0)
2728
#define MICROPY_PY_BUILTINS_FROZENSET (0)

ports/minimal/mpconfigport.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#define MICROPY_BUILTIN_METHOD_CHECK_SELF_ARG (0)
3232
#define MICROPY_PY_ASYNC_AWAIT (0)
3333
#define MICROPY_PY_BUILTINS_BYTEARRAY (0)
34+
#define MICROPY_PY_BUILTINS_DICT_FROMKEYS (0)
3435
#define MICROPY_PY_BUILTINS_MEMORYVIEW (0)
3536
#define MICROPY_PY_BUILTINS_ENUMERATE (0)
3637
#define MICROPY_PY_BUILTINS_FILTER (0)

py/mpconfig.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,11 @@ typedef double mp_float_t;
804804
#define MICROPY_PY_BUILTINS_BYTEARRAY (1)
805805
#endif
806806

807+
// Whether to support dict.fromkeys() class method
808+
#ifndef MICROPY_PY_BUILTINS_DICT_FROMKEYS
809+
#define MICROPY_PY_BUILTINS_DICT_FROMKEYS (1)
810+
#endif
811+
807812
// Whether to support memoryview object
808813
#ifndef MICROPY_PY_BUILTINS_MEMORYVIEW
809814
#define MICROPY_PY_BUILTINS_MEMORYVIEW (0)

py/objdict.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@ STATIC mp_obj_t dict_copy(mp_obj_t self_in) {
227227
}
228228
STATIC MP_DEFINE_CONST_FUN_OBJ_1(dict_copy_obj, dict_copy);
229229

230+
#if MICROPY_PY_BUILTINS_DICT_FROMKEYS
230231
// this is a classmethod
231232
STATIC mp_obj_t dict_fromkeys(size_t n_args, const mp_obj_t *args) {
232233
mp_obj_t iter = mp_getiter(args[1], NULL);
@@ -256,6 +257,7 @@ STATIC mp_obj_t dict_fromkeys(size_t n_args, const mp_obj_t *args) {
256257
}
257258
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(dict_fromkeys_fun_obj, 2, 3, dict_fromkeys);
258259
STATIC MP_DEFINE_CONST_CLASSMETHOD_OBJ(dict_fromkeys_obj, MP_ROM_PTR(&dict_fromkeys_fun_obj));
260+
#endif
259261

260262
STATIC mp_obj_t dict_get_helper(size_t n_args, const mp_obj_t *args, mp_map_lookup_kind_t lookup_kind) {
261263
mp_check_self(MP_OBJ_IS_DICT_TYPE(args[0]));
@@ -528,7 +530,9 @@ STATIC mp_obj_t dict_getiter(mp_obj_t self_in, mp_obj_iter_buf_t *iter_buf) {
528530
STATIC const mp_rom_map_elem_t dict_locals_dict_table[] = {
529531
{ MP_ROM_QSTR(MP_QSTR_clear), MP_ROM_PTR(&dict_clear_obj) },
530532
{ MP_ROM_QSTR(MP_QSTR_copy), MP_ROM_PTR(&dict_copy_obj) },
533+
#if MICROPY_PY_BUILTINS_DICT_FROMKEYS
531534
{ MP_ROM_QSTR(MP_QSTR_fromkeys), MP_ROM_PTR(&dict_fromkeys_obj) },
535+
#endif
532536
{ MP_ROM_QSTR(MP_QSTR_get), MP_ROM_PTR(&dict_get_obj) },
533537
{ MP_ROM_QSTR(MP_QSTR_items), MP_ROM_PTR(&dict_items_obj) },
534538
{ MP_ROM_QSTR(MP_QSTR_keys), MP_ROM_PTR(&dict_keys_obj) },

0 commit comments

Comments
 (0)
0