Branch Coverage

lib/SPVM/Builder/src/spvm_api.c
Criterion Covered Total %
branch 546 784 69.6


line true false branch
321 0 119269 if (env == NULL) {
361 24680 480 for (int32_t basic_type_id = 0; basic_type_id < basic_types_length; basic_type_id++) {
363 15272 9408 if (basic_type->init_method) {
367 0 15272 if (error_id) { break; }
378 0 326 if (!obj_program_name) {
383 326 0 if (!(obj_program_name_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_program_name->type_dimension == 0)) {
0 326 if (!(obj_program_name_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_program_name->type_dimension == 0)) {
388 0 326 if (error_id) { return error_id; }
397 0 326 if (!obj_argv) {
402 326 0 if (!(obj_argv_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_argv->type_dimension == 1)) {
0 326 if (!(obj_argv_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_argv->type_dimension == 1)) {
407 0 326 if (error_id) { return error_id; }
417 0 326 if (error_id) { return error_id; }
428 15143 326 for (int32_t basic_type_id = 0; basic_type_id < runtime->basic_types_length; basic_type_id++) {
431 2300 15143 for (int32_t class_var_index = 0; class_var_index < basic_type->class_vars_length; class_var_index++) {
440 1412 888 if (class_var_type_is_object) {
459 0 4 if (basic_type_name == NULL) {
464 2 2 if (basic_type) {
478 0 287267 if (basic_type_name == NULL) {
493 2 14 if (!method) {
498 0 14 if (*error_id) {
510 2 2 if (!method) {
515 0 2 if (*error_id) {
527 0 338 if (object == NULL) {
532 0 338 if (object->type_dimension > 0) {
538 2 336 if (!method) {
546 2 334 if (*error_id) {
556 2 6 if (!basic_type) {
571 2 237629 if (!basic_type) {
585 0 0 if (!basic_type) {
599 0 0 if (!basic_type) {
614 0 0 if (!basic_type) {
629 0 28 assert(basic_type);
633 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
644 0 28 assert(basic_type);
648 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
659 0 96 assert(basic_type);
663 96 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 96 assert(class_var->index >= 0 && class_var->index < class_vars_length);
675 0 36 assert(basic_type);
679 36 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 36 assert(class_var->index >= 0 && class_var->index < class_vars_length);
690 0 28 assert(basic_type);
694 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
705 0 28 assert(basic_type);
709 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
720 0 734 assert(basic_type);
724 734 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 734 assert(class_var->index >= 0 && class_var->index < class_vars_length);
736 0 658 assert(basic_type);
740 658 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 658 assert(class_var->index >= 0 && class_var->index < class_vars_length);
756 0 28 assert(basic_type);
760 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
769 0 28 assert(basic_type);
773 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
782 0 92 assert(basic_type);
786 92 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 92 assert(class_var->index >= 0 && class_var->index < class_vars_length);
795 0 358 assert(basic_type);
799 358 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 358 assert(class_var->index >= 0 && class_var->index < class_vars_length);
808 0 28 assert(basic_type);
812 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
821 0 28 assert(basic_type);
825 28 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 28 assert(class_var->index >= 0 && class_var->index < class_vars_length);
834 0 654 assert(basic_type);
838 654 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 654 assert(class_var->index >= 0 && class_var->index < class_vars_length);
853 0 4 if (!basic_type) {
860 2 2 if (!class_var) {
874 0 4 if (!basic_type) {
881 2 2 if (!class_var) {
895 0 4 if (!basic_type) {
902 2 2 if (!class_var) {
916 0 4 if (!basic_type) {
923 2 2 if (!class_var) {
937 0 4 if (!basic_type) {
944 2 2 if (!class_var) {
958 0 4 if (!basic_type) {
965 2 2 if (!class_var) {
979 0 4 if (!basic_type) {
986 2 2 if (!class_var) {
1006 0 4 if (!basic_type) {
1013 2 2 if (!class_var) {
1026 0 4 if (!basic_type) {
1033 2 2 if (!class_var) {
1046 0 4 if (!basic_type) {
1053 2 2 if (!class_var) {
1066 0 330 if (!basic_type) {
1073 2 328 if (!class_var) {
1086 0 4 if (!basic_type) {
1093 2 2 if (!class_var) {
1106 0 4 if (!basic_type) {
1113 2 2 if (!class_var) {
1126 0 656 if (!basic_type) {
1133 2 654 if (!class_var) {
1262 0 682 if (object == NULL) {
1267 0 682 if (object->type_dimension > 0) {
1273 2 680 if (!field) {
1286 0 12 if (object == NULL) {
1291 0 12 if (object->type_dimension > 0) {
1297 2 10 if (!field) {
1310 0 20 if (object == NULL) {
1315 0 20 if (object->type_dimension > 0) {
1321 2 18 if (!field) {
1334 0 12 if (object == NULL) {
1339 0 12 if (object->type_dimension > 0) {
1345 2 10 if (!field) {
1358 0 12 if (object == NULL) {
1363 0 12 if (object->type_dimension > 0) {
1369 2 10 if (!field) {
1382 0 12 if (object == NULL) {
1387 0 12 if (object->type_dimension > 0) {
1393 2 10 if (!field) {
1406 0 526562 if (object == NULL) {
1411 0 526562 if (object->type_dimension > 0) {
1417 2 526560 if (!field) {
1430 0 336 if (object == NULL) {
1435 0 336 if (object->type_dimension > 0) {
1441 0 336 if (!field) {
1457 0 260930 if (*error_id) { return NULL; }
1459 0 260930 if (!obj_runtime) {
1466 0 260930 if (!runtime) {
1483 2 2 if (!field) {
1489 0 2 if (value == NULL) {
1501 0 16 if (object == NULL) {
1506 0 16 if (object->type_dimension > 0) {
1512 2 14 if (!field) {
1524 0 4 if (object == NULL) {
1529 0 4 if (object->type_dimension > 0) {
1535 2 2 if (!field) {
1547 0 4 if (object == NULL) {
1552 0 4 if (object->type_dimension > 0) {
1558 2 2 if (!field) {
1570 0 4 if (object == NULL) {
1575 0 4 if (object->type_dimension > 0) {
1581 2 2 if (!field) {
1592 0 4 if (object == NULL) {
1597 0 4 if (object->type_dimension > 0) {
1603 2 2 if (!field) {
1615 0 4 if (object == NULL) {
1620 0 4 if (object->type_dimension > 0) {
1626 2 2 if (!field) {
1638 0 237883 if (object == NULL) {
1643 0 237883 if (object->type_dimension > 0) {
1649 2 237881 if (!field) {
1668 0 316 if (message_length > 255) {
1708 0 662 if (native_mortal_stack == NULL) {
1726 662 0 if (mortal_stack != NULL) {
1754 6 2 if (object) {
1767 14348 0 if (object) {
1769 13904 444 is_string = (object_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && object->type_dimension == 0);
13842 62 is_string = (object_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && object->type_dimension == 0);
1783 268 2 if (object) {
1785 6 262 if (object_type_dimension == 0) {
1788 254 8 else if (object_type_dimension == 1) {
1791 170 84 switch (object_basic_type_category) {
1802 8 0 else if (object_type_dimension > 1) {
1822 600570 2 if (object) {
1824 467613 132957 if (object_type_dimension == 0) {
1827 132863 94 else if (object_type_dimension == 1) {
1833 94 0 else if (object_type_dimension > 1) {
1852 21261 2 if (object) {
1854 6 21255 if (object_type_dimension == 0) {
1857 21231 24 else if (object_type_dimension == 1) {
1860 100 21131 switch (object_basic_type_category) {
1871 24 0 else if (object_type_dimension > 1) {
1890 8 2 if (object) {
1892 6 2 if (object_type_dimension == 0) {
1896 4 2 switch (object_basic_type_category) {
1922 10 2 if (object) {
1924 8 2 if (object_type_dimension == 0) {
1928 6 2 switch (object_basic_type_category) {
1932 2 4 if (basic_type_is_pointer) {
1961 6726 0 if (array) {
1962 6404 322 if (SPVM_API_is_string(env, stack, array)) {
1965 262 60 else if (SPVM_API_is_object_array(env, stack, array)) {
1968 48 12 else if (SPVM_API_is_numeric_array(env, stack, array)) {
1972 0 48 assert(type_dimension == 1);
1974 28 20 if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE) {
1977 0 20 else if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_SHORT) {
1980 12 8 else if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_INT || array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_FLOAT) {
0 12 else if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_INT || array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_FLOAT) {
1983 12 0 else if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_LONG || array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
12 0 else if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_LONG || array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
1990 12 0 else if (SPVM_API_is_mulnum_array(env, stack, array)) {
1993 0 12 assert(type_dimension == 1);
2001 0 12 if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE) {
2004 0 12 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_SHORT) {
2007 12 0 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_INT || field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_FLOAT) {
0 12 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_INT || field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_FLOAT) {
2010 12 0 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_LONG || field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
12 0 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_LONG || field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
2040 0 108 assert(object);
2064 96 108 for (dim_index = 0; dim_index < type_dimension; dim_index++) {
2087 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_MUTABLE) {
2098 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_REF) {
2113 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_MUTABLE) {
2121 4 8 for (int32_t type_dimension_index = 0; type_dimension_index < type_dimension; type_dimension_index++) {
2127 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_REF) {
2149 0 2056 if (stack[SPVM_API_C_STACK_INDEX_CALL_DEPTH].ival > 100) {
2161 2056 0 if (class_dir) {
2240 0 0 if (string == NULL) {
2249 0 0 for (i = 0; i < string_length; i++) {
2279 982 120 if (string1_length > 0) {
2282 910 192 if (string2_length) {
2349 36 132 if (object == NULL) {
2355 28 104 if (SPVM_API_is_string(env, stack, object)) {
2362 66 38 else if (type_dimension > 0) {
2371 150 66 for (int32_t array_index = 0; array_index < array_length; array_index++) {
2373 176 150 for (int32_t depth_index = 0; depth_index < *depth + 1; depth_index++) {
2377 32 118 if (SPVM_API_is_mulnum_array(env, stack, object)) {
2383 96 32 for (int32_t field_index = 0; field_index < fields_length; field_index++) {
2384 192 96 for (int32_t depth_index = 0; depth_index < *depth + 2; depth_index++) {
2435 32 64 if (field_index == fields_length - 1) {
2445 54 64 else if (SPVM_API_is_numeric_array(env, stack, object)) {
2485 64 0 else if (SPVM_API_is_object_array(env, stack, object)) {
2496 66 84 if (array_index == array_length - 1) {
2504 10 66 for (int32_t depth_index = 0; depth_index < *depth; depth_index++) {
2511 70 66 for (int32_t type_dimension_index = 0; type_dimension_index < type_dimension; type_dimension_index++) {
2523 24 14 if (exists) {
2542 112 14 for (int32_t field_index = 0; field_index < fields_length; field_index++) {
2543 202 112 for (int32_t depth_index = 0; depth_index < *depth + 1; depth_index++) {
2556 100 12 if (field_type_dimension == 0 && field_basic_type_id >= SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE && field_basic_type_id <= SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
100 0 if (field_type_dimension == 0 && field_basic_type_id >= SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE && field_basic_type_id <= SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
76 24 if (field_type_dimension == 0 && field_basic_type_id >= SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE && field_basic_type_id <= SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
2607 14 98 if (field_index == fields_length - 1) {
2615 10 14 for (int32_t depth_index = 0; depth_index < *depth; depth_index++) {
2626 14000 0 if (string && string_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && string->type_dimension == 0) {
14000 0 if (string && string_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && string->type_dimension == 0) {
14000 0 if (string && string_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && string->type_dimension == 0) {
2634 6396 8 if (string) {
2635 268 6128 if (string->flag & SPVM_OBJECT_C_FLAG_IS_READ_ONLY) {
2751 0 306199 if (!basic_type) {
2755 0 306199 if (basic_type->category != SPVM_NATIVE_C_BASIC_TYPE_CATEGORY_CLASS) {
2764 0 306199 if (!basic_type) {
2798 70228 0 if (bytes != NULL && length > 0) {
70085 143 if (bytes != NULL && length > 0) {
2818 0 162062 if (length < 0) {
2828 162062 0 if (object) {
2829 85790 76272 if (bytes != NULL && length > 0) {
84453 1337 if (bytes != NULL && length > 0) {
2856 0 836 if (length < 0) {
2893 0 706 if (length < 0) {
2938 0 53170 if (!is_object_array) {
2942 0 53170 if (!basic_type) {
2964 0 70 if (type_dimension < 2) {
2967 0 70 else if (basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_ANY_OBJECT) {
2973 0 70 if (!basic_type) {
3003 42 184 if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE) {
3006 32 152 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_SHORT) {
3009 44 108 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_INT) {
3012 32 76 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_LONG) {
3015 28 48 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_FLOAT) {
3018 48 0 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
3043 0 268 if (array == NULL) {
3047 0 268 if (length < 0) {
3177 0 765577 if (!object) {
3183 0 765577 if (object->type_dimension != 0) {
3196 0 3026 if (!basic_type) {
3209 0 108 if (!basic_type) {
3222 0 12957 if (!basic_type) {
3235 58 0 if (method) {
3236 0 58 if (!method->is_class_method) {
3248 2 0 if (method) {
3249 0 2 if (method->is_class_method) {
3265 0 700635 if (!object) {
3274 10 700727 if (!parent_basic_type) {
3280 700625 102 if (method) {
3282 0 700625 if (method->is_class_method) {
3302 0 1989070 assert(size > 0);
3322 1988418 2 if (block) {
3351 0 222 if (!object) {
3359 216 6 if (SPVM_API_is_string(env, stack, object)) {
3367 2 4 else if (SPVM_API_is_numeric_array(env, stack, object) || SPVM_API_is_mulnum_array(env, stack, object)) {
2 0 else if (SPVM_API_is_numeric_array(env, stack, object) || SPVM_API_is_mulnum_array(env, stack, object)) {
3397 34 0 if (string != NULL) {
3398 34 0 if (SPVM_API_is_string(env, stack, string)) {
3399 34 0 if (!SPVM_API_is_read_only(env, stack, string)) {
3402 2 32 if (new_length > length) {
3405 0 32 else if (new_length < 0) {
3411 0 34 if (new_length > length) {
3423 0 109608 assert(array);
3429 0 109608 assert(array_type_dimension > 0);
3438 0 962 assert(object);
3442 958 4 if (object_basic_type->id == basic_type->id && object->type_dimension == type_dimension) {
956 2 if (object_basic_type->id == basic_type->id && object->type_dimension == type_dimension) {
3452 0 820 if (!basic_type) {
3466 222 317919 if (object == NULL) {
3472 0 317919 if (!basic_type) {
3486 0 0 if (!basic_type) {
3499 0 0 if (basic_type_id < 0) {
3510 0 0 if (!basic_type) {
3527 0 8 if (length < 0) {
3531 8 0 if (length == 0) {
3540 8 0 if (status == 0) {
3553 4 0 if (obj_strerror_value) {
3585 0 2 assert(spvm_version_string);
3592 0 2 assert(*end == '\0');
3593 0 2 assert(errno == 0);
3607 0 4 if (!version_string) {
3615 32 4 for (int32_t i = 0; i < version_string_length; i++) {
3617 32 0 if (!(ch == '_')) {
3626 0 4 assert(*end == '\0');
3627 0 4 assert(errno == 0);
3636 526581 0 if (object) {
3655 20 0 if (stack[SPVM_API_C_STACK_INDEX_ENV].oval == env) {
3672 0 2856030 if (stack[SPVM_API_C_STACK_INDEX_CALL_DEPTH].ival > max_call_depth) {
3684 21575 2834455 if (method->is_init) {
3686 12296 9279 if (current_basic_type->initialized) {
3694 2843734 12296 if (!no_need_call) {
3696 1372529 1471205 if (method->is_native) {
3702 358 1372171 if (optional_args_length > 0) {
3713 358 442 if (opcode->id == SPVM_OPCODE_C_ID_END_ARGS) {
3720 2 2 if (stack_index >= args_width) {
3727 2 2 if (stack_index >= args_width) {
3734 8 8 if (stack_index >= args_width) {
3741 2 2 if (stack_index >= args_width) {
3748 2 2 if (stack_index >= args_width) {
3757 2 2 if (stack_index >= args_width) {
3764 16 346 if (stack_index >= args_width) {
3777 0 1372529 assert(native_address != NULL);
3781 1372219 310 if (!error_id) {
3782 312139 1060080 if (method_return_type_is_object) {
3784 311561 578 if (return_object != NULL) {
3800 1372219 310 if (!error_id) {
3801 312139 1060080 if (method_return_type_is_object) {
3803 311561 578 if (return_object != NULL) {
3816 310 1372219 if (error_id && SPVM_API_get_exception(env, stack) == NULL) {
0 310 if (error_id && SPVM_API_get_exception(env, stack) == NULL) {
3824 10737 1460468 if (method_precompile_address) {
3834 62 2843672 if (mortal && method_return_type_is_object) {
6 56 if (mortal && method_return_type_is_object) {
3852 309388 0 if (object != NULL) {
3854 349 309039 if (*current_mortal_stack_top_ptr >= *current_mortal_stack_capacity_ptr) {
3857 0 349 if (new_mortal_stack == NULL) {
3882 309388 1372531 for (mortal_stack_index = original_mortal_stack_top; mortal_stack_index < *current_mortal_stack_top_ptr; mortal_stack_index++) {
3895 841575 1317643 for (int32_t mortal_stack_index = original_mortal_stack_top; mortal_stack_index < *mortal_stack_top_ptr; mortal_stack_index++) {
3898 820881 20694 if (*object_ref != NULL) {
3921 0 4 assert(ref);
3923 0 4 if (*ref == NULL) {
3942 0 374 assert(ref);
3944 2 372 if (*ref == NULL) {
3957 370 2 if (!isweak) {
3961 0 370 assert(ref_count > 0);
3964 2 368 if (ref_count == 1) {
3979 368 0 if (object->weaken_backref_head == NULL) {
3986 0 0 while (weaken_backref_next->next != NULL){
3996 2 370 if (destroied_referent) {
4005 0 5877192 assert(ref);
4007 3979085 1898107 if (*ref == NULL) {
4015 356 1897751 if (isweak) {
4017 0 356 assert(object->weaken_backref_head);
4025 0 356 assert(object->weaken_backref_head);
4027 356 0 while (*weaken_backref_next_ptr != NULL){
4028 356 0 if ((*weaken_backref_next_ptr)->ref == ref) {
4047 0 0 assert(ref);
4049 0 0 if (*ref == NULL) {
4068 12 12 while (weaken_backref_head_cur != NULL){
4087 1898107 3979085 if (object_assign_off) {
4094 0 5877192 assert(!((intptr_t)object & 1));
4097 1898771 3978421 if (object && (object != object_assign_off)) {
1898221 550 if (object && (object != object_assign_off)) {
4108 1898771 3978421 if (object) {
4114 1898771 3978421 if (object) {
4116 1898221 550 if (lock_object_mutex) {
4121 3979085 1898107 if (!object_assign_off) {
4127 0 1898107 assert(object_assign_off_ref_count > 0);
4130 1372178 525929 if (object_assign_off_ref_count > 1) {
4141 53502 472427 if (SPVM_API_is_object_array(env, stack, object_assign_off)) {
4143 2207264 53502 for (int32_t index = 0; index < length; index++) {
4152 305547 166880 if (object_assign_off_basic_type_category == SPVM_NATIVE_C_BASIC_TYPE_CATEGORY_CLASS) {
4157 686 304861 if (object_assign_off_basic_type->destructor_method) {
4171 2 684 if (error_id) {
4185 313084 305547 for (int32_t field_index = 0; field_index < object_assign_off_fields_length; field_index++) {
4193 256696 56388 if (field_type_is_object_assign_off) {
4208 0 525929 if (object_assign_off_ref_count > 0) {
4211 525929 0 else if (object_assign_off_ref_count == 0) {
4214 12 525917 if (object_assign_off->weaken_backref_head != NULL) {
4233 2300955 0 if (object != NULL) {
4235 0 2300955 assert(ref_count >= 0);
4246 2300303 0 if (object != NULL) {
4248 0 2300303 assert(ref_count > 0);