diff options
author | Jim Mussared <jim.mussared@gmail.com> | 2022-09-17 00:31:23 +1000 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2022-09-19 19:06:15 +1000 |
commit | 94beeabd2ee179d587942046555833e022241f24 (patch) | |
tree | da625bb1857de03c33cc40c2139660dd34ee1798 /py/objtype.h | |
parent | 6da41b59007c9e9a2443ae17278d32210034a63f (diff) | |
download | micropython-94beeabd2ee179d587942046555833e022241f24.tar.gz micropython-94beeabd2ee179d587942046555833e022241f24.zip |
py/obj: Convert make_new into a mp_obj_type_t slot.
Instead of being an explicit field, it's now a slot like all the other
methods.
This is a marginal code size improvement because most types have a make_new
(100/138 on PYBV11), however it improves consistency in how types are
declared, removing the special case for make_new.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
Diffstat (limited to 'py/objtype.h')
-rw-r--r-- | py/objtype.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/py/objtype.h b/py/objtype.h index 2c613b9045..76a290760c 100644 --- a/py/objtype.h +++ b/py/objtype.h @@ -46,8 +46,8 @@ mp_obj_instance_t *mp_obj_new_instance(const mp_obj_type_t *cls, const mp_obj_ty bool mp_obj_instance_is_callable(mp_obj_t self_in); mp_obj_t mp_obj_instance_call(mp_obj_t self_in, size_t n_args, size_t n_kw, const mp_obj_t *args); -#define mp_obj_is_instance_type(type) ((type)->make_new == mp_obj_instance_make_new) -#define mp_obj_is_native_type(type) ((type)->make_new != mp_obj_instance_make_new) +#define mp_obj_is_instance_type(type) (MP_OBJ_TYPE_GET_SLOT_OR_NULL(type, make_new) == mp_obj_instance_make_new) +#define mp_obj_is_native_type(type) (MP_OBJ_TYPE_GET_SLOT_OR_NULL(type, make_new) != mp_obj_instance_make_new) // this needs to be exposed for the above macros to work correctly mp_obj_t mp_obj_instance_make_new(const mp_obj_type_t *self_in, size_t n_args, size_t n_kw, const mp_obj_t *args); |