Lines Matching refs:opline

236                                     zend_op       *opline,  in zend_optimizer_update_op1_const()  argument
239 switch (opline->opcode) { in zend_optimizer_update_op1_const()
241 switch ((opline-1)->opcode) { in zend_optimizer_update_op1_const()
246 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
250 MAKE_NOP(opline); in zend_optimizer_update_op1_const()
268 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
269opline->extended_value = alloc_cache_slots(op_array, 1) | (opline->extended_value & ZEND_LAST_CATC… in zend_optimizer_update_op1_const()
275 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
276 opline->extended_value = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op1_const()
282 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
283 opline->op2.num = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op1_const()
289 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
290 if (opline->op2_type != IS_CONST) { in zend_optimizer_update_op1_const()
291 opline->result.num = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op1_const()
298 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
299 if (opline->op2_type != IS_CONST) { in zend_optimizer_update_op1_const()
300 opline->extended_value = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op1_const()
324 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
325 …if (opline->op2_type == IS_CONST && (opline->extended_value & ~ZEND_FETCH_OBJ_FLAGS) + sizeof(void… in zend_optimizer_update_op1_const()
328opline->extended_value = alloc_cache_slots(op_array, 3) | (opline->extended_value & ZEND_FETCH_OBJ… in zend_optimizer_update_op1_const()
332 opline->opcode = ZEND_SEND_VAL; in zend_optimizer_update_op1_const()
333 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
356 if (opline->opcode == ZEND_CONCAT && opline->op2_type == IS_CONST) { in zend_optimizer_update_op1_const()
357 opline->opcode = ZEND_FAST_CONCAT; in zend_optimizer_update_op1_const()
361 opline->op1.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op1_const()
365 opline->op1_type = IS_CONST; in zend_optimizer_update_op1_const()
366 if (Z_TYPE(ZEND_OP1_LITERAL(opline)) == IS_STRING) { in zend_optimizer_update_op1_const()
367 zend_string_hash_val(Z_STR(ZEND_OP1_LITERAL(opline))); in zend_optimizer_update_op1_const()
373 zend_op *opline, in zend_optimizer_update_op2_const() argument
378 switch (opline->opcode) { in zend_optimizer_update_op2_const()
383 if ((opline + 1)->opcode == ZEND_INSTANCEOF && in zend_optimizer_update_op2_const()
384 (opline + 1)->op2.var == opline->result.var) { in zend_optimizer_update_op2_const()
391 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
393 opline->extended_value = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op2_const()
398 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
400 opline->result.num = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op2_const()
418 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
420 if (opline->op1_type != IS_CONST) { in zend_optimizer_update_op2_const()
421opline->extended_value = alloc_cache_slots(op_array, 1) | (opline->extended_value & (ZEND_RETURNS_… in zend_optimizer_update_op2_const()
433 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
434 opline->result.num = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op2_const()
442 if (zend_optimizer_classify_function(Z_STR_P(val), opline->extended_value)) { in zend_optimizer_update_op2_const()
448 opline->opcode = ZEND_INIT_FCALL_BY_NAME; in zend_optimizer_update_op2_const()
450 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
452 opline->result.num = alloc_cache_slots(op_array, 1); in zend_optimizer_update_op2_const()
454 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
459 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
461 opline->result.num = alloc_cache_slots(op_array, 2); in zend_optimizer_update_op2_const()
465 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
467 if (opline->op1_type != IS_CONST) { in zend_optimizer_update_op2_const()
468 opline->result.num = alloc_cache_slots(op_array, 2); in zend_optimizer_update_op2_const()
486 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
487 opline->extended_value = alloc_cache_slots(op_array, 3); in zend_optimizer_update_op2_const()
491 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
492opline->extended_value = alloc_cache_slots(op_array, 3) | (opline->extended_value & ZEND_ISEMPTY); in zend_optimizer_update_op2_const()
511 opline->op2.constant = zend_optimizer_add_literal(op_array, &tmp); in zend_optimizer_update_op2_const()
514 Z_EXTRA(op_array->literals[opline->op2.constant]) = ZEND_EXTRA_VALUE; in zend_optimizer_update_op2_const()
518 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
529 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
537 if (opline->opcode == ZEND_CONCAT && opline->op1_type == IS_CONST) { in zend_optimizer_update_op2_const()
538 opline->opcode = ZEND_FAST_CONCAT; in zend_optimizer_update_op2_const()
542 opline->op2.constant = zend_optimizer_add_literal(op_array, val); in zend_optimizer_update_op2_const()
546 opline->op2_type = IS_CONST; in zend_optimizer_update_op2_const()
547 if (Z_TYPE(ZEND_OP2_LITERAL(opline)) == IS_STRING) { in zend_optimizer_update_op2_const()
548 zend_string_hash_val(Z_STR(ZEND_OP2_LITERAL(opline))); in zend_optimizer_update_op2_const()
554 zend_op *opline, in zend_optimizer_replace_by_const() argument
561 while (opline < end) { in zend_optimizer_replace_by_const()
562 if (opline->op1_type == type && in zend_optimizer_replace_by_const()
563 opline->op1.var == var) { in zend_optimizer_replace_by_const()
564 switch (opline->opcode) { in zend_optimizer_replace_by_const()
575 opline->extended_value = 0; in zend_optimizer_replace_by_const()
576 opline->opcode = ZEND_SEND_VAL; in zend_optimizer_replace_by_const()
580 opline->extended_value = 0; in zend_optimizer_replace_by_const()
581 opline->opcode = ZEND_SEND_VAL_EX; in zend_optimizer_replace_by_const()
586 opline->opcode = ZEND_SEND_VAL; in zend_optimizer_replace_by_const()
589 opline->opcode = ZEND_SEND_VAL_EX; in zend_optimizer_replace_by_const()
598 zend_op *m = opline; in zend_optimizer_replace_by_const()
624 while (opline < end) { in zend_optimizer_replace_by_const()
625 if (opline->op1_type == type && opline->op1.var == var) { in zend_optimizer_replace_by_const()
626 if (opline->opcode == ZEND_CASE in zend_optimizer_replace_by_const()
627 || opline->opcode == ZEND_SWITCH_LONG in zend_optimizer_replace_by_const()
628 || opline->opcode == ZEND_SWITCH_STRING) { in zend_optimizer_replace_by_const()
631 if (opline->opcode == ZEND_CASE) { in zend_optimizer_replace_by_const()
632 opline->opcode = ZEND_IS_EQUAL; in zend_optimizer_replace_by_const()
638 opline->op1.constant = zend_optimizer_add_literal(op_array, &v); in zend_optimizer_replace_by_const()
639 opline->op1_type = IS_CONST; in zend_optimizer_replace_by_const()
640 } else if (opline->opcode == ZEND_FREE) { in zend_optimizer_replace_by_const()
641 if (opline->extended_value == ZEND_FREE_SWITCH) { in zend_optimizer_replace_by_const()
643 MAKE_NOP(opline); in zend_optimizer_replace_by_const()
647 ZEND_ASSERT(opline->extended_value == ZEND_FREE_ON_RETURN); in zend_optimizer_replace_by_const()
648 MAKE_NOP(opline); in zend_optimizer_replace_by_const()
653 opline++; in zend_optimizer_replace_by_const()
666 MAKE_NOP(opline); in zend_optimizer_replace_by_const()
670 ++opline; in zend_optimizer_replace_by_const()
671 } while (opline->opcode != ZEND_RETURN && opline->opcode != ZEND_RETURN_BY_REF); in zend_optimizer_replace_by_const()
672 ZEND_ASSERT(opline->op1.var == var); in zend_optimizer_replace_by_const()
679 return zend_optimizer_update_op1_const(op_array, opline, val); in zend_optimizer_replace_by_const()
682 if (opline->op2_type == type && in zend_optimizer_replace_by_const()
683 opline->op2.var == var) { in zend_optimizer_replace_by_const()
684 return zend_optimizer_update_op2_const(op_array, opline, val); in zend_optimizer_replace_by_const()
686 opline++; in zend_optimizer_replace_by_const()
693 void zend_optimizer_migrate_jump(zend_op_array *op_array, zend_op *new_opline, zend_op *opline) { in zend_optimizer_migrate_jump() argument
697 ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op1, ZEND_OP1_JMP_ADDR(opline)); in zend_optimizer_migrate_jump()
700 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
711 ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op2, ZEND_OP2_JMP_ADDR(opline)); in zend_optimizer_migrate_jump()
715 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
718 if (!(opline->extended_value & ZEND_LAST_CATCH)) { in zend_optimizer_migrate_jump()
719 ZEND_SET_OP_JMP_ADDR(new_opline, new_opline->op2, ZEND_OP2_JMP_ADDR(opline)); in zend_optimizer_migrate_jump()
725 HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline)); in zend_optimizer_migrate_jump()
728 …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()
730 …_TO_OFFSET(op_array, new_opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_optimizer_migrate_jump()
737 void zend_optimizer_shift_jump(zend_op_array *op_array, zend_op *opline, uint32_t *shiftlist) { in zend_optimizer_shift_jump() argument
738 switch (opline->opcode) { in zend_optimizer_shift_jump()
741 …ZEND_SET_OP_JMP_ADDR(opline, opline->op1, ZEND_OP1_JMP_ADDR(opline) - shiftlist[ZEND_OP1_JMP_ADDR( in zend_optimizer_shift_jump()
744opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump()
755 …ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP2_JMP_ADDR(opline) - shiftlist[ZEND_OP2_JMP_ADDR( in zend_optimizer_shift_jump()
758 if (!(opline->extended_value & ZEND_LAST_CATCH)) { in zend_optimizer_shift_jump()
759 …ZEND_SET_OP_JMP_ADDR(opline, opline->op2, ZEND_OP2_JMP_ADDR(opline) - shiftlist[ZEND_OP2_JMP_ADDR( in zend_optimizer_shift_jump()
764opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump()
769 HashTable *jumptable = Z_ARRVAL(ZEND_OP2_LITERAL(opline)); in zend_optimizer_shift_jump()
772 …FFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv)) - shiftlist[ZEND… in zend_optimizer_shift_jump()
774opline->extended_value = ZEND_OPLINE_NUM_TO_OFFSET(op_array, opline, ZEND_OFFSET_TO_OPLINE_NUM(op_… in zend_optimizer_shift_jump()
781 zend_script *script, zend_op_array *op_array, zend_op *opline, zend_bool rt_constants) { in get_class_entry_from_op1() argument
782 if (opline->op1_type == IS_CONST) { in get_class_entry_from_op1()
783 zval *op1 = CRT_CONSTANT_EX(op_array, opline, opline->op1, rt_constants); in get_class_entry_from_op1()
799 } else if (opline->op1_type == IS_UNUSED && op_array->scope in get_class_entry_from_op1()
801 && (opline->op1.num & ZEND_FETCH_CLASS_MASK) == ZEND_FETCH_CLASS_SELF) { in get_class_entry_from_op1()
808 zend_script *script, zend_op_array *op_array, zend_op *opline, zend_bool rt_constants) in zend_optimizer_get_called_func() argument
810 #define GET_OP(op) CRT_CONSTANT_EX(op_array, opline, opline->op, rt_constants) in zend_optimizer_get_called_func()
811 switch (opline->opcode) { in zend_optimizer_get_called_func()
831 if (opline->op2_type == IS_CONST && Z_TYPE_P(GET_OP(op2)) == IS_STRING) { in zend_optimizer_get_called_func()
848 if (opline->op2_type == IS_CONST && Z_TYPE_P(GET_OP(op2)) == IS_STRING) { in zend_optimizer_get_called_func()
850 script, op_array, opline, rt_constants); in zend_optimizer_get_called_func()
865 if (opline->op1_type == IS_UNUSED in zend_optimizer_get_called_func()
866 && opline->op2_type == IS_CONST && Z_TYPE_P(GET_OP(op2)) == IS_STRING in zend_optimizer_get_called_func()
885 script, op_array, opline, rt_constants); in zend_optimizer_get_called_func()
1067 zend_op *opline, *end; in zend_revert_pass_two() local
1069 opline = op_array->opcodes; in zend_revert_pass_two()
1070 end = opline + op_array->last; in zend_revert_pass_two()
1071 while (opline < end) { in zend_revert_pass_two()
1072 if (opline->op1_type == IS_CONST) { in zend_revert_pass_two()
1073 ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, opline->op1); in zend_revert_pass_two()
1075 if (opline->op2_type == IS_CONST) { in zend_revert_pass_two()
1076 ZEND_PASS_TWO_UNDO_CONSTANT(op_array, opline, opline->op2); in zend_revert_pass_two()
1078 opline++; in zend_revert_pass_two()
1091 zend_op *opline, *end; in zend_redo_pass_two() local
1113 opline = op_array->opcodes; in zend_redo_pass_two()
1114 end = opline + op_array->last; in zend_redo_pass_two()
1115 while (opline < end) { in zend_redo_pass_two()
1116 if (opline->op1_type == IS_CONST) { in zend_redo_pass_two()
1117 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op1); in zend_redo_pass_two()
1119 if (opline->op2_type == IS_CONST) { in zend_redo_pass_two()
1120 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op2); in zend_redo_pass_two()
1125 switch (opline->opcode) { in zend_redo_pass_two()
1128 opline->op1.jmp_addr = &op_array->opcodes[opline->op1.jmp_addr - old_opcodes]; in zend_redo_pass_two()
1142 opline->op2.jmp_addr = &op_array->opcodes[opline->op2.jmp_addr - old_opcodes]; in zend_redo_pass_two()
1145 if (!(opline->extended_value & ZEND_LAST_CATCH)) { in zend_redo_pass_two()
1146 opline->op2.jmp_addr = &op_array->opcodes[opline->op2.jmp_addr - old_opcodes]; in zend_redo_pass_two()
1158 ZEND_VM_SET_OPCODE_HANDLER(opline); in zend_redo_pass_two()
1159 opline++; in zend_redo_pass_two()
1166 zend_op *opline, *end; in zend_redo_pass_two_ex() local
1188 opline = op_array->opcodes; in zend_redo_pass_two_ex()
1189 end = opline + op_array->last; in zend_redo_pass_two_ex()
1190 while (opline < end) { in zend_redo_pass_two_ex()
1191 …uint32_t op1_info = opline->op1_type == IS_UNUSED ? 0 : (OP1_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY… in zend_redo_pass_two_ex()
1192 …uint32_t op2_info = opline->op1_type == IS_UNUSED ? 0 : (OP2_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|MAY… in zend_redo_pass_two_ex()
1194 (opline->opcode == ZEND_PRE_INC || in zend_redo_pass_two_ex()
1195 opline->opcode == ZEND_PRE_DEC || in zend_redo_pass_two_ex()
1196 opline->opcode == ZEND_POST_INC || in zend_redo_pass_two_ex()
1197 opline->opcode == ZEND_POST_DEC) ? in zend_redo_pass_two_ex()
1198 …((ssa->ops[opline - op_array->opcodes].op1_def >= 0) ? (OP1_DEF_INFO() & (MAY_BE_UNDEF|MAY_BE_ANY|… in zend_redo_pass_two_ex()
1199 …(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()
1201 if (opline->op1_type == IS_CONST) { in zend_redo_pass_two_ex()
1202 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op1); in zend_redo_pass_two_ex()
1204 if (opline->op2_type == IS_CONST) { in zend_redo_pass_two_ex()
1205 ZEND_PASS_TWO_UPDATE_CONSTANT(op_array, opline, opline->op2); in zend_redo_pass_two_ex()
1208 zend_vm_set_opcode_handler_ex(opline, op1_info, op2_info, res_info); in zend_redo_pass_two_ex()
1212 switch (opline->opcode) { in zend_redo_pass_two_ex()
1215 opline->op1.jmp_addr = &op_array->opcodes[opline->op1.jmp_addr - old_opcodes]; in zend_redo_pass_two_ex()
1229 opline->op2.jmp_addr = &op_array->opcodes[opline->op2.jmp_addr - old_opcodes]; in zend_redo_pass_two_ex()
1232 if (!(opline->extended_value & ZEND_LAST_CATCH)) { in zend_redo_pass_two_ex()
1233 opline->op2.jmp_addr = &op_array->opcodes[opline->op2.jmp_addr - old_opcodes]; in zend_redo_pass_two_ex()
1245 opline++; in zend_redo_pass_two_ex()
1276 zend_op *opline, *end; in zend_adjust_fcall_stack_size() local
1278 opline = op_array->opcodes; in zend_adjust_fcall_stack_size()
1279 end = opline + op_array->last; in zend_adjust_fcall_stack_size()
1280 while (opline < end) { in zend_adjust_fcall_stack_size()
1281 if (opline->opcode == ZEND_INIT_FCALL) { in zend_adjust_fcall_stack_size()
1284 Z_STR_P(RT_CONSTANT(opline, opline->op2))); in zend_adjust_fcall_stack_size()
1286 opline->op1.num = zend_vm_calc_used_stack(opline->extended_value, func); in zend_adjust_fcall_stack_size()
1289 opline++; in zend_adjust_fcall_stack_size()
1302 zend_op *opline = call_info->caller_init_opline; in zend_adjust_fcall_stack_size_graph() local
1304 if (opline && call_info->callee_func && opline->opcode == ZEND_INIT_FCALL) { in zend_adjust_fcall_stack_size_graph()
1305 opline->op1.num = zend_vm_calc_used_stack(opline->extended_value, call_info->callee_func); in zend_adjust_fcall_stack_size_graph()