Branch Coverage

lib/SPVM/Builder/src/spvm_api.c
Criterion Covered Total %
branch 559 794 70.4


line true false branch
323 0 119195 if (env == NULL) {
363 24772 488 for (int32_t basic_type_id = 0; basic_type_id < basic_types_length; basic_type_id++) {
365 15304 9468 if (basic_type->init_method) {
369 0 15304 if (error_id) { break; }
380 0 336 if (!obj_program_name) {
385 336 0 if (!(obj_program_name_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_program_name->type_dimension == 0)) {
0 336 if (!(obj_program_name_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_program_name->type_dimension == 0)) {
390 0 336 if (error_id) { return error_id; }
399 0 336 if (!obj_argv) {
404 336 0 if (!(obj_argv_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_argv->type_dimension == 1)) {
0 336 if (!(obj_argv_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_STRING && obj_argv->type_dimension == 1)) {
409 0 336 if (error_id) { return error_id; }
419 0 336 if (error_id) { return error_id; }
430 15283 336 for (int32_t basic_type_id = 0; basic_type_id < runtime->basic_types_length; basic_type_id++) {
433 2314 15283 for (int32_t class_var_index = 0; class_var_index < basic_type->class_vars_length; class_var_index++) {
442 1446 868 if (class_var_type_is_object) {
461 0 4 if (basic_type_name == NULL) {
466 2 2 if (basic_type) {
480 0 282407 if (basic_type_name == NULL) {
495 2 14 if (!method) {
500 0 14 if (*error_id) {
512 2 2 if (!method) {
517 0 2 if (*error_id) {
529 0 348 if (object == NULL) {
534 0 348 if (object->type_dimension > 0) {
540 2 346 if (!method) {
548 2 344 if (*error_id) {
558 2 6 if (!basic_type) {
573 2 233430 if (!basic_type) {
587 0 0 if (!basic_type) {
601 0 0 if (!basic_type) {
616 0 0 if (!basic_type) {
631 0 28 assert(basic_type);
635 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);
646 0 28 assert(basic_type);
650 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);
661 0 96 assert(basic_type);
665 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);
677 0 36 assert(basic_type);
681 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);
692 0 28 assert(basic_type);
696 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);
707 0 28 assert(basic_type);
711 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);
722 0 754 assert(basic_type);
726 754 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 754 assert(class_var->index >= 0 && class_var->index < class_vars_length);
738 0 678 assert(basic_type);
742 678 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 678 assert(class_var->index >= 0 && class_var->index < class_vars_length);
758 0 28 assert(basic_type);
762 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);
771 0 28 assert(basic_type);
775 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);
784 0 92 assert(basic_type);
788 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);
797 0 368 assert(basic_type);
801 368 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 368 assert(class_var->index >= 0 && class_var->index < class_vars_length);
810 0 28 assert(basic_type);
814 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);
823 0 28 assert(basic_type);
827 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);
836 0 674 assert(basic_type);
840 674 0 assert(class_var->index >= 0 && class_var->index < class_vars_length);
0 674 assert(class_var->index >= 0 && class_var->index < class_vars_length);
855 0 4 if (!basic_type) {
862 2 2 if (!class_var) {
876 0 4 if (!basic_type) {
883 2 2 if (!class_var) {
897 0 4 if (!basic_type) {
904 2 2 if (!class_var) {
918 0 4 if (!basic_type) {
925 2 2 if (!class_var) {
939 0 4 if (!basic_type) {
946 2 2 if (!class_var) {
960 0 4 if (!basic_type) {
967 2 2 if (!class_var) {
981 0 4 if (!basic_type) {
988 2 2 if (!class_var) {
1008 0 4 if (!basic_type) {
1015 2 2 if (!class_var) {
1028 0 4 if (!basic_type) {
1035 2 2 if (!class_var) {
1048 0 4 if (!basic_type) {
1055 2 2 if (!class_var) {
1068 0 340 if (!basic_type) {
1075 2 338 if (!class_var) {
1088 0 4 if (!basic_type) {
1095 2 2 if (!class_var) {
1108 0 4 if (!basic_type) {
1115 2 2 if (!class_var) {
1128 0 676 if (!basic_type) {
1135 2 674 if (!class_var) {
1264 0 702 if (object == NULL) {
1269 0 702 if (object->type_dimension > 0) {
1275 2 700 if (!field) {
1288 0 12 if (object == NULL) {
1293 0 12 if (object->type_dimension > 0) {
1299 2 10 if (!field) {
1312 0 20 if (object == NULL) {
1317 0 20 if (object->type_dimension > 0) {
1323 2 18 if (!field) {
1336 0 12 if (object == NULL) {
1341 0 12 if (object->type_dimension > 0) {
1347 2 10 if (!field) {
1360 0 12 if (object == NULL) {
1365 0 12 if (object->type_dimension > 0) {
1371 2 10 if (!field) {
1384 0 12 if (object == NULL) {
1389 0 12 if (object->type_dimension > 0) {
1395 2 10 if (!field) {
1408 0 516927 if (object == NULL) {
1413 0 516927 if (object->type_dimension > 0) {
1419 2 516925 if (!field) {
1432 0 346 if (object == NULL) {
1437 0 346 if (object->type_dimension > 0) {
1443 0 346 if (!field) {
1459 0 256439 if (*error_id) { return NULL; }
1461 0 256439 if (!obj_runtime) {
1468 0 256439 if (!runtime) {
1485 2 2 if (!field) {
1491 0 2 if (value == NULL) {
1503 0 16 if (object == NULL) {
1508 0 16 if (object->type_dimension > 0) {
1514 2 14 if (!field) {
1526 0 4 if (object == NULL) {
1531 0 4 if (object->type_dimension > 0) {
1537 2 2 if (!field) {
1549 0 4 if (object == NULL) {
1554 0 4 if (object->type_dimension > 0) {
1560 2 2 if (!field) {
1572 0 4 if (object == NULL) {
1577 0 4 if (object->type_dimension > 0) {
1583 2 2 if (!field) {
1594 0 4 if (object == NULL) {
1599 0 4 if (object->type_dimension > 0) {
1605 2 2 if (!field) {
1617 0 4 if (object == NULL) {
1622 0 4 if (object->type_dimension > 0) {
1628 2 2 if (!field) {
1640 0 233694 if (object == NULL) {
1645 0 233694 if (object->type_dimension > 0) {
1651 2 233692 if (!field) {
1670 0 316 if (message_length > 255) {
1710 0 682 if (native_mortal_stack == NULL) {
1728 682 0 if (mortal_stack != NULL) {
1756 6 2 if (object) {
1769 14348 0 if (object) {
1771 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);
1785 268 2 if (object) {
1787 6 262 if (object_type_dimension == 0) {
1790 254 8 else if (object_type_dimension == 1) {
1793 170 84 switch (object_basic_type_category) {
1804 8 0 else if (object_type_dimension > 1) {
1824 591688 2 if (object) {
1826 460112 131576 if (object_type_dimension == 0) {
1829 131482 94 else if (object_type_dimension == 1) {
1835 94 0 else if (object_type_dimension > 1) {
1854 21024 2 if (object) {
1856 6 21018 if (object_type_dimension == 0) {
1859 20994 24 else if (object_type_dimension == 1) {
1862 100 20894 switch (object_basic_type_category) {
1873 24 0 else if (object_type_dimension > 1) {
1892 8 2 if (object) {
1894 6 2 if (object_type_dimension == 0) {
1898 4 2 switch (object_basic_type_category) {
1924 10 2 if (object) {
1926 8 2 if (object_type_dimension == 0) {
1930 6 2 switch (object_basic_type_category) {
1934 2 4 if (basic_type_is_pointer) {
1963 6726 0 if (array) {
1964 6404 322 if (SPVM_API_is_string(env, stack, array)) {
1967 262 60 else if (SPVM_API_is_object_array(env, stack, array)) {
1970 48 12 else if (SPVM_API_is_numeric_array(env, stack, array)) {
1974 0 48 assert(type_dimension == 1);
1976 28 20 if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE) {
1979 0 20 else if (array_basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_SHORT) {
1982 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) {
1985 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) {
1992 12 0 else if (SPVM_API_is_mulnum_array(env, stack, array)) {
1995 0 12 assert(type_dimension == 1);
2003 0 12 if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE) {
2006 0 12 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_SHORT) {
2009 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) {
2012 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) {
2042 0 108 assert(object);
2066 96 108 for (dim_index = 0; dim_index < type_dimension; dim_index++) {
2089 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_MUTABLE) {
2100 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_REF) {
2115 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_MUTABLE) {
2123 4 8 for (int32_t type_dimension_index = 0; type_dimension_index < type_dimension; type_dimension_index++) {
2129 2 6 if (type_flag & SPVM_NATIVE_C_TYPE_FLAG_REF) {
2151 0 2056 if (stack[SPVM_API_C_STACK_INDEX_CALL_DEPTH].ival > 100) {
2163 2056 0 if (class_dir) {
2241 20 4 if (string) {
2245 16 4 if (string_length > 0) {
2270 20 0 if (class_dir) {
2281 18 2 if (string) {
2285 16 2 if (string_length > 0) {
2290 10 6 if (bytes[string_length - 1] != '\n') {
2302 4 16 if (empty_or_undef) {
2326 982 120 if (string1_length > 0) {
2329 910 192 if (string2_length) {
2396 36 132 if (object == NULL) {
2402 28 104 if (SPVM_API_is_string(env, stack, object)) {
2409 66 38 else if (type_dimension > 0) {
2418 150 66 for (int32_t array_index = 0; array_index < array_length; array_index++) {
2420 176 150 for (int32_t depth_index = 0; depth_index < *depth + 1; depth_index++) {
2424 32 118 if (SPVM_API_is_mulnum_array(env, stack, object)) {
2430 96 32 for (int32_t field_index = 0; field_index < fields_length; field_index++) {
2431 192 96 for (int32_t depth_index = 0; depth_index < *depth + 2; depth_index++) {
2482 32 64 if (field_index == fields_length - 1) {
2492 54 64 else if (SPVM_API_is_numeric_array(env, stack, object)) {
2532 64 0 else if (SPVM_API_is_object_array(env, stack, object)) {
2543 66 84 if (array_index == array_length - 1) {
2551 10 66 for (int32_t depth_index = 0; depth_index < *depth; depth_index++) {
2558 70 66 for (int32_t type_dimension_index = 0; type_dimension_index < type_dimension; type_dimension_index++) {
2570 24 14 if (exists) {
2589 112 14 for (int32_t field_index = 0; field_index < fields_length; field_index++) {
2590 202 112 for (int32_t depth_index = 0; depth_index < *depth + 1; depth_index++) {
2603 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) {
2654 14 98 if (field_index == fields_length - 1) {
2662 10 14 for (int32_t depth_index = 0; depth_index < *depth; depth_index++) {
2673 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) {
2681 6396 8 if (string) {
2682 268 6128 if (string->flag & SPVM_OBJECT_C_FLAG_IS_READ_ONLY) {
2798 0 300969 if (!basic_type) {
2802 0 300969 if (basic_type->category != SPVM_NATIVE_C_BASIC_TYPE_CATEGORY_CLASS) {
2811 0 300969 if (!basic_type) {
2845 68831 0 if (bytes != NULL && length > 0) {
68690 141 if (bytes != NULL && length > 0) {
2865 0 159811 if (length < 0) {
2875 159811 0 if (object) {
2876 84936 74875 if (bytes != NULL && length > 0) {
83601 1335 if (bytes != NULL && length > 0) {
2903 0 836 if (length < 0) {
2940 0 706 if (length < 0) {
2985 0 52598 if (!is_object_array) {
2989 0 52598 if (!basic_type) {
3011 0 70 if (type_dimension < 2) {
3014 0 70 else if (basic_type->id == SPVM_NATIVE_C_BASIC_TYPE_ID_ANY_OBJECT) {
3020 0 70 if (!basic_type) {
3050 42 184 if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_BYTE) {
3053 32 152 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_SHORT) {
3056 44 108 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_INT) {
3059 32 76 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_LONG) {
3062 28 48 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_FLOAT) {
3065 48 0 else if (field_basic_type_id == SPVM_NATIVE_C_BASIC_TYPE_ID_DOUBLE) {
3090 0 268 if (array == NULL) {
3094 0 268 if (length < 0) {
3224 0 751783 if (!object) {
3230 0 751783 if (object->type_dimension != 0) {
3243 0 3026 if (!basic_type) {
3256 0 108 if (!basic_type) {
3269 0 12957 if (!basic_type) {
3282 58 0 if (method) {
3283 0 58 if (!method->is_class_method) {
3295 2 0 if (method) {
3296 0 2 if (method->is_class_method) {
3312 0 689100 if (!object) {
3321 10 689192 if (!parent_basic_type) {
3327 689090 102 if (method) {
3329 0 689090 if (method->is_class_method) {
3351 0 1978222 assert(size > 0);
3373 1977550 2 if (block) {
3402 0 222 if (!object) {
3410 216 6 if (SPVM_API_is_string(env, stack, object)) {
3418 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)) {
3448 34 0 if (string != NULL) {
3449 34 0 if (SPVM_API_is_string(env, stack, string)) {
3450 34 0 if (!SPVM_API_is_read_only(env, stack, string)) {
3453 2 32 if (new_length > length) {
3456 0 32 else if (new_length < 0) {
3462 0 34 if (new_length > length) {
3474 0 107723 assert(array);
3480 0 107723 assert(array_type_dimension > 0);
3489 0 962 assert(object);
3493 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) {
3503 0 820 if (!basic_type) {
3517 222 312337 if (object == NULL) {
3523 0 312337 if (!basic_type) {
3537 0 0 if (!basic_type) {
3550 0 0 if (basic_type_id < 0) {
3561 0 0 if (!basic_type) {
3578 0 8 if (length < 0) {
3582 8 0 if (length == 0) {
3591 8 0 if (status == 0) {
3604 4 0 if (obj_strerror_value) {
3636 0 2 assert(spvm_version_string);
3643 0 2 assert(*end == '\0');
3644 0 2 assert(errno == 0);
3658 0 4 if (!version_string) {
3666 32 4 for (int32_t i = 0; i < version_string_length; i++) {
3668 32 0 if (!(ch == '_')) {
3677 0 4 assert(*end == '\0');
3678 0 4 assert(errno == 0);
3687 518528 0 if (object) {
3706 20 0 if (stack[SPVM_API_C_STACK_INDEX_ENV].oval == env) {
3723 0 2843487 if (stack[SPVM_API_C_STACK_INDEX_CALL_DEPTH].ival > max_call_depth) {
3735 21535 2821952 if (method->is_init) {
3737 12198 9337 if (current_basic_type->initialized) {
3745 2831289 12198 if (!no_need_call) {
3747 1362919 1468370 if (method->is_native) {
3753 368 1362551 if (optional_args_length > 0) {
3764 368 452 if (opcode->id == SPVM_OPCODE_C_ID_END_ARGS) {
3771 2 2 if (stack_index >= args_width) {
3778 2 2 if (stack_index >= args_width) {
3785 8 8 if (stack_index >= args_width) {
3792 2 2 if (stack_index >= args_width) {
3799 2 2 if (stack_index >= args_width) {
3808 2 2 if (stack_index >= args_width) {
3815 16 356 if (stack_index >= args_width) {
3828 0 1362919 assert(native_address != NULL);
3832 1362609 310 if (!error_id) {
3833 306584 1056025 if (method_return_type_is_object) {
3835 305998 586 if (return_object != NULL) {
3851 1362609 310 if (!error_id) {
3852 306584 1056025 if (method_return_type_is_object) {
3854 305998 586 if (return_object != NULL) {
3867 310 1362609 if (error_id && SPVM_API_get_exception(env, stack) == NULL) {
0 310 if (error_id && SPVM_API_get_exception(env, stack) == NULL) {
3875 10737 1457633 if (method_precompile_address) {
3885 62 2831227 if (mortal && method_return_type_is_object) {
6 56 if (mortal && method_return_type_is_object) {
3903 303785 0 if (object != NULL) {
3905 359 303426 if (*current_mortal_stack_top_ptr >= *current_mortal_stack_capacity_ptr) {
3908 0 359 if (new_mortal_stack == NULL) {
3933 303785 1362921 for (mortal_stack_index = original_mortal_stack_top; mortal_stack_index < *current_mortal_stack_top_ptr; mortal_stack_index++) {
3946 830544 1300815 for (int32_t mortal_stack_index = original_mortal_stack_top; mortal_stack_index < *mortal_stack_top_ptr; mortal_stack_index++) {
3949 810029 20515 if (*object_ref != NULL) {
3972 0 4 assert(ref);
3974 0 4 if (*ref == NULL) {
3993 0 384 assert(ref);
3995 2 382 if (*ref == NULL) {
4008 380 2 if (!isweak) {
4012 0 380 assert(ref_count > 0);
4015 2 378 if (ref_count == 1) {
4030 378 0 if (object->weaken_backref_head == NULL) {
4037 0 0 while (weaken_backref_next->next != NULL){
4047 2 380 if (destroied_referent) {
4056 0 5816348 assert(ref);
4058 3948172 1868176 if (*ref == NULL) {
4066 362 1867814 if (isweak) {
4068 0 362 assert(object->weaken_backref_head);
4076 0 362 assert(object->weaken_backref_head);
4078 362 0 while (*weaken_backref_next_ptr != NULL){
4079 362 0 if ((*weaken_backref_next_ptr)->ref == ref) {
4098 0 0 assert(ref);
4100 0 0 if (*ref == NULL) {
4119 16 16 while (weaken_backref_head_cur != NULL){
4138 1868176 3948172 if (object_assign_off) {
4145 0 5816348 assert(!((intptr_t)object & 1));
4148 1868864 3947484 if (object && (object != object_assign_off)) {
1868296 568 if (object && (object != object_assign_off)) {
4159 1868864 3947484 if (object) {
4165 1868864 3947484 if (object) {
4167 1868296 568 if (lock_object_mutex) {
4172 3948172 1868176 if (!object_assign_off) {
4178 0 1868176 assert(object_assign_off_ref_count > 0);
4181 1350320 517856 if (object_assign_off_ref_count > 1) {
4192 52930 464926 if (SPVM_API_is_object_array(env, stack, object_assign_off)) {
4194 2203741 52930 for (int32_t index = 0; index < length; index++) {
4203 300297 164629 if (object_assign_off_basic_type_category == SPVM_NATIVE_C_BASIC_TYPE_CATEGORY_CLASS) {
4208 706 299591 if (object_assign_off_basic_type->destructor_method) {
4222 2 704 if (error_id) {
4236 308185 300297 for (int32_t field_index = 0; field_index < object_assign_off_fields_length; field_index++) {
4244 252297 55888 if (field_type_is_object_assign_off) {
4259 0 517856 if (object_assign_off_ref_count > 0) {
4262 517856 0 else if (object_assign_off_ref_count == 0) {
4265 16 517840 if (object_assign_off->weaken_backref_head != NULL) {
4284 2264607 0 if (object != NULL) {
4286 0 2264607 assert(ref_count >= 0);
4297 2263935 0 if (object != NULL) {
4299 0 2263935 assert(ref_count > 0);