Lines Matching refs:opline

37 	zend_op *opline;  in zend_optimizer_pass2()  local
40 opline = op_array->opcodes; in zend_optimizer_pass2()
41 while (opline < end) { in zend_optimizer_pass2()
42 switch (opline->opcode) { in zend_optimizer_pass2()
48 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass2()
49 if (Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass2()
51 …if (is_numeric_string(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)), NULL… in zend_optimizer_pass2()
52 convert_scalar_to_number(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
56 if (opline->op2_type == IS_CONST) { in zend_optimizer_pass2()
57 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass2()
59 …if (is_numeric_string(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)), NULL… in zend_optimizer_pass2()
60 convert_scalar_to_number(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass2()
69 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass2()
70 if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_LONG) { in zend_optimizer_pass2()
72 if (!(Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING in zend_optimizer_pass2()
73 …&& !is_numeric_string(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)), NULL… in zend_optimizer_pass2()
74 convert_to_long(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
78 if (opline->op2_type == IS_CONST) { in zend_optimizer_pass2()
79 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_LONG) { in zend_optimizer_pass2()
81 if (!(Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING in zend_optimizer_pass2()
82 …&& !is_numeric_string(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)), NULL… in zend_optimizer_pass2()
83 convert_to_long(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass2()
91 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass2()
92 if (Z_TYPE(ZEND_OP1_LITERAL(opline)) != IS_STRING) { in zend_optimizer_pass2()
93 convert_to_string(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
96 if (opline->op2_type == IS_CONST) { in zend_optimizer_pass2()
97 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { in zend_optimizer_pass2()
98 convert_to_string(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass2()
104 if (opline->op2_type == IS_CONST) { in zend_optimizer_pass2()
105 if (opline->extended_value == ZEND_ADD in zend_optimizer_pass2()
106 || opline->extended_value == ZEND_SUB in zend_optimizer_pass2()
107 || opline->extended_value == ZEND_MUL in zend_optimizer_pass2()
108 || opline->extended_value == ZEND_DIV in zend_optimizer_pass2()
109 || opline->extended_value == ZEND_POW) { in zend_optimizer_pass2()
110 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass2()
112 …if (is_numeric_string(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)), NULL… in zend_optimizer_pass2()
113 convert_scalar_to_number(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass2()
116 } else if (opline->extended_value == ZEND_MOD in zend_optimizer_pass2()
117 || opline->extended_value == ZEND_SL in zend_optimizer_pass2()
118 || opline->extended_value == ZEND_SR) { in zend_optimizer_pass2()
119 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_LONG) { in zend_optimizer_pass2()
121 if (!(Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING in zend_optimizer_pass2()
122 …&& !is_numeric_string(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)), NULL… in zend_optimizer_pass2()
123 convert_to_long(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass2()
126 } else if (opline->extended_value == ZEND_CONCAT) { in zend_optimizer_pass2()
127 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) != IS_STRING) { in zend_optimizer_pass2()
128 convert_to_string(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass2()
142 if (opline->op1_type == IS_TMP_VAR && in zend_optimizer_pass2()
143 opline->result_type == IS_TMP_VAR && in zend_optimizer_pass2()
144 opline->op1.var == opline->result.var) { in zend_optimizer_pass2()
145 opline->opcode -= 3; in zend_optimizer_pass2()
146 SET_UNUSED(opline->result); in zend_optimizer_pass2()
151 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass2()
152 int should_jmp = zend_is_true(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
153 if (opline->opcode == ZEND_JMPZ_EX) { in zend_optimizer_pass2()
157 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass2()
158 SET_UNUSED(opline->op2); in zend_optimizer_pass2()
165 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass2()
166 int should_jmp = zend_is_true(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
168 if (opline->opcode == ZEND_JMPZ) { in zend_optimizer_pass2()
171 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
172 opline->op1_type = IS_UNUSED; in zend_optimizer_pass2()
174 opline->opcode = ZEND_JMP; in zend_optimizer_pass2()
175 COPY_NODE(opline->op1, opline->op2); in zend_optimizer_pass2()
177 MAKE_NOP(opline); in zend_optimizer_pass2()
181 if ((opline + 1)->opcode == ZEND_JMP) { in zend_optimizer_pass2()
184 if (ZEND_OP2_JMP_ADDR(opline) == ZEND_OP1_JMP_ADDR(opline + 1)) { in zend_optimizer_pass2()
186 if (opline->op1_type == IS_CV) { in zend_optimizer_pass2()
187 opline->opcode = ZEND_CHECK_VAR; in zend_optimizer_pass2()
188 opline->op2.num = 0; in zend_optimizer_pass2()
189 } else if (opline->op1_type & (IS_TMP_VAR|IS_VAR)) { in zend_optimizer_pass2()
190 opline->opcode = ZEND_FREE; in zend_optimizer_pass2()
191 opline->op2.num = 0; in zend_optimizer_pass2()
193 MAKE_NOP(opline); in zend_optimizer_pass2()
196 if (opline->opcode == ZEND_JMPZ) { in zend_optimizer_pass2()
197 opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, ZEND_OP1_JMP_ADDR(opline + 1)); in zend_optimizer_pass2()
199 opline->extended_value = ZEND_OPLINE_TO_OFFSET(opline, ZEND_OP2_JMP_ADDR(opline)); in zend_optimizer_pass2()
200 ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP1_JMP_ADDR(opline + 1)); in zend_optimizer_pass2()
202 opline->opcode = ZEND_JMPZNZ; in zend_optimizer_pass2()
208 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass2()
211 if (zend_is_true(&ZEND_OP1_LITERAL(opline))) { in zend_optimizer_pass2()
212 target_opline = ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value); /* JMPNZ */ in zend_optimizer_pass2()
214 target_opline = ZEND_OP2_JMP_ADDR(opline); /* JMPZ */ in zend_optimizer_pass2()
216 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass2()
217 ZEND_SET_OP_JMP_ADDR(opline, opline->op1, target_opline); in zend_optimizer_pass2()
218 opline->op1_type = IS_UNUSED; in zend_optimizer_pass2()
219 opline->opcode = ZEND_JMP; in zend_optimizer_pass2()
223 opline++; in zend_optimizer_pass2()