Lines Matching refs:opline

235 static inline void alloc_cache_slots_op1(zend_op_array *op_array, zend_op *opline, uint32_t num) {  in alloc_cache_slots_op1()  argument
236 Z_CACHE_SLOT(op_array->literals[opline->op1.constant]) = op_array->cache_size; in alloc_cache_slots_op1()
239 static inline void alloc_cache_slots_op2(zend_op_array *op_array, zend_op *opline, uint32_t num) { in alloc_cache_slots_op2() argument
240 Z_CACHE_SLOT(op_array->literals[opline->op2.constant]) = op_array->cache_size; in alloc_cache_slots_op2()
258 zend_op *opline, in zend_optimizer_update_op1_const() argument
261 switch (opline->opcode) { in zend_optimizer_update_op1_const()
264 MAKE_NOP(opline); in zend_optimizer_update_op1_const()
283 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
284 alloc_cache_slots_op1(op_array, opline, 1); in zend_optimizer_update_op1_const()
294 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
295 alloc_cache_slots_op1(op_array, opline, 2); in zend_optimizer_update_op1_const()
298 opline->opcode = ZEND_SEND_VAL; in zend_optimizer_update_op1_const()
299 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
323 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
327 opline->op1_type = IS_CONST; in zend_optimizer_update_op1_const()
328 if (Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING) { in zend_optimizer_update_op1_const()
329 zend_string_hash_val(Z_STR(ZEND_OP1_LITERAL(opline))); in zend_optimizer_update_op1_const()
335 zend_op *opline, in zend_optimizer_update_op2_const() argument
340 switch (opline->opcode) { in zend_optimizer_update_op2_const()
360 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
362 alloc_cache_slots_op2(op_array, opline, 1); in zend_optimizer_update_op2_const()
373 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
374 alloc_cache_slots_op2(op_array, opline, 1); in zend_optimizer_update_op2_const()
382 if (zend_optimizer_classify_function(Z_STR_P(val), opline->extended_value)) { in zend_optimizer_update_op2_const()
388 opline->opcode = ZEND_INIT_FCALL_BY_NAME; in zend_optimizer_update_op2_const()
390 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
392 alloc_cache_slots_op2(op_array, opline, 1); in zend_optimizer_update_op2_const()
394 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
400 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
402 alloc_cache_slots_op2(op_array, opline, 2); in zend_optimizer_update_op2_const()
419 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
420 alloc_cache_slots_op2(op_array, opline, 2); in zend_optimizer_update_op2_const()
434 if (opline->extended_value == ZEND_ASSIGN_OBJ) { in zend_optimizer_update_op2_const()
436 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
437 alloc_cache_slots_op2(op_array, opline, 2); in zend_optimizer_update_op2_const()
439 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
461 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
471 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
475 opline->op2_type = IS_CONST; in zend_optimizer_update_op2_const()
476 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_update_op2_const()
477 zend_string_hash_val(Z_STR(ZEND_OP2_LITERAL(opline))); in zend_optimizer_update_op2_const()
504 zend_op *opline = op_array->opcodes; in zend_optimizer_remove_live_range() local
505 zend_op *end = opline + op_array->last; in zend_optimizer_remove_live_range()
507 while (opline != end) { in zend_optimizer_remove_live_range()
508 if ((opline->opcode == ZEND_FREE || opline->opcode == ZEND_FE_FREE) && in zend_optimizer_remove_live_range()
509 opline->extended_value == ZEND_FREE_ON_RETURN) { in zend_optimizer_remove_live_range()
510 opline->op2.num = map[opline->op2.num]; in zend_optimizer_remove_live_range()
512 opline++; in zend_optimizer_remove_live_range()
559 zend_op *opline, in zend_optimizer_replace_by_const() argument
566 while (opline < end) { in zend_optimizer_replace_by_const()
567 if (opline->op1_type == type && in zend_optimizer_replace_by_const()
568 opline->op1.var == var) { in zend_optimizer_replace_by_const()
569 switch (opline->opcode) { in zend_optimizer_replace_by_const()
579 opline->extended_value = 0; in zend_optimizer_replace_by_const()
580 opline->opcode = ZEND_SEND_VAL; in zend_optimizer_replace_by_const()
583 opline->extended_value = 0; in zend_optimizer_replace_by_const()
584 opline->opcode = ZEND_SEND_VAL_EX; in zend_optimizer_replace_by_const()
589 opline->opcode = ZEND_SEND_VAL; in zend_optimizer_replace_by_const()
592 opline->opcode = ZEND_SEND_VAL_EX; in zend_optimizer_replace_by_const()
601 zend_op *m = opline; in zend_optimizer_replace_by_const()
633 if (op_array->live_range[brk].start <= (uint32_t)(opline - op_array->opcodes) && in zend_optimizer_replace_by_const()
634 op_array->live_range[brk].end > (uint32_t)(opline - op_array->opcodes)) { in zend_optimizer_replace_by_const()
641 ZEND_ASSERT(opline->opcode == ZEND_FREE); in zend_optimizer_replace_by_const()
642 MAKE_NOP(opline); in zend_optimizer_replace_by_const()
647 m = opline; in zend_optimizer_replace_by_const()
690 MAKE_NOP(opline); in zend_optimizer_replace_by_const()
694 ++opline; in zend_optimizer_replace_by_const()
695 } while (opline->opcode != ZEND_RETURN && opline->opcode != ZEND_RETURN_BY_REF); in zend_optimizer_replace_by_const()
696 ZEND_ASSERT(opline->op1.var == var); in zend_optimizer_replace_by_const()
703 if (zend_optimizer_update_op1_const(op_array, opline, val)) { in zend_optimizer_replace_by_const()
710 if (opline->op2_type == type && in zend_optimizer_replace_by_const()
711 opline->op2.var == var) { in zend_optimizer_replace_by_const()
712 if (zend_optimizer_update_op2_const(op_array, opline, val)) { in zend_optimizer_replace_by_const()
718 opline++; in zend_optimizer_replace_by_const()
725 void zend_optimizer_migrate_jump(zend_op_array *op_array, zend_op *new_opline, zend_op *opline) { in zend_optimizer_migrate_jump() argument
729 ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op1, ZEND_OP1_JMP_ADDR(opline)); in zend_optimizer_migrate_jump()
732 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
743 ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op2, ZEND_OP2_JMP_ADDR(opline)); in zend_optimizer_migrate_jump()
746 if (!opline->result.num) { in zend_optimizer_migrate_jump()
747 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
754 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
759 HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline)); in zend_optimizer_migrate_jump()
762 …INE_NUM_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv))); in zend_optimizer_migrate_jump()
764 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
771 void zend_optimizer_shift_jump(zend_op_array *op_array, zend_op *opline, uint32_t *shiftlist) { in zend_optimizer_shift_jump() argument
772 switch (opline->opcode) { in zend_optimizer_shift_jump()
775 …ZEND_SET_OP_JMP_ADDR(opline, opline->op1, ZEND_OP1_JMP_ADDR(opline) - shiftlist[ZEND_OP1_JMP_ADDR( in zend_optimizer_shift_jump()
778opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump()
789 …ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP2_JMP_ADDR(opline) - shiftlist[ZEND_OP2_JMP_ADDR( in zend_optimizer_shift_jump()
796opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump()
801 HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline)); in zend_optimizer_shift_jump()
804 …FFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv)) - shiftlist[ZEND… in zend_optimizer_shift_jump()
806opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump()
813 zend_script *script, zend_op_array *op_array, zend_op *opline, zend_bool rt_constants) { in get_class_entry_from_op1() argument
814 if (opline->op1_type == IS_CONST) { in get_class_entry_from_op1()
815 zval *op1 = CRT_CONSTANT_EX(op_array, opline->op1, rt_constants); in get_class_entry_from_op1()
831 } else if (opline->op1_type == IS_UNUSED && op_array->scope in get_class_entry_from_op1()
833 && (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) { in get_class_entry_from_op1()
840 zend_script *script, zend_op_array *op_array, zend_op *opline, zend_bool rt_constants) in zend_optimizer_get_called_func() argument
842 #define GET_OP(op) CRT_CONSTANT_EX(op_array, opline->op, rt_constants) in zend_optimizer_get_called_func()
843 switch (opline->opcode) { in zend_optimizer_get_called_func()
863 if (opline->op2_type == IS_CONST && Z_TYPE_P(GET_OP(op2)) == IS_STRING) { in zend_optimizer_get_called_func()
880 if (opline->op2_type == IS_CONST && Z_TYPE_P(GET_OP(op2)) == IS_STRING) { in zend_optimizer_get_called_func()
882 script, op_array, opline, rt_constants); in zend_optimizer_get_called_func()
890 if (opline->op1_type == IS_UNUSED in zend_optimizer_get_called_func()
891 && opline->op2_type == IS_CONST && Z_TYPE_P(GET_OP(op2)) == IS_STRING in zend_optimizer_get_called_func()
910 script, op_array, opline, rt_constants); in zend_optimizer_get_called_func()
1078 zend_op *opline, *end; in zend_revert_pass_two() local
1080 opline = op_array->opcodes; in zend_revert_pass_two()
1081 end = opline + op_array->last; in zend_revert_pass_two()
1082 while (opline < end) { in zend_revert_pass_two()
1083 if (opline->op1_type == IS_CONST) { in zend_revert_pass_two()
1084 ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline->op1); in zend_revert_pass_two()
1086 if (opline->op2_type == IS_CONST) { in zend_revert_pass_two()
1087 ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline->op2); in zend_revert_pass_two()
1089 opline++; in zend_revert_pass_two()
1095 zend_op *opline, *end; in zend_redo_pass_two() local
1097 opline = op_array->opcodes; in zend_redo_pass_two()
1098 end = opline + op_array->last; in zend_redo_pass_two()
1099 while (opline < end) { in zend_redo_pass_two()
1100 if (opline->op1_type == IS_CONST) { in zend_redo_pass_two()
1101 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op1); in zend_redo_pass_two()
1103 if (opline->op2_type == IS_CONST) { in zend_redo_pass_two()
1104 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op2); in zend_redo_pass_two()
1106 ZEND_VM_SET_OPCODE_HANDLER(opline); in zend_redo_pass_two()
1107 opline++; in zend_redo_pass_two()
1114 zend_op *opline, *end; in zend_redo_pass_two_ex() local
1116 opline = op_array->opcodes; in zend_redo_pass_two_ex()
1117 end = opline + op_array->last; in zend_redo_pass_two_ex()
1118 while (opline < end) { in zend_redo_pass_two_ex()
1119 zend_vm_set_opcode_handler_ex(opline, in zend_redo_pass_two_ex()
1120opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY… in zend_redo_pass_two_ex()
1121opline->op2_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_ARRAY… in zend_redo_pass_two_ex()
1122 (opline->opcode == ZEND_PRE_INC || in zend_redo_pass_two_ex()
1123 opline->opcode == ZEND_PRE_DEC || in zend_redo_pass_two_ex()
1124 opline->opcode == ZEND_POST_INC || in zend_redo_pass_two_ex()
1125 opline->opcode == ZEND_POST_DEC) ? in zend_redo_pass_two_ex()
1126 …((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|… in zend_redo_pass_two_ex()
1127 …(opline->result_type == IS_UNUSED ? 0 : (RES_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF|MAY_BE_A… in zend_redo_pass_two_ex()
1128 if (opline->op1_type == IS_CONST) { in zend_redo_pass_two_ex()
1129 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op1); in zend_redo_pass_two_ex()
1131 if (opline->op2_type == IS_CONST) { in zend_redo_pass_two_ex()
1132 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline->op2); in zend_redo_pass_two_ex()
1134 opline++; in zend_redo_pass_two_ex()
1155 zend_op *opline, *end; in zend_adjust_fcall_stack_size() local
1157 opline = op_array->opcodes; in zend_adjust_fcall_stack_size()
1158 end = opline + op_array->last; in zend_adjust_fcall_stack_size()
1159 while (opline < end) { in zend_adjust_fcall_stack_size()
1160 if (opline->opcode == ZEND_INIT_FCALL) { in zend_adjust_fcall_stack_size()
1163 Z_STR_P(RT_CONSTANT(op_array, opline->op2))); in zend_adjust_fcall_stack_size()
1165 opline->op1.num = zend_vm_calc_used_stack(opline->extended_value, func); in zend_adjust_fcall_stack_size()
1168 opline++; in zend_adjust_fcall_stack_size()
1181 zend_op *opline = call_info->caller_init_opline; in zend_adjust_fcall_stack_size_graph() local
1183 if (opline && call_info->callee_func && opline->opcode == ZEND_INIT_FCALL) { in zend_adjust_fcall_stack_size_graph()
1184 opline->op1.num = zend_vm_calc_used_stack(opline->extended_value, call_info->callee_func); in zend_adjust_fcall_stack_size_graph()