As I suspected, mp_const_none and friends are not constant expressions, but variables with const modifier. Besides being non-efficient, it's also make impossible to do stuff like:
static mp_obj_t arr[] = {mp_const_none};
Instead of current impl, we should define them as:
#define mp_const_none (mp_obj_t)&mp_const_none_obj
As I suspected, mp_const_none and friends are not constant expressions, but variables with const modifier. Besides being non-efficient, it's also make impossible to do stuff like:
static mp_obj_t arr[] = {mp_const_none};
Instead of current impl, we should define them as: