Lines Matching refs:op1

191 		return CT_CONSTANT_EX(ctx->scdf.op_array, opline->op1.constant);  in get_op1_value()
318 static inline zend_result ct_eval_binary_op(zval *result, uint8_t binop, zval *op1, zval *op2) { in ct_eval_binary_op() argument
320 if (IS_PARTIAL_ARRAY(op1) || IS_PARTIAL_ARRAY(op2)) { in ct_eval_binary_op()
324 return zend_optimizer_eval_binary_op(result, binop, op1, op2); in ct_eval_binary_op()
359 static inline zend_result fetch_array_elem(zval **result, zval *op1, zval *op2) { in fetch_array_elem() argument
362 *result = zend_hash_find(Z_ARR_P(op1), ZSTR_EMPTY_ALLOC()); in fetch_array_elem()
365 *result = zend_hash_index_find(Z_ARR_P(op1), 0); in fetch_array_elem()
368 *result = zend_hash_index_find(Z_ARR_P(op1), 1); in fetch_array_elem()
371 *result = zend_hash_index_find(Z_ARR_P(op1), Z_LVAL_P(op2)); in fetch_array_elem()
378 *result = zend_hash_index_find(Z_ARR_P(op1), lval); in fetch_array_elem()
382 *result = zend_symtable_find(Z_ARR_P(op1), Z_STR_P(op2)); in fetch_array_elem()
389 static inline zend_result ct_eval_fetch_dim(zval *result, zval *op1, zval *op2, int support_strings… in ct_eval_fetch_dim() argument
390 if (Z_TYPE_P(op1) == IS_ARRAY || IS_PARTIAL_ARRAY(op1)) { in ct_eval_fetch_dim()
392 if (fetch_array_elem(&value, op1, op2) == SUCCESS && value && !IS_BOT(value)) { in ct_eval_fetch_dim()
396 } else if (support_strings && Z_TYPE_P(op1) == IS_STRING) { in ct_eval_fetch_dim()
401 if (index >= 0 && index < Z_STRLEN_P(op1)) { in ct_eval_fetch_dim()
402 ZVAL_STR(result, zend_string_init(&Z_STRVAL_P(op1)[index], 1, 0)); in ct_eval_fetch_dim()
410 static inline zend_result ct_eval_isset_isempty(zval *result, uint32_t extended_value, zval *op1) { in ct_eval_isset_isempty() argument
413 ZVAL_BOOL(result, op1 && Z_TYPE_P(op1) != IS_NULL); in ct_eval_isset_isempty()
415 } else if (!op1) { in ct_eval_isset_isempty()
418 } else if (ct_eval_bool_cast(&zv, op1) == SUCCESS) { in ct_eval_isset_isempty()
426 static inline zend_result ct_eval_isset_dim(zval *result, uint32_t extended_value, zval *op1, zval … in ct_eval_isset_dim() argument
427 if (Z_TYPE_P(op1) == IS_ARRAY || IS_PARTIAL_ARRAY(op1)) { in ct_eval_isset_dim()
429 if (fetch_array_elem(&value, op1, op2) == FAILURE) { in ct_eval_isset_dim()
432 if (IS_PARTIAL_ARRAY(op1) && (!value || IS_BOT(value))) { in ct_eval_isset_dim()
436 } else if (Z_TYPE_P(op1) == IS_STRING) { in ct_eval_isset_dim()
589 static inline zend_result fetch_obj_prop(zval **result, zval *op1, zval *op2) { in fetch_obj_prop() argument
592 *result = zend_symtable_find(Z_ARR_P(op1), Z_STR_P(op2)); in fetch_obj_prop()
599 static inline zend_result ct_eval_fetch_obj(zval *result, zval *op1, zval *op2) { in ct_eval_fetch_obj() argument
600 if (IS_PARTIAL_OBJECT(op1)) { in ct_eval_fetch_obj()
602 if (fetch_obj_prop(&value, op1, op2) == SUCCESS && value && !IS_BOT(value)) { in ct_eval_fetch_obj()
610 static inline zend_result ct_eval_isset_obj(zval *result, uint32_t extended_value, zval *op1, zval … in ct_eval_isset_obj() argument
611 if (IS_PARTIAL_OBJECT(op1)) { in ct_eval_isset_obj()
613 if (fetch_obj_prop(&value, op1, op2) == FAILURE) { in ct_eval_isset_obj()
666 static inline zend_result ct_eval_incdec(zval *result, uint8_t opcode, zval *op1) { in ct_eval_incdec() argument
672 if (Z_TYPE_P(op1) != IS_LONG && Z_TYPE_P(op1) != IS_DOUBLE && Z_TYPE_P(op1) != IS_NULL) { in ct_eval_incdec()
676 ZVAL_COPY(result, op1); in ct_eval_incdec()
684 if (Z_TYPE_P(op1) == IS_NULL) { in ct_eval_incdec()
693 static inline void ct_eval_type_check(zval *result, uint32_t type_mask, zval *op1) { in ct_eval_type_check() argument
694 uint32_t type = Z_TYPE_P(op1); in ct_eval_type_check()
703 static inline zend_result ct_eval_in_array(zval *result, uint32_t extended_value, zval *op1, zval *… in ct_eval_in_array() argument
711 if (EXPECTED(Z_TYPE_P(op1) == IS_STRING)) { in ct_eval_in_array()
712 res = zend_hash_exists(ht, Z_STR_P(op1)); in ct_eval_in_array()
714 if (EXPECTED(Z_TYPE_P(op1) == IS_LONG)) { in ct_eval_in_array()
715 res = zend_hash_index_exists(ht, Z_LVAL_P(op1)); in ct_eval_in_array()
719 } else if (Z_TYPE_P(op1) <= IS_FALSE) { in ct_eval_in_array()
728 if (zend_compare(op1, &key_tmp) == 0) { in ct_eval_in_array()
738 static inline zend_result ct_eval_array_key_exists(zval *result, zval *op1, zval *op2) { in ct_eval_array_key_exists() argument
744 if (Z_TYPE_P(op1) != IS_STRING && Z_TYPE_P(op1) != IS_LONG && Z_TYPE_P(op1) != IS_NULL) { in ct_eval_array_key_exists()
747 if (fetch_array_elem(&value, op2, op1) == FAILURE) { in ct_eval_array_key_exists()
870 zval *op1, *op2, zv; /* zv is a temporary to hold result values */ in sccp_visit_instr() local
872 op1 = get_op1_value(ctx, opline, ssa_op); in sccp_visit_instr()
880 if (IS_BOT(op1) && (ctx->scdf.ssa->var_info[ssa_op->op1_use].type & MAY_BE_REF)) { in sccp_visit_instr()
881 SET_RESULT_BOT(op1); in sccp_visit_instr()
884 SET_RESULT(op1, op2); in sccp_visit_instr()
894 op1 = &EG(uninitialized_zval); in sccp_visit_instr()
897 if (IS_BOT(op1)) { in sccp_visit_instr()
899 SET_RESULT_BOT(op1); in sccp_visit_instr()
903 SKIP_IF_TOP(op1); in sccp_visit_instr()
914 SET_RESULT(op1, &zv); in sccp_visit_instr()
917 SET_RESULT_BOT(op1); in sccp_visit_instr()
925 if ((IS_PARTIAL_ARRAY(op1) in sccp_visit_instr()
926 || Z_TYPE_P(op1) == IS_NULL in sccp_visit_instr()
927 || Z_TYPE_P(op1) == IS_FALSE in sccp_visit_instr()
928 || Z_TYPE_P(op1) == IS_ARRAY) in sccp_visit_instr()
931 if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) { in sccp_visit_instr()
934 dup_partial_array(&zv, op1); in sccp_visit_instr()
939 SET_RESULT(op1, &zv); in sccp_visit_instr()
941 SET_RESULT(op1, &zv); in sccp_visit_instr()
943 SET_RESULT_BOT(op1); in sccp_visit_instr()
948 SET_RESULT_BOT(op1); in sccp_visit_instr()
953 if (IS_PARTIAL_ARRAY(op1)) { in sccp_visit_instr()
954 dup_partial_array(&zv, op1); in sccp_visit_instr()
956 ZVAL_COPY(&zv, op1); in sccp_visit_instr()
962 SET_RESULT(op1, &zv); in sccp_visit_instr()
969 SET_RESULT(op1, &zv); in sccp_visit_instr()
972 SET_RESULT_BOT(op1); in sccp_visit_instr()
992 SET_RESULT_BOT(op1); in sccp_visit_instr()
996 if (IS_BOT(op1)) { in sccp_visit_instr()
998 SET_RESULT_BOT(op1); in sccp_visit_instr()
1002 SKIP_IF_TOP(op1); in sccp_visit_instr()
1010 SET_RESULT(op1, &zv); in sccp_visit_instr()
1017 if (IS_PARTIAL_OBJECT(op1) in sccp_visit_instr()
1018 || Z_TYPE_P(op1) == IS_NULL in sccp_visit_instr()
1019 || Z_TYPE_P(op1) == IS_FALSE) { in sccp_visit_instr()
1021 if (Z_TYPE_P(op1) == IS_NULL || Z_TYPE_P(op1) == IS_FALSE) { in sccp_visit_instr()
1024 dup_partial_object(&zv, op1); in sccp_visit_instr()
1028 SET_RESULT(op1, &zv); in sccp_visit_instr()
1030 SET_RESULT_BOT(op1); in sccp_visit_instr()
1034 SET_RESULT_BOT(op1); in sccp_visit_instr()
1039 if (IS_PARTIAL_OBJECT(op1)) { in sccp_visit_instr()
1040 dup_partial_object(&zv, op1); in sccp_visit_instr()
1042 ZVAL_COPY(&zv, op1); in sccp_visit_instr()
1047 SET_RESULT(op1, &zv); in sccp_visit_instr()
1050 SET_RESULT_BOT(op1); in sccp_visit_instr()
1057 SET_RESULT_BOT(op1); in sccp_visit_instr()
1072 if (IS_TOP(op1) || !call || !call->caller_call_opline in sccp_visit_instr()
1090 SET_RESULT_BOT(op1); in sccp_visit_instr()
1096 if (op1) { in sccp_visit_instr()
1097 SKIP_IF_TOP(op1); in sccp_visit_instr()
1114 SET_RESULT_BOT(op1); in sccp_visit_instr()
1125 if ((op1 && IS_BOT(op1)) in sccp_visit_instr()
1128 SET_RESULT_BOT(op1); in sccp_visit_instr()
1160 if (op1) { in sccp_visit_instr()
1164 } else if (ct_eval_add_array_elem(&zv, op1, op2) == SUCCESS) { in sccp_visit_instr()
1165 if (IS_PARTIAL_ARRAY(op1)) { in sccp_visit_instr()
1182 if (IS_BOT(result) || IS_BOT(op1)) { in sccp_visit_instr()
1187 SKIP_IF_TOP(op1); in sccp_visit_instr()
1197 if (ct_eval_add_array_unpack(&zv, op1) == SUCCESS) { in sccp_visit_instr()
1220 SET_RESULT_BOT(op1); in sccp_visit_instr()
1224 SET_RESULT_BOT(op1); in sccp_visit_instr()
1228 if ((op1 && IS_BOT(op1)) || (op2 && IS_BOT(op2))) { in sccp_visit_instr()
1232 SET_RESULT_BOT(op1); in sccp_visit_instr()
1260 SKIP_IF_TOP(op1); in sccp_visit_instr()
1263 if (ct_eval_binary_op(&zv, opline->opcode, op1, op2) == SUCCESS) { in sccp_visit_instr()
1274 if (op1) { in sccp_visit_instr()
1275 SKIP_IF_TOP(op1); in sccp_visit_instr()
1281 if (ct_eval_binary_op(&zv, opline->extended_value, op1, op2) == SUCCESS) { in sccp_visit_instr()
1282 SET_RESULT(op1, &zv); in sccp_visit_instr()
1288 if ((IS_PARTIAL_ARRAY(op1) || Z_TYPE_P(op1) == IS_ARRAY) in sccp_visit_instr()
1295 if (ct_eval_fetch_dim(&tmp, op1, op2, 0) == SUCCESS) { in sccp_visit_instr()
1297 dup_partial_array(&zv, op1); in sccp_visit_instr()
1300 SET_RESULT(op1, &zv); in sccp_visit_instr()
1308 SET_RESULT_BOT(op1); in sccp_visit_instr()
1313 if (IS_PARTIAL_ARRAY(op1)) { in sccp_visit_instr()
1314 dup_partial_array(&zv, op1); in sccp_visit_instr()
1316 ZVAL_COPY(&zv, op1); in sccp_visit_instr()
1321 SET_RESULT(op1, &zv); in sccp_visit_instr()
1332 if (op1 && IS_PARTIAL_OBJECT(op1) in sccp_visit_instr()
1340 if (ct_eval_fetch_obj(&tmp, op1, op2) == SUCCESS) { in sccp_visit_instr()
1342 dup_partial_object(&zv, op1); in sccp_visit_instr()
1345 SET_RESULT(op1, &zv); in sccp_visit_instr()
1353 SET_RESULT_BOT(op1); in sccp_visit_instr()
1358 dup_partial_object(&zv, op1); in sccp_visit_instr()
1362 SET_RESULT(op1, &zv); in sccp_visit_instr()
1374 SET_RESULT_BOT(op1); in sccp_visit_instr()
1380 if (op1) { in sccp_visit_instr()
1381 SKIP_IF_TOP(op1); in sccp_visit_instr()
1383 if (IS_PARTIAL_OBJECT(op1) in sccp_visit_instr()
1388 if (ct_eval_fetch_obj(&tmp1, op1, op2) == SUCCESS) { in sccp_visit_instr()
1390 dup_partial_object(&zv, op1); in sccp_visit_instr()
1399 SET_RESULT(op1, &zv); in sccp_visit_instr()
1407 SET_RESULT_BOT(op1); in sccp_visit_instr()
1412 SKIP_IF_TOP(op1); in sccp_visit_instr()
1413 if (ct_eval_incdec(&zv, opline->opcode, op1) == SUCCESS) { in sccp_visit_instr()
1414 SET_RESULT(op1, &zv); in sccp_visit_instr()
1419 SET_RESULT_BOT(op1); in sccp_visit_instr()
1424 SKIP_IF_TOP(op1); in sccp_visit_instr()
1425 SET_RESULT(result, op1); in sccp_visit_instr()
1426 if (ct_eval_incdec(&zv, opline->opcode, op1) == SUCCESS) { in sccp_visit_instr()
1427 SET_RESULT(op1, &zv); in sccp_visit_instr()
1431 SET_RESULT_BOT(op1); in sccp_visit_instr()
1435 SKIP_IF_TOP(op1); in sccp_visit_instr()
1436 if (IS_PARTIAL_ARRAY(op1)) { in sccp_visit_instr()
1440 if (zend_optimizer_eval_unary_op(&zv, opline->opcode, op1) == SUCCESS) { in sccp_visit_instr()
1448 SKIP_IF_TOP(op1); in sccp_visit_instr()
1449 if (IS_PARTIAL_ARRAY(op1)) { in sccp_visit_instr()
1453 if (zend_optimizer_eval_cast(&zv, opline->extended_value, op1) == SUCCESS) { in sccp_visit_instr()
1463 SKIP_IF_TOP(op1); in sccp_visit_instr()
1464 if (ct_eval_bool_cast(&zv, op1) == SUCCESS) { in sccp_visit_instr()
1472 SKIP_IF_TOP(op1); in sccp_visit_instr()
1473 if (zend_optimizer_eval_strlen(&zv, op1) == SUCCESS) { in sccp_visit_instr()
1482 SKIP_IF_TOP(op1); in sccp_visit_instr()
1483 if (Z_TYPE_P(op1) == IS_ARRAY && zend_hash_num_elements(Z_ARR_P(op1)) == 0) { in sccp_visit_instr()
1491 SKIP_IF_TOP(op1); in sccp_visit_instr()
1492 if (Z_TYPE_P(op1) == IS_ARRAY) { in sccp_visit_instr()
1493 ZVAL_LONG(&zv, zend_hash_num_elements(Z_ARRVAL_P(op1))); in sccp_visit_instr()
1501 SKIP_IF_TOP(op1); in sccp_visit_instr()
1503 if (ct_eval_in_array(&zv, opline->extended_value, op1, op2) == SUCCESS) { in sccp_visit_instr()
1511 SKIP_IF_TOP(op1); in sccp_visit_instr()
1513 if (ct_eval_array_key_exists(&zv, op1, op2) == SUCCESS) { in sccp_visit_instr()
1523 SKIP_IF_TOP(op1); in sccp_visit_instr()
1526 if (ct_eval_fetch_dim(&zv, op1, op2, (opline->opcode != ZEND_FETCH_LIST_R)) == SUCCESS) { in sccp_visit_instr()
1534 SKIP_IF_TOP(op1); in sccp_visit_instr()
1537 if (ct_eval_isset_dim(&zv, opline->extended_value, op1, op2) == SUCCESS) { in sccp_visit_instr()
1546 if (op1) { in sccp_visit_instr()
1547 SKIP_IF_TOP(op1); in sccp_visit_instr()
1550 if (ct_eval_fetch_obj(&zv, op1, op2) == SUCCESS) { in sccp_visit_instr()
1559 if (op1) { in sccp_visit_instr()
1560 SKIP_IF_TOP(op1); in sccp_visit_instr()
1563 if (ct_eval_isset_obj(&zv, opline->extended_value, op1, op2) == SUCCESS) { in sccp_visit_instr()
1575 SET_RESULT(result, op1); in sccp_visit_instr()
1596 SKIP_IF_TOP(op1); in sccp_visit_instr()
1597 if (ct_eval_isset_isempty(&zv, opline->extended_value, op1) == SUCCESS) { in sccp_visit_instr()
1605 SKIP_IF_TOP(op1); in sccp_visit_instr()
1606 ct_eval_type_check(&zv, opline->extended_value, op1); in sccp_visit_instr()
1611 SKIP_IF_TOP(op1); in sccp_visit_instr()
1633 SKIP_IF_TOP(op1); in sccp_visit_instr()
1635 if (ct_eval_binary_op(&zv, ZEND_CONCAT, op1, op2) == SUCCESS) { in sccp_visit_instr()
1715 SET_RESULT_BOT(op1); in sccp_visit_instr()
1779 zval *op1, zv; in sccp_mark_feasible_successors() local
1794 op1 = get_op1_value(ctx, opline, ssa_op); in sccp_mark_feasible_successors()
1795 if (IS_BOT(op1)) { in sccp_mark_feasible_successors()
1797 op1 = value_from_type_and_range(ctx, ssa_op->op1_use, &zv); in sccp_mark_feasible_successors()
1801 if (!op1 || IS_BOT(op1)) { in sccp_mark_feasible_successors()
1809 if (IS_TOP(op1)) { in sccp_mark_feasible_successors()
1817 if (ct_eval_bool_cast(&zv, op1) == FAILURE) { in sccp_mark_feasible_successors()
1829 if (ct_eval_bool_cast(&zv, op1) == FAILURE) { in sccp_mark_feasible_successors()
1838 s = (Z_TYPE_P(op1) == IS_NULL); in sccp_mark_feasible_successors()
1841 s = (Z_TYPE_P(op1) != IS_NULL); in sccp_mark_feasible_successors()
1847 if (Z_TYPE_P(op1) != IS_ARRAY || in sccp_mark_feasible_successors()
1848 (IS_PARTIAL_ARRAY(op1) && zend_hash_num_elements(Z_ARR_P(op1)) == 0)) { in sccp_mark_feasible_successors()
1853 s = zend_hash_num_elements(Z_ARR_P(op1)) != 0; in sccp_mark_feasible_successors()
1860 uint8_t type = Z_TYPE_P(op1); in sccp_mark_feasible_successors()
1871 ? zend_hash_index_find(jmptable, Z_LVAL_P(op1)) in sccp_mark_feasible_successors()
1872 : zend_hash_find(jmptable, Z_STR_P(op1)); in sccp_mark_feasible_successors()