@@ -54,16 +54,16 @@ static uint32_t object_size(uint8_t indent_level, mp_obj_t obj);
5454
5555static uint32_t int_size (uint8_t indent_level , mp_obj_t obj ) {
5656 if (MP_OBJ_IS_SMALL_INT (obj )) {
57- return sizeof ( mp_obj_t ) ;
57+ return 0 ;
5858 }
5959 if (!VERIFY_PTR (obj )) {
6060 return 0 ;
6161 }
6262 #if MICROPY_LONGINT_IMPL == MICROPY_LONGINT_IMPL_MPZ
6363 mp_obj_int_t * i = MP_OBJ_TO_PTR (obj );
64- return sizeof ( mp_obj_int_t ) + i -> mpz .len * sizeof ( mpz_dig_t );
64+ return gc_nbytes ( obj ) + gc_nbytes ( i -> mpz .dig );
6565 #else
66- return sizeof ( mp_obj_int_t );
66+ return gc_nbytes ( obj );
6767 #endif
6868}
6969
@@ -76,17 +76,17 @@ static uint32_t string_size(uint8_t indent_level, mp_obj_t obj) {
7676 }
7777 indent (indent_level );
7878 mp_printf (& mp_plat_print , "%s\n" , s );
79- return qstr_len ( qs ) ;
79+ return 0 ;
8080 } else { // MP_OBJ_IS_TYPE(o, &mp_type_str)
8181 mp_obj_str_t * s = MP_OBJ_TO_PTR (obj );
82- return sizeof ( mp_obj_str_t ) + s -> len * sizeof ( const byte );
82+ return gc_nbytes ( s ) + gc_nbytes ( s -> data );
8383 }
8484}
8585
8686static uint32_t map_size (uint8_t indent_level , const mp_map_t * map ) {
87- uint32_t total_size = 0 ;
87+ uint32_t total_size = gc_nbytes ( map -> table ) ;
8888 for (int i = 0 ; i < map -> used ; i ++ ) {
89- uint32_t this_size = sizeof ( mp_map_elem_t ) ;
89+ uint32_t this_size = 0 ;
9090 indent (indent_level );
9191 if (map -> table [i ].key != NULL ) {
9292 mp_print_str (& mp_plat_print , "key: " );
@@ -103,12 +103,11 @@ static uint32_t map_size(uint8_t indent_level, const mp_map_t *map) {
103103 total_size += this_size ;
104104 }
105105
106- total_size += sizeof (mp_map_elem_t ) * (map -> alloc - map -> used );
107106 return total_size ;
108107}
109108
110109static uint32_t dict_size (uint8_t indent_level , mp_obj_dict_t * dict ) {
111- uint32_t total_size = sizeof ( mp_obj_dict_t );
110+ uint32_t total_size = gc_nbytes ( dict );
112111
113112 indent (indent_level );
114113 mp_printf (& mp_plat_print , "Dictionary @%x\n" , dict );
@@ -133,7 +132,7 @@ static uint32_t function_size(uint8_t indent_level, mp_obj_t obj) {
133132 return 0 ;
134133 } else if (MP_OBJ_IS_TYPE (obj , & mp_type_fun_bc )) {
135134 mp_obj_fun_bc_t * fn = MP_OBJ_TO_PTR (obj );
136- uint32_t total_size = gc_nbytes (fn -> bytecode ) + gc_nbytes (fn -> const_table );
135+ uint32_t total_size = gc_nbytes (fn ) + gc_nbytes ( fn -> bytecode ) + gc_nbytes (fn -> const_table );
137136 #if MICROPY_DEBUG_PRINTERS
138137 mp_printf (& mp_plat_print , "BYTECODE START\n" );
139138 mp_bytecode_print (fn , fn -> bytecode , gc_nbytes (fn -> bytecode ), fn -> const_table );
@@ -157,18 +156,27 @@ static uint32_t function_size(uint8_t indent_level, mp_obj_t obj) {
157156}
158157
159158static uint32_t array_size (uint8_t indent_level , mp_obj_array_t * array ) {
160- uint32_t total_size = sizeof (mp_obj_array_t );
159+ uint32_t total_size = gc_nbytes (array );
160+
161+ uint32_t item_size = gc_nbytes (array -> items );
162+ total_size += item_size ;
163+ indent (indent_level );
164+ mp_printf (& mp_plat_print , "Array of size: %u\n\n" , item_size );
165+
166+ return total_size ;
167+ }
168+
169+ static uint32_t memoryview_size (uint8_t indent_level , mp_obj_array_t * array ) {
170+ uint32_t total_size = gc_nbytes (array );
161171
162- int typecode_size = mp_binary_get_size ('@' , array -> typecode , NULL );
163- total_size += typecode_size * (array -> free + array -> len );
164172 indent (indent_level );
165- mp_printf (& mp_plat_print , "Array of size: %u\n\n" , ( array -> free + array -> len ) );
173+ mp_printf (& mp_plat_print , "memoryview\n" );
166174
167175 return total_size ;
168176}
169177
170178static uint32_t type_size (uint8_t indent_level , mp_obj_type_t * type ) {
171- uint32_t total_size = sizeof ( mp_obj_type_t );
179+ uint32_t total_size = gc_nbytes ( type );
172180
173181 // mp_obj_base_t base;
174182 // qstr name;
@@ -218,15 +226,15 @@ static uint32_t type_size(uint8_t indent_level, mp_obj_type_t *type) {
218226
219227
220228static uint32_t instance_size (uint8_t indent_level , mp_obj_instance_t * instance ) {
221- uint32_t total_size = sizeof ( mp_obj_instance_t );
229+ uint32_t total_size = gc_nbytes ( instance );
222230
223231 total_size += map_size (indent_level , & instance -> members );
224232
225233 return total_size ;
226234}
227235
228236static uint32_t module_size (uint8_t indent_level , mp_obj_module_t * module ) {
229- uint32_t total_size = sizeof ( mp_obj_module_t );
237+ uint32_t total_size = gc_nbytes ( module );
230238
231239 indent (indent_level );
232240 mp_printf (& mp_plat_print , ".globals\n" );
@@ -264,7 +272,9 @@ static uint32_t object_size(uint8_t indent_level, mp_obj_t obj) {
264272 return type_size (indent_level , MP_OBJ_TO_PTR (obj ));
265273 } else if (type == & mp_type_bytearray || type == & mp_type_array ) {
266274 return array_size (indent_level , MP_OBJ_TO_PTR (obj ));
267- } else if (MP_OBJ_IS_OBJ (obj ) && VERIFY_PTR (type )) {
275+ } else if (type == & mp_type_memoryview ) {
276+ return memoryview_size (indent_level , MP_OBJ_TO_PTR (obj ));
277+ } else if (MP_OBJ_IS_OBJ (obj ) && VERIFY_PTR (type )) {
268278 return instance_size (indent_level , MP_OBJ_TO_PTR (obj ));
269279 }
270280
0 commit comments