Lines Matching refs:opline

43 	zend_op *opline = op_array->opcodes;  in zend_optimizer_pass1()  local
44 zend_op *end = opline + op_array->last; in zend_optimizer_pass1()
48 while (opline < end) { in zend_optimizer_pass1()
49 switch (opline->opcode) { in zend_optimizer_pass1()
72 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
73 opline->op2_type == IS_CONST) { in zend_optimizer_pass1()
77 …if (zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LI… in zend_optimizer_pass1()
78 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
79 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
80 …if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_TMP_VAR, opline->result.var, &result)… in zend_optimizer_pass1()
81 MAKE_NOP(opline); in zend_optimizer_pass1()
83 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
84 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
85 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimizer_pass1()
92 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
96 …if (zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCES… in zend_optimizer_pass1()
97 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
98 …if (zend_optimizer_replace_by_const(op_array, opline + 1, opline->result_type, opline->result.var,… in zend_optimizer_pass1()
99 MAKE_NOP(opline); in zend_optimizer_pass1()
101 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
102 opline->extended_value = 0; in zend_optimizer_pass1()
103 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimizer_pass1()
109 if (opline->extended_value == _IS_BOOL) { in zend_optimizer_pass1()
111 opline->opcode = ZEND_BOOL; in zend_optimizer_pass1()
112 opline->extended_value = 0; in zend_optimizer_pass1()
118 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
122 … if (zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
123 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
124 …if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_TMP_VAR, opline->result.var, &result)… in zend_optimizer_pass1()
125 MAKE_NOP(opline); in zend_optimizer_pass1()
127 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
128 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimizer_pass1()
138 zend_op *next_op = opline + 1; in zend_optimizer_pass1()
139 int requires_conversion = (opline->opcode == ZEND_ADD_CHAR? 1 : 0); in zend_optimizer_pass1()
151 if (opline->result.var != next_op->result.var) { in zend_optimizer_pass1()
165 final_length += (requires_conversion? 1 : Z_STRLEN(ZEND_OP2_LITERAL(opline))); in zend_optimizer_pass1()
171 char chval = (char)Z_LVAL(ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
173 ZVAL_NEW_STR(&ZEND_OP2_LITERAL(opline), str); in zend_optimizer_pass1()
175 opline->opcode = ZEND_ADD_STRING; in zend_optimizer_pass1()
178 memcpy(ptr, Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline))); in zend_optimizer_pass1()
179 ptr += Z_STRLEN(ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
180 zend_string_release(Z_STR(ZEND_OP2_LITERAL(opline))); in zend_optimizer_pass1()
181 ZVAL_NEW_STR(&ZEND_OP2_LITERAL(opline), str); in zend_optimizer_pass1()
183 next_op = opline + 1; in zend_optimizer_pass1()
198 if (last_op-opline >= 3) { /* If we have more than 2 NOPS then JMP over them */ in zend_optimizer_pass1()
199 (opline + 1)->opcode = ZEND_JMP; in zend_optimizer_pass1()
200 …(opline + 1)->op1.opline_num = last_op - op_array->opcodes; /* that's OK even for ZE2, since oplin… in zend_optimizer_pass1()
208 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
209 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
210 Z_STRLEN(ZEND_OP2_LITERAL(opline)) == sizeof("__COMPILER_HALT_OFFSET__") - 1 && in zend_optimizer_pass1()
211 …memcmp(Z_STRVAL(ZEND_OP2_LITERAL(opline)), "__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFF… in zend_optimizer_pass1()
222 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
223 … if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, offset)) { in zend_optimizer_pass1()
224 MAKE_NOP(opline); in zend_optimizer_pass1()
226 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
227 opline->extended_value = 0; in zend_optimizer_pass1()
228 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
229 zend_optimizer_update_op1_const(op_array, opline, offset); in zend_optimizer_pass1()
236 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
237 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
241 if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP2_LITERAL(opline)), &c, 1)) { in zend_optimizer_pass1()
242 …nstants || !zend_optimizer_get_collected_constant(ctx->constants, &ZEND_OP2_LITERAL(opline), &c)) { in zend_optimizer_pass1()
249 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
250 if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, &c)) { in zend_optimizer_pass1()
251 MAKE_NOP(opline); in zend_optimizer_pass1()
253 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
254 opline->extended_value = 0; in zend_optimizer_pass1()
255 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
256 zend_optimizer_update_op1_const(op_array, opline, &c); in zend_optimizer_pass1()
262 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
263 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
267 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
268 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
271 !strncasecmp(Z_STRVAL(ZEND_OP1_LITERAL(opline)), in zend_optimizer_pass1()
272 ZSTR_VAL(op_array->scope->name), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1)) { in zend_optimizer_pass1()
276 Z_STR(op_array->literals[opline->op1.constant + 1]))) == NULL || in zend_optimizer_pass1()
285 opline->op1_type == IS_UNUSED && in zend_optimizer_pass1()
286 (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) { in zend_optimizer_pass1()
290 opline->op1_type == IS_VAR && in zend_optimizer_pass1()
291 (opline - 1)->opcode == ZEND_FETCH_CLASS && in zend_optimizer_pass1()
292 ((opline - 1)->op1_type == IS_UNUSED && in zend_optimizer_pass1()
293 ((opline - 1)->extended_value & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) && in zend_optimizer_pass1()
294 (opline - 1)->result.var == opline->op1.var) { in zend_optimizer_pass1()
304 Z_STR(ZEND_OP2_LITERAL(opline)))) != NULL && in zend_optimizer_pass1()
320 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
321 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
322 } else if (opline->op1_type == IS_VAR) { in zend_optimizer_pass1()
323 MAKE_NOP((opline - 1)); in zend_optimizer_pass1()
325 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
327 if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
328 MAKE_NOP(opline); in zend_optimizer_pass1()
330 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
331 opline->extended_value = 0; in zend_optimizer_pass1()
332 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
333 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
341 zend_op *send1_opline = opline - 1; in zend_optimizer_pass1()
391 if (RESULT_UNUSED(opline) && in zend_optimizer_pass1()
394 opline->opcode = ZEND_DECLARE_CONST; in zend_optimizer_pass1()
395 opline->op1_type = IS_CONST; in zend_optimizer_pass1()
396 opline->op2_type = IS_CONST; in zend_optimizer_pass1()
397 opline->result_type = IS_UNUSED; in zend_optimizer_pass1()
398 opline->op1.constant = send1_opline->op1.constant; in zend_optimizer_pass1()
399 opline->op2.constant = send2_opline->op1.constant; in zend_optimizer_pass1()
400 opline->result.num = 0; in zend_optimizer_pass1()
449 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
450 MAKE_NOP(opline); in zend_optimizer_pass1()
452 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
453 opline->extended_value = 0; in zend_optimizer_pass1()
454 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
455 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
493 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
494 MAKE_NOP(opline); in zend_optimizer_pass1()
496 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
497 opline->extended_value = 0; in zend_optimizer_pass1()
498 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
499 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
513 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
514 MAKE_NOP(opline); in zend_optimizer_pass1()
516 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
517 opline->extended_value = 0; in zend_optimizer_pass1()
518 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
519 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
539 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
540 MAKE_NOP(opline); in zend_optimizer_pass1()
542 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
543 opline->extended_value = 0; in zend_optimizer_pass1()
544 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
545 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
558 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
561 if (zend_optimizer_eval_strlen(&t, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
562 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
563 … if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_TMP_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
564 MAKE_NOP(opline); in zend_optimizer_pass1()
566 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
567 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
575 if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP1_LITERAL(opline)), &c, 0)) { in zend_optimizer_pass1()
579 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
580 if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, &c)) { in zend_optimizer_pass1()
581 MAKE_NOP(opline); in zend_optimizer_pass1()
583 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
584 zend_optimizer_update_op1_const(op_array, opline, &c); in zend_optimizer_pass1()
590 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
591 Z_TYPE(ZEND_OP2_LITERAL(opline)) <= IS_STRING) { in zend_optimizer_pass1()
592 zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
620 opline++; in zend_optimizer_pass1()