Lines Matching refs:opline

41 	zend_op *opline = op_array->opcodes;  in zend_optimizer_pass1()  local
42 zend_op *end = opline + op_array->last; in zend_optimizer_pass1()
46 while (opline < end) { in zend_optimizer_pass1()
47 switch (opline->opcode) { in zend_optimizer_pass1()
70 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
71 opline->op2_type == IS_CONST) { in zend_optimizer_pass1()
75 …if (zend_optimizer_eval_binary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LI… in zend_optimizer_pass1()
76 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
77 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
78 …if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_TMP_VAR, opline->result.var, &result)… in zend_optimizer_pass1()
79 MAKE_NOP(opline); in zend_optimizer_pass1()
81 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
82 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
83 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimizer_pass1()
90 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
94 …if (zend_optimizer_eval_cast(&result, opline->extended_value, &ZEND_OP1_LITERAL(opline)) == SUCCES… in zend_optimizer_pass1()
95 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
96 …if (zend_optimizer_replace_by_const(op_array, opline + 1, opline->result_type, opline->result.var,… in zend_optimizer_pass1()
97 MAKE_NOP(opline); in zend_optimizer_pass1()
99 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
100 opline->extended_value = 0; in zend_optimizer_pass1()
101 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimizer_pass1()
107 if (opline->extended_value == _IS_BOOL) { in zend_optimizer_pass1()
109 opline->opcode = ZEND_BOOL; in zend_optimizer_pass1()
110 opline->extended_value = 0; in zend_optimizer_pass1()
116 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
120 … if (zend_optimizer_eval_unary_op(&result, opline->opcode, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
121 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
122 …if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_TMP_VAR, opline->result.var, &result)… in zend_optimizer_pass1()
123 MAKE_NOP(opline); in zend_optimizer_pass1()
125 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
126 zend_optimizer_update_op1_const(op_array, opline, &result); in zend_optimizer_pass1()
133 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
134 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
135 Z_STRLEN(ZEND_OP2_LITERAL(opline)) == sizeof("__COMPILER_HALT_OFFSET__") - 1 && in zend_optimizer_pass1()
136 …memcmp(Z_STRVAL(ZEND_OP2_LITERAL(opline)), "__COMPILER_HALT_OFFSET__", sizeof("__COMPILER_HALT_OFF… in zend_optimizer_pass1()
147 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
148 … if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, offset)) { in zend_optimizer_pass1()
149 MAKE_NOP(opline); in zend_optimizer_pass1()
151 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
152 opline->extended_value = 0; in zend_optimizer_pass1()
153 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
154 zend_optimizer_update_op1_const(op_array, opline, offset); in zend_optimizer_pass1()
161 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
162 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
166 if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP2_LITERAL(opline)), &c, 1)) { in zend_optimizer_pass1()
167 …nstants || !zend_optimizer_get_collected_constant(ctx->constants, &ZEND_OP2_LITERAL(opline), &c)) { in zend_optimizer_pass1()
174 literal_dtor(&ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
175 if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, &c)) { in zend_optimizer_pass1()
176 MAKE_NOP(opline); in zend_optimizer_pass1()
178 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
179 opline->extended_value = 0; in zend_optimizer_pass1()
180 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
181 zend_optimizer_update_op1_const(op_array, opline, &c); in zend_optimizer_pass1()
187 if (opline->op2_type == IS_CONST && in zend_optimizer_pass1()
188 Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
192 if (opline->op1_type == IS_CONST && in zend_optimizer_pass1()
193 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING) { in zend_optimizer_pass1()
196 !strncasecmp(Z_STRVAL(ZEND_OP1_LITERAL(opline)), in zend_optimizer_pass1()
197 ZSTR_VAL(op_array->scope->name), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1)) { in zend_optimizer_pass1()
201 Z_STR(op_array->literals[opline->op1.constant + 1]))) == NULL || in zend_optimizer_pass1()
210 opline->op1_type == IS_UNUSED && in zend_optimizer_pass1()
211 (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) { in zend_optimizer_pass1()
215 opline->op1_type == IS_VAR && in zend_optimizer_pass1()
216 (opline - 1)->opcode == ZEND_FETCH_CLASS && in zend_optimizer_pass1()
217 ((opline - 1)->op2_type == IS_UNUSED && in zend_optimizer_pass1()
218 ((opline - 1)->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) && in zend_optimizer_pass1()
219 (opline - 1)->result.var == opline->op1.var) { in zend_optimizer_pass1()
229 Z_STR(ZEND_OP2_LITERAL(opline)))) != NULL && in zend_optimizer_pass1()
243 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
244 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
245 } else if (opline->op1_type == IS_VAR) { in zend_optimizer_pass1()
246 MAKE_NOP((opline - 1)); in zend_optimizer_pass1()
248 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, &t)) { 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, &t); in zend_optimizer_pass1()
264 zend_op *send1_opline = opline - 1; in zend_optimizer_pass1()
314 if (RESULT_UNUSED(opline) && in zend_optimizer_pass1()
317 opline->opcode = ZEND_DECLARE_CONST; in zend_optimizer_pass1()
318 opline->op1_type = IS_CONST; in zend_optimizer_pass1()
319 opline->op2_type = IS_CONST; in zend_optimizer_pass1()
320 opline->result_type = IS_UNUSED; in zend_optimizer_pass1()
321 opline->op1.constant = send1_opline->op1.constant; in zend_optimizer_pass1()
322 opline->op2.constant = send2_opline->op1.constant; in zend_optimizer_pass1()
323 opline->result.num = 0; in zend_optimizer_pass1()
372 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
373 MAKE_NOP(opline); in zend_optimizer_pass1()
375 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
376 opline->extended_value = 0; in zend_optimizer_pass1()
377 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
378 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
416 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
417 MAKE_NOP(opline); in zend_optimizer_pass1()
419 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
420 opline->extended_value = 0; in zend_optimizer_pass1()
421 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
422 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
436 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
437 MAKE_NOP(opline); in zend_optimizer_pass1()
439 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
440 opline->extended_value = 0; in zend_optimizer_pass1()
441 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
442 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
462 if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
463 MAKE_NOP(opline); in zend_optimizer_pass1()
465 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
466 opline->extended_value = 0; in zend_optimizer_pass1()
467 SET_UNUSED(opline->op2); in zend_optimizer_pass1()
468 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
481 if (opline->op1_type == IS_CONST) { in zend_optimizer_pass1()
484 if (zend_optimizer_eval_strlen(&t, &ZEND_OP1_LITERAL(opline)) == SUCCESS) { in zend_optimizer_pass1()
485 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
486 … if (zend_optimizer_replace_by_const(op_array, opline + 1, IS_TMP_VAR, opline->result.var, &t)) { in zend_optimizer_pass1()
487 MAKE_NOP(opline); in zend_optimizer_pass1()
489 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
490 zend_optimizer_update_op1_const(op_array, opline, &t); in zend_optimizer_pass1()
498 if (!zend_optimizer_get_persistent_constant(Z_STR(ZEND_OP1_LITERAL(opline)), &c, 0)) { in zend_optimizer_pass1()
502 literal_dtor(&ZEND_OP1_LITERAL(opline)); in zend_optimizer_pass1()
503 if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, opline->result.var, &c)) { in zend_optimizer_pass1()
504 MAKE_NOP(opline); in zend_optimizer_pass1()
506 opline->opcode = ZEND_QM_ASSIGN; in zend_optimizer_pass1()
507 zend_optimizer_update_op1_const(op_array, opline, &c); in zend_optimizer_pass1()
513 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
514 Z_TYPE(ZEND_OP2_LITERAL(opline)) <= IS_STRING) { in zend_optimizer_pass1()
515 zend_optimizer_collect_constant(ctx, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline)); in zend_optimizer_pass1()
527 if ((opline->extended_value & ZEND_FETCH_GLOBAL) != 0 && in zend_optimizer_pass1()
528 opline->op1_type == IS_CONST && in zend_optimizer_pass1()
529 Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING && in zend_optimizer_pass1()
530 zend_string_equals_literal(Z_STR(ZEND_OP1_LITERAL(opline)), "GLOBALS") && in zend_optimizer_pass1()
531 ((opline + 1)->opcode == opline->opcode + 1 || in zend_optimizer_pass1()
532 ((opline + 1)->opcode == ZEND_UNSET_DIM && in zend_optimizer_pass1()
533 opline->opcode == ZEND_FETCH_UNSET) || in zend_optimizer_pass1()
534 ((opline + 1)->opcode == ZEND_ISSET_ISEMPTY_DIM_OBJ && in zend_optimizer_pass1()
535 opline->opcode == ZEND_FETCH_IS)) && in zend_optimizer_pass1()
536 (opline + 1)->op1_type == opline->result_type && in zend_optimizer_pass1()
537 (opline + 1)->op1.var == opline->result.var && in zend_optimizer_pass1()
538 ((opline + 1)->op2_type != IS_CONST || in zend_optimizer_pass1()
539 Z_TYPE(ZEND_OP2_LITERAL(opline + 1)) < IS_ARRAY)) { in zend_optimizer_pass1()
541 if ((opline + 1)->opcode == ZEND_UNSET_DIM) { in zend_optimizer_pass1()
542 (opline + 1)->opcode = ZEND_UNSET_VAR; in zend_optimizer_pass1()
543 (opline + 1)->extended_value = ZEND_FETCH_GLOBAL; in zend_optimizer_pass1()
544 } else if ((opline + 1)->opcode == ZEND_ISSET_ISEMPTY_DIM_OBJ) { in zend_optimizer_pass1()
545 (opline + 1)->opcode = ZEND_ISSET_ISEMPTY_VAR; in zend_optimizer_pass1()
546 (opline + 1)->extended_value |= ZEND_FETCH_GLOBAL; in zend_optimizer_pass1()
548 (opline + 1)->opcode = opline->opcode; in zend_optimizer_pass1()
549 (opline + 1)->extended_value = ZEND_FETCH_GLOBAL; in zend_optimizer_pass1()
551 (opline + 1)->op1_type = (opline + 1)->op2_type; in zend_optimizer_pass1()
552 (opline + 1)->op1 = (opline + 1)->op2; in zend_optimizer_pass1()
553 if ((opline + 1)->op1_type == IS_CONST && in zend_optimizer_pass1()
554 Z_TYPE(ZEND_OP1_LITERAL(opline + 1)) != IS_STRING) { in zend_optimizer_pass1()
556 convert_to_string(&ZEND_OP1_LITERAL(opline + 1)); in zend_optimizer_pass1()
557 zend_string_hash_val(Z_STR(ZEND_OP1_LITERAL(opline + 1))); in zend_optimizer_pass1()
559 SET_UNUSED((opline + 1)->op2); in zend_optimizer_pass1()
560 MAKE_NOP(opline); in zend_optimizer_pass1()
589 opline++; in zend_optimizer_pass1()