Lines Matching refs:op_array

137 	const zend_op_array *op_array;  in zend_jit_trace_get_exit_point()  local
147 op_array = &JIT_G(current_frame)->func->op_array; in zend_jit_trace_get_exit_point()
148 stack_size = op_array->last_var + op_array->T; in zend_jit_trace_get_exit_point()
162 op_array = NULL; in zend_jit_trace_get_exit_point()
197 t->exit_info[exit_point].op_array = op_array; in zend_jit_trace_get_exit_point()
237 static zend_string *zend_jit_trace_name(const zend_op_array *op_array, uint32_t lineno) in zend_jit_trace_name() argument
244 if (op_array->function_name) { in zend_jit_trace_name()
245 if (op_array->scope) { in zend_jit_trace_name()
246 smart_str_appendl(&buf, ZSTR_VAL(op_array->scope->name), ZSTR_LEN(op_array->scope->name)); in zend_jit_trace_name()
248 smart_str_appendl(&buf, ZSTR_VAL(op_array->function_name), ZSTR_LEN(op_array->function_name)); in zend_jit_trace_name()
250 smart_str_appendl(&buf, ZSTR_VAL(op_array->function_name), ZSTR_LEN(op_array->function_name)); in zend_jit_trace_name()
252 } else if (op_array->filename) { in zend_jit_trace_name()
253 smart_str_appendl(&buf, ZSTR_VAL(op_array->filename), ZSTR_LEN(op_array->filename)); in zend_jit_trace_name()
261 static int zend_jit_trace_may_exit(const zend_op_array *op_array, const zend_op *opline) in zend_jit_trace_may_exit() argument
364 static zend_always_inline zend_ssa_alias_kind zend_jit_var_may_alias(const zend_op_array *op_array,… in zend_jit_var_may_alias() argument
366 if (var >= op_array->last_var) { in zend_jit_var_may_alias()
368 } else if ((!op_array->function_name || (ssa->cfg.flags & ZEND_FUNC_INDIRECT_VAR_ACCESS))) { in zend_jit_var_may_alias()
372 } else if (zend_string_equals_literal(op_array->vars[var], "http_response_header")) { in zend_jit_var_may_alias()
431 static zend_always_inline size_t zend_jit_trace_frame_size(const zend_op_array *op_array) in zend_jit_trace_frame_size() argument
433 if (op_array && op_array->type == ZEND_USER_FUNCTION) { in zend_jit_trace_frame_size()
434 …of(zend_jit_trace_stack_frame, stack) + ZEND_MM_ALIGNED_SIZE((op_array->last_var + op_array->T) * … in zend_jit_trace_frame_size()
435 } else if (op_array) { in zend_jit_trace_frame_size()
436 …SIZE(offsetof(zend_jit_trace_stack_frame, stack) + ZEND_MM_ALIGNED_SIZE(op_array->num_args * sizeo… in zend_jit_trace_frame_size()
442 …_frame* zend_jit_trace_call_frame(zend_jit_trace_stack_frame *frame, const zend_op_array *op_array) in zend_jit_trace_call_frame() argument
444 return (zend_jit_trace_stack_frame*)((char*)frame + zend_jit_trace_frame_size(op_array)); in zend_jit_trace_call_frame()
447 …k_frame* zend_jit_trace_ret_frame(zend_jit_trace_stack_frame *frame, const zend_op_array *op_array) in zend_jit_trace_ret_frame() argument
449 return (zend_jit_trace_stack_frame*)((char*)frame - zend_jit_trace_frame_size(op_array)); in zend_jit_trace_ret_frame()
455 const zend_op_array *op_array = &call->func->op_array; in zend_jit_trace_send_type() local
458 if (arg_num > op_array->num_args) { in zend_jit_trace_send_type()
461 if (op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS) { in zend_jit_trace_send_type()
464 ZEND_ASSERT(arg_num <= op_array->num_args); in zend_jit_trace_send_type()
465 arg_info = &op_array->arg_info[arg_num-1]; in zend_jit_trace_send_type()
522 static zend_ssa *zend_jit_trace_build_ssa(const zend_op_array *op_array, zend_script *script) in zend_jit_trace_build_ssa() argument
528 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_ssa()
539 if (zend_jit_op_array_analyze1(op_array, script, ssa) != SUCCESS) { in zend_jit_trace_build_ssa()
544 …zend_analyze_calls(&CG(arena), script, ZEND_CALL_TREE, (zend_op_array*)op_array, &jit_extension->f… in zend_jit_trace_build_ssa()
545 …tension->func_info.call_map = zend_build_call_map(&CG(arena), &jit_extension->func_info, op_array); in zend_jit_trace_build_ssa()
546 if (op_array->fn_flags & ZEND_ACC_HAS_RETURN_TYPE) { in zend_jit_trace_build_ssa()
547 zend_init_func_return_info(op_array, script, &jit_extension->func_info.return_info); in zend_jit_trace_build_ssa()
551 if (zend_jit_op_array_analyze2(op_array, script, ssa, 0) != SUCCESS) { in zend_jit_trace_build_ssa()
556 …zend_dump_op_array(op_array, ZEND_DUMP_HIDE_UNREACHABLE|ZEND_DUMP_RC_INFERENCE|ZEND_DUMP_SSA, "JIT… in zend_jit_trace_build_ssa()
569 if (zend_jit_build_cfg(op_array, &cfg) == SUCCESS) { in zend_jit_trace_build_ssa()
576 if (!op_array->function_name) { in zend_jit_trace_build_ssa()
647 const zend_op_array *op_array; in zend_jit_trace_add_phis() local
657 op_array = trace_buffer->op_array; in zend_jit_trace_add_phis()
658 set_size = zend_bitset_len(op_array->last_var + op_array->T); in zend_jit_trace_add_phis()
668 zend_dfg_add_use_def_op(op_array, opline, build_flags, use, def); in zend_jit_trace_add_phis()
673 zend_dfg_add_use_def_op(op_array, opline, build_flags, use, def); in zend_jit_trace_add_phis()
696 vars_count = op_array->last_var; in zend_jit_trace_add_phis()
698 vars_count = op_array->last_var + op_array->T; in zend_jit_trace_add_phis()
733 const zend_op_array *op_array = trace_buffer->op_array; in zend_jit_trace_add_call_phis() local
735 int count = opline - op_array->opcodes; in zend_jit_trace_add_call_phis()
790 static bool zend_jit_trace_is_false_loop(const zend_op_array *op_array, const zend_ssa *ssa, const … in zend_jit_trace_is_false_loop() argument
799 b = ssa->cfg.map[tssa_opcodes[0] - op_array->opcodes]; in zend_jit_trace_is_false_loop()
801 if (opline >= op_array->opcodes && opline < op_array->opcodes + op_array->last) { in zend_jit_trace_is_false_loop()
802 bb = ssa->cfg.blocks + ssa->cfg.map[opline - op_array->opcodes]; in zend_jit_trace_is_false_loop()
809 static int zend_jit_trace_copy_ssa_var_info(const zend_op_array *op_array, const zend_ssa *ssa, con… in zend_jit_trace_copy_ssa_var_info() argument
815 uint32_t b = ssa->cfg.map[tssa_opcodes[0] - op_array->opcodes]; in zend_jit_trace_copy_ssa_var_info()
819 && !zend_jit_trace_is_false_loop(op_array, ssa, tssa_opcodes, tssa)) { in zend_jit_trace_copy_ssa_var_info()
882 ZEND_ASSERT((tssa_opcodes[def] - op_array->opcodes) < op_array->last); in zend_jit_trace_copy_ssa_var_info()
883 op = ssa->ops + (tssa_opcodes[def] - op_array->opcodes); in zend_jit_trace_copy_ssa_var_info()
905 ZEND_ASSERT((tssa_opcodes[use] - op_array->opcodes) < op_array->last); in zend_jit_trace_copy_ssa_var_info()
906 op = ssa->ops + (tssa_opcodes[use] - op_array->opcodes); in zend_jit_trace_copy_ssa_var_info()
928 static void zend_jit_trace_propagate_range(const zend_op_array *op_array, const zend_op **tssa_opco… in zend_jit_trace_propagate_range() argument
934 …&& zend_inference_propagate_range(op_array, tssa, tssa_opcodes[def], &tssa->ops[def], ssa_var, &tm… in zend_jit_trace_propagate_range()
943 static void zend_jit_trace_copy_ssa_var_range(const zend_op_array *op_array, const zend_ssa *ssa, c… in zend_jit_trace_copy_ssa_var_range() argument
953 ZEND_ASSERT((tssa_opcodes[def] - op_array->opcodes) < op_array->last); in zend_jit_trace_copy_ssa_var_range()
954 op = ssa->ops + (tssa_opcodes[def] - op_array->opcodes); in zend_jit_trace_copy_ssa_var_range()
976 zend_jit_trace_propagate_range(op_array, tssa_opcodes, tssa, ssa_var); in zend_jit_trace_copy_ssa_var_range()
993 static int zend_jit_trace_restrict_ssa_var_info(const zend_op_array *op_array, const zend_ssa *ssa,… in zend_jit_trace_restrict_ssa_var_info() argument
1001 ZEND_ASSERT((tssa_opcodes[def] - op_array->opcodes) < op_array->last); in zend_jit_trace_restrict_ssa_var_info()
1002 op = ssa->ops + (tssa_opcodes[def] - op_array->opcodes); in zend_jit_trace_restrict_ssa_var_info()
1070 …st zend_op *zend_jit_trace_find_init_fcall_op(zend_jit_trace_rec *p, const zend_op_array *op_array) in zend_jit_trace_find_init_fcall_op() argument
1112 while (opline > op_array->opcodes) { in zend_jit_trace_find_init_fcall_op()
1252 const zend_op_array *op_array; in zend_jit_trace_build_tssa() local
1271 op_array = trace_buffer->op_array; in zend_jit_trace_build_tssa()
1272 stack_top = stack_size = zend_jit_trace_frame_size(op_array); in zend_jit_trace_build_tssa()
1280 op_arrays[num_op_arrays++] = op_array; in zend_jit_trace_build_tssa()
1282 ssa = zend_jit_trace_build_ssa(op_array, script); in zend_jit_trace_build_tssa()
1303 !op_array->function_name) { in zend_jit_trace_build_tssa()
1312 stack_top += zend_jit_trace_frame_size(p->op_array); in zend_jit_trace_build_tssa()
1325 frame_size = zend_jit_trace_frame_size(p->op_array); in zend_jit_trace_build_tssa()
1335 op_array = p->op_array; in zend_jit_trace_build_tssa()
1337 stack_top += zend_jit_trace_frame_size(op_array); in zend_jit_trace_build_tssa()
1346 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_tssa()
1356 op_arrays[num_op_arrays++] = op_array; in zend_jit_trace_build_tssa()
1358 ssa = zend_jit_trace_build_ssa(op_array, script); in zend_jit_trace_build_tssa()
1362 stack_bottom += zend_jit_trace_frame_size(p->op_array); in zend_jit_trace_build_tssa()
1364 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_tssa()
1374 op_arrays[num_op_arrays++] = op_array; in zend_jit_trace_build_tssa()
1376 ssa = zend_jit_trace_build_ssa(op_array, script); in zend_jit_trace_build_tssa()
1379 stack_top -= zend_jit_trace_frame_size(op_array); in zend_jit_trace_build_tssa()
1382 op_array = p->op_array; in zend_jit_trace_build_tssa()
1441 op_array = trace_buffer->op_array; in zend_jit_trace_build_tssa()
1443 ssa_vars_count = op_array->last_var; in zend_jit_trace_build_tssa()
1445 ssa_vars_count = op_array->last_var + op_array->T; in zend_jit_trace_build_tssa()
1469 …ssa_vars_count = zend_ssa_rename_op(op_array, opline, idx, build_flags, ssa_vars_count, ssa_ops, (… in zend_jit_trace_build_tssa()
1476 …ssa_vars_count = zend_ssa_rename_op(op_array, opline, idx, build_flags, ssa_vars_count, ssa_ops, (… in zend_jit_trace_build_tssa()
1482 frame = zend_jit_trace_call_frame(frame, op_array); in zend_jit_trace_build_tssa()
1484 op_array = p->op_array; in zend_jit_trace_build_tssa()
1490 for (i = 0; i < op_array->last_var; i++) { in zend_jit_trace_build_tssa()
1494 op_array = p->op_array; in zend_jit_trace_build_tssa()
1495 frame = zend_jit_trace_ret_frame(frame, op_array); in zend_jit_trace_build_tssa()
1502 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace_build_tssa()
1513 op_array = trace_buffer->op_array; in zend_jit_trace_build_tssa()
1517 vars_count = op_array->last_var; in zend_jit_trace_build_tssa()
1519 vars_count = op_array->last_var + op_array->T; in zend_jit_trace_build_tssa()
1587 op_array = trace_buffer->op_array; in zend_jit_trace_build_tssa()
1589 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_tssa()
1596 while (i < op_array->last_var) { in zend_jit_trace_build_tssa()
1597 if (i < op_array->num_args) { in zend_jit_trace_build_tssa()
1599 && zend_jit_trace_copy_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, i)) { in zend_jit_trace_build_tssa()
1606 ssa_vars[i].alias = zend_jit_var_may_alias(op_array, ssa, i); in zend_jit_trace_build_tssa()
1608 if (op_array->arg_info && i < trace_buffer[1].opline - op_array->opcodes) { in zend_jit_trace_build_tssa()
1609 zend_arg_info *arg_info = &op_array->arg_info[i]; in zend_jit_trace_build_tssa()
1628 ssa_vars[i].alias = zend_jit_var_may_alias(op_array, ssa, i); in zend_jit_trace_build_tssa()
1645 op_array->last_var + op_array->T); in zend_jit_trace_build_tssa()
1652 while (i < op_array->last_var + op_array->T) { in zend_jit_trace_build_tssa()
1654 || !zend_jit_trace_copy_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, i)) { in zend_jit_trace_build_tssa()
1658 ssa_vars[i].alias = zend_jit_var_may_alias(op_array, ssa, i); in zend_jit_trace_build_tssa()
1660 if (i < op_array->last_var) { in zend_jit_trace_build_tssa()
1674 && i >= op_array->last_var) { in zend_jit_trace_build_tssa()
1692 || !zend_jit_trace_copy_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, phi->ssa_var)) { in zend_jit_trace_build_tssa()
1701 top = zend_jit_trace_call_frame(frame, op_array); in zend_jit_trace_build_tssa()
1702 TRACE_FRAME_INIT(frame, op_array, 0, 0); in zend_jit_trace_build_tssa()
1921 if (op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE) { in zend_jit_trace_build_tssa()
2065 && opline->op2.num <= frame->call->func->op_array.num_args) { in zend_jit_trace_build_tssa()
2074 if (frame->call->func->op_array.fn_flags & ZEND_ACC_HAS_TYPE_HINTS) { in zend_jit_trace_build_tssa()
2077 ZEND_ASSERT(frame->call->func->op_array.arg_info); in zend_jit_trace_build_tssa()
2078 arg_info = &frame->call->func->op_array.arg_info[opline->op2.num - 1]; in zend_jit_trace_build_tssa()
2205 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op1_def); in zend_jit_trace_build_tssa()
2208 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op2_def); in zend_jit_trace_build_tssa()
2211 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].result_def); in zend_jit_trace_build_tssa()
2215 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx+1].op1_def); in zend_jit_trace_build_tssa()
2218 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx+1].op2_def); in zend_jit_trace_build_tssa()
2221 … zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx+1].result_def); in zend_jit_trace_build_tssa()
2226 …ssa_vars[ssa_ops[idx].op1_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM(opline-… in zend_jit_trace_build_tssa()
2228 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx].op1_def); in zend_jit_trace_build_tssa()
2232 …ssa_vars[ssa_ops[idx].op2_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM(opline-… in zend_jit_trace_build_tssa()
2234 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx].op2_def); in zend_jit_trace_build_tssa()
2238 …ssa_vars[ssa_ops[idx].result_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM(opli… in zend_jit_trace_build_tssa()
2240 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx].result_def); in zend_jit_trace_build_tssa()
2245 …ssa_vars[ssa_ops[idx+1].op1_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM((opli… in zend_jit_trace_build_tssa()
2247 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx+1].op1_def); in zend_jit_trace_build_tssa()
2251 …ssa_vars[ssa_ops[idx+1].op2_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM((opli… in zend_jit_trace_build_tssa()
2253 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx+1].op2_def); in zend_jit_trace_build_tssa()
2257 …ssa_vars[ssa_ops[idx+1].result_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM((o… in zend_jit_trace_build_tssa()
2259 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx+1].result_def); in zend_jit_trace_build_tssa()
2265 && !(op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS)) { in zend_jit_trace_build_tssa()
2274 …if (zend_update_type_info(op_array, tssa, script, (zend_op*)opline, ssa_ops + idx, ssa_opcodes, op… in zend_jit_trace_build_tssa()
2307 zend_jit_trace_restrict_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op1_def); in zend_jit_trace_build_tssa()
2313 zend_jit_trace_restrict_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op2_def); in zend_jit_trace_build_tssa()
2317 … zend_jit_trace_restrict_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].result_def); in zend_jit_trace_build_tssa()
2327 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op1_def); in zend_jit_trace_build_tssa()
2330 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op2_def); in zend_jit_trace_build_tssa()
2333 zend_jit_trace_copy_ssa_var_range(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].result_def); in zend_jit_trace_build_tssa()
2337 …ssa_vars[ssa_ops[idx].op1_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM(opline-… in zend_jit_trace_build_tssa()
2339 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx].op1_def); in zend_jit_trace_build_tssa()
2343 …ssa_vars[ssa_ops[idx].op2_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM(opline-… in zend_jit_trace_build_tssa()
2345 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx].op2_def); in zend_jit_trace_build_tssa()
2349 …ssa_vars[ssa_ops[idx].result_def].alias = zend_jit_var_may_alias(op_array, ssa, EX_VAR_TO_NUM(opli… in zend_jit_trace_build_tssa()
2351 zend_jit_trace_propagate_range(op_array, ssa_opcodes, tssa, ssa_ops[idx].result_def); in zend_jit_trace_build_tssa()
2356 && !(op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS)) { in zend_jit_trace_build_tssa()
2360 …if (zend_update_type_info(op_array, tssa, script, (zend_op*)opline, ssa_ops + idx, ssa_opcodes, op… in zend_jit_trace_build_tssa()
2369 zend_jit_trace_restrict_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op1_def); in zend_jit_trace_build_tssa()
2372 zend_jit_trace_restrict_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].op2_def); in zend_jit_trace_build_tssa()
2375 … zend_jit_trace_restrict_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, ssa_ops[idx].result_def); in zend_jit_trace_build_tssa()
2383 op_array = p->op_array; in zend_jit_trace_build_tssa()
2385 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_tssa()
2392 TRACE_FRAME_INIT(call, op_array, 0, 0); in zend_jit_trace_build_tssa()
2394 top = zend_jit_trace_call_frame(top, op_array); in zend_jit_trace_build_tssa()
2396 ZEND_ASSERT(&call->func->op_array == op_array); in zend_jit_trace_build_tssa()
2406 while (i < op_array->last_var) { in zend_jit_trace_build_tssa()
2408 if (i < op_array->num_args) { in zend_jit_trace_build_tssa()
2410 && zend_jit_trace_copy_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, v)) { in zend_jit_trace_build_tssa()
2413 ssa_vars[v].alias = zend_jit_var_may_alias(op_array, ssa, i); in zend_jit_trace_build_tssa()
2414 if (op_array->arg_info) { in zend_jit_trace_build_tssa()
2415 zend_arg_info *arg_info = &op_array->arg_info[i]; in zend_jit_trace_build_tssa()
2434 ssa_vars[v].alias = zend_jit_var_may_alias(op_array, ssa, i); in zend_jit_trace_build_tssa()
2442 if (!(op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS) in zend_jit_trace_build_tssa()
2443 && i < op_array->num_args) { in zend_jit_trace_build_tssa()
2451 op_array = p->op_array; in zend_jit_trace_build_tssa()
2453 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_tssa()
2458 while (i < op_array->last_var) { in zend_jit_trace_build_tssa()
2461 || !zend_jit_trace_copy_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, v)) { in zend_jit_trace_build_tssa()
2467 while (i < op_array->last_var + op_array->T) { in zend_jit_trace_build_tssa()
2470 || !zend_jit_trace_copy_ssa_var_info(op_array, ssa, ssa_opcodes, tssa, v)) { in zend_jit_trace_build_tssa()
2514 ZEND_ASSERT(&frame->func->op_array == op_array); in zend_jit_trace_build_tssa()
2517 frame = zend_jit_trace_ret_frame(frame, op_array); in zend_jit_trace_build_tssa()
2518 TRACE_FRAME_INIT(frame, op_array, 0, 0); in zend_jit_trace_build_tssa()
2529 top = zend_jit_trace_call_frame(top, p->op_array); in zend_jit_trace_build_tssa()
2531 for (i = 0; i < p->op_array->last_var + p->op_array->T; i++) { in zend_jit_trace_build_tssa()
2600 op_array = trace_buffer->op_array; in zend_jit_trace_build_tssa()
2602 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_build_tssa()
2691 trace_buffer->op_array->scope ? ZSTR_VAL(trace_buffer->op_array->scope->name) : "", in zend_jit_trace_build_tssa()
2692 trace_buffer->op_array->scope ? "::" : "", in zend_jit_trace_build_tssa()
2693 trace_buffer->op_array->function_name ? in zend_jit_trace_build_tssa()
2694 ZSTR_VAL(trace_buffer->op_array->function_name) : "$main", in zend_jit_trace_build_tssa()
2695 ZSTR_VAL(trace_buffer->op_array->filename), in zend_jit_trace_build_tssa()
2701 trace_buffer->op_array->scope ? ZSTR_VAL(trace_buffer->op_array->scope->name) : "", in zend_jit_trace_build_tssa()
2702 trace_buffer->op_array->scope ? "::" : "", in zend_jit_trace_build_tssa()
2703 trace_buffer->op_array->function_name ? in zend_jit_trace_build_tssa()
2704 ZSTR_VAL(trace_buffer->op_array->function_name) : "$main", in zend_jit_trace_build_tssa()
2705 ZSTR_VAL(trace_buffer->op_array->filename), in zend_jit_trace_build_tssa()
2736 … const zend_ssa *ssa, const zend_op **ssa_opcodes, const zend_op_array *op_array, const zend_ssa *… in zend_jit_trace_use_var() argument
2748 uint32_t use = ssa_opcodes[line] - op_array->opcodes; in zend_jit_trace_use_var()
2751 if (zend_ssa_is_last_use(op_array, op_array_ssa, op_array_ssa->ops[use].op1_use, use)) { in zend_jit_trace_use_var()
2755 if (zend_ssa_is_last_use(op_array, op_array_ssa, op_array_ssa->ops[use].op2_use, use)) { in zend_jit_trace_use_var()
2759 if (zend_ssa_is_last_use(op_array, op_array_ssa, op_array_ssa->ops[use].result_use, use)) { in zend_jit_trace_use_var()
2770 const zend_op_array *op_array; in zend_jit_trace_allocate_registers() local
2790 op_array = trace_buffer->op_array; in zend_jit_trace_allocate_registers()
2792 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_allocate_registers()
2796 frame->func = (const zend_function*)op_array; in zend_jit_trace_allocate_registers()
2802 j = op_array->last_var; in zend_jit_trace_allocate_registers()
2804 j += op_array->T; in zend_jit_trace_allocate_registers()
2808 vars_op_array[i] = op_array; in zend_jit_trace_allocate_registers()
2831 j = op_array->last_var + op_array->T; in zend_jit_trace_allocate_registers()
2845 vars_op_array[phi->ssa_var] = op_array; in zend_jit_trace_allocate_registers()
2867 zend_jit_opline_supports_reg(op_array, ssa, opline, ssa_op, p); in zend_jit_trace_allocate_registers()
2886 ssa, ssa_opcodes, op_array, op_array_ssa); in zend_jit_trace_allocate_registers()
2920 ssa, ssa_opcodes, op_array, op_array_ssa); in zend_jit_trace_allocate_registers()
2936 ssa, ssa_opcodes, op_array, op_array_ssa); in zend_jit_trace_allocate_registers()
2971 vars_op_array[ssa_op->result_def] = op_array; in zend_jit_trace_allocate_registers()
2987 vars_op_array[ssa_op->op1_def] = op_array; in zend_jit_trace_allocate_registers()
2997 vars_op_array[ssa_op->op2_def] = op_array; in zend_jit_trace_allocate_registers()
3023 ssa, ssa_opcodes, op_array, op_array_ssa); in zend_jit_trace_allocate_registers()
3040 vars_op_array[ssa_op->op1_def] = op_array; in zend_jit_trace_allocate_registers()
3093 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace_allocate_registers()
3101 frame = zend_jit_trace_call_frame(frame, op_array); in zend_jit_trace_allocate_registers()
3103 frame->func = (const zend_function*)p->op_array; in zend_jit_trace_allocate_registers()
3105 op_array = p->op_array; in zend_jit_trace_allocate_registers()
3107 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_allocate_registers()
3110 for (i = 0; i < op_array->last_var; i++) { in zend_jit_trace_allocate_registers()
3112 vars_op_array[j] = op_array; in zend_jit_trace_allocate_registers()
3122 for (i = op_array->last_var; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace_allocate_registers()
3128 for (i = 0; i < op_array->last_var; i++) { in zend_jit_trace_allocate_registers()
3131 op_array = p->op_array; in zend_jit_trace_allocate_registers()
3133 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_allocate_registers()
3135 frame = zend_jit_trace_ret_frame(frame, op_array); in zend_jit_trace_allocate_registers()
3140 frame->func = (const zend_function*)op_array; in zend_jit_trace_allocate_registers()
3142 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace_allocate_registers()
3144 vars_op_array[j] = op_array; in zend_jit_trace_allocate_registers()
3178 for (i = 0; i < op_array->last_var; i++) { in zend_jit_trace_allocate_registers()
3255 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace_allocate_registers()
3270 …-- TRACE %d Live Ranges \"%s\"\n", ZEND_JIT_TRACE_NUM, op_array->function_name ? ZSTR_VAL(op_array in zend_jit_trace_allocate_registers()
3339 static bool zend_jit_may_delay_fetch_this(const zend_op_array *op_array, zend_ssa *ssa, const zend_… in zend_jit_may_delay_fetch_this() argument
3610 …(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, b… in zend_jit_trace_update_condition_ranges() argument
3728 …nd_ssa_op *ssa_op, const zend_ssa *ssa, const zend_op **ssa_opcodes, const zend_op_array *op_array) in zend_jit_may_skip_comparison() argument
3850 static int zend_jit_find_ssa_var(const zend_op_array *op_array, in zend_jit_find_ssa_var() argument
3952 static bool zend_jit_trace_must_store_type(const zend_op_array *op_array, in zend_jit_trace_must_store_type() argument
3959 int ssa_var = zend_jit_find_ssa_var(op_array, ssa, opline_num, var_num); in zend_jit_trace_must_store_type()
3979 const zend_op_array *op_array; in zend_jit_trace() local
4023 op_array = trace_buffer->op_array; in zend_jit_trace()
4025 name = zend_jit_trace_name(op_array, opline->lineno); in zend_jit_trace()
4026 zend_jit_trace_start(&ctx, op_array, ssa, name, ZEND_JIT_TRACE_NUM, in zend_jit_trace()
4038 op_array = p->op_array; in zend_jit_trace()
4040 top = zend_jit_trace_call_frame(frame, op_array); in zend_jit_trace()
4041 TRACE_FRAME_INIT(frame, op_array, TRACE_FRAME_MASK_UNKNOWN_RETURN, -1); in zend_jit_trace()
4044 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace()
4052 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
4081 op_array->last_var + op_array->T); in zend_jit_trace()
4089 last_var = op_array->last_var; in zend_jit_trace()
4091 last_var += op_array->T; in zend_jit_trace()
4135 && op_array->function_name in zend_jit_trace()
4136 && i >= op_array->num_args) { in zend_jit_trace()
4361 … (op1_def_info & (MAY_BE_DOUBLE|MAY_BE_GUARD)) && zend_may_overflow(opline, ssa_op, op_array, ssa), in zend_jit_trace()
4362 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4423 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4498 …) && (res_info & (MAY_BE_DOUBLE|MAY_BE_GUARD)) && zend_may_overflow(opline, ssa_op, op_array, ssa); in zend_jit_trace()
4515 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4551 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4575 … (op1_def_info & (MAY_BE_DOUBLE|MAY_BE_GUARD)) && zend_may_overflow(opline, ssa_op, op_array, ssa), in zend_jit_trace()
4576 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4636 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) { in zend_jit_trace()
4655 ce = op_array->scope; in zend_jit_trace()
4709 && op_array_ssa->ops[opline-op_array->opcodes].op1_use >= 0 in zend_jit_trace()
4710 … && op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use].definition >= 0) { in zend_jit_trace()
4711 …on_this = op_array->opcodes[op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use… in zend_jit_trace()
4714 if (!zend_jit_incdec_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
4746 ce = op_array->scope; in zend_jit_trace()
4800 && op_array_ssa->ops[opline-op_array->opcodes].op1_use >= 0 in zend_jit_trace()
4801 … && op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use].definition >= 0) { in zend_jit_trace()
4802 …on_this = op_array->opcodes[op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use… in zend_jit_trace()
4807 if (!zend_jit_assign_obj_op(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
4826 ce = op_array->scope; in zend_jit_trace()
4880 && op_array_ssa->ops[opline-op_array->opcodes].op1_use >= 0 in zend_jit_trace()
4881 … && op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use].definition >= 0) { in zend_jit_trace()
4882 …on_this = op_array->opcodes[op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use… in zend_jit_trace()
4887 if (!zend_jit_assign_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
4891 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
4940 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) { in zend_jit_trace()
5039 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) { in zend_jit_trace()
5120 …ine, op_array_ssa->cfg.map ? op_array_ssa->cfg.map[opline - op_array->opcodes] : -1, op_array, ssa… in zend_jit_trace()
5157 if (!zend_jit_send_ref(&ctx, opline, op_array, in zend_jit_trace()
5188 if (!zend_jit_send_var(&ctx, opline, op_array, in zend_jit_trace()
5255 if (!zend_jit_do_fcall(&ctx, opline, op_array, op_array_ssa, frame->call_level, -1, p + 1)) { in zend_jit_trace()
5270 zend_jit_may_skip_comparison(opline, ssa_op, ssa, ssa_opcodes, op_array); in zend_jit_trace()
5291 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5295 zend_jit_trace_update_condition_ranges(opline, ssa_op, op_array, ssa, exit_if_true); in zend_jit_trace()
5303 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5318 zend_jit_may_skip_comparison(opline, ssa_op, ssa, ssa_opcodes, op_array); in zend_jit_trace()
5342 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5346 zend_jit_trace_update_condition_ranges(opline, ssa_op, op_array, ssa, exit_if_true); in zend_jit_trace()
5354 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5416 if (op_array->type == ZEND_EVAL_CODE in zend_jit_trace()
5418 || !op_array->function_name in zend_jit_trace()
5421 …if (!zend_jit_trace_handler(&ctx, op_array, opline, zend_may_throw(opline, ssa_op, op_array, ssa),… in zend_jit_trace()
5429 if (!zend_jit_return(&ctx, opline, op_array, in zend_jit_trace()
5433 if (op_array->last_var > 100) { in zend_jit_trace()
5441 for (j = 0 ; j < op_array->last_var; j++) { in zend_jit_trace()
5445 info = zend_ssa_cv_info(op_array, op_array_ssa, j); in zend_jit_trace()
5476 if (!zend_jit_leave_func(&ctx, op_array, opline, op1_info, left_frame, in zend_jit_trace()
5490 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5561 zend_may_throw(opline, ssa_op, op_array, ssa), in zend_jit_trace()
5847 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info), in zend_jit_trace()
5876 ce = op_array->scope; in zend_jit_trace()
5932 && op_array_ssa->ops[opline-op_array->opcodes].op1_use >= 0 in zend_jit_trace()
5933 … && op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use].definition >= 0) { in zend_jit_trace()
5934 …on_this = op_array->opcodes[op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use… in zend_jit_trace()
5937 if (!zend_jit_fetch_obj(&ctx, opline, op_array, ssa, ssa_op, in zend_jit_trace()
5940 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, MAY_BE_STRING))) { in zend_jit_trace()
5970 if (!zend_jit_recv(&ctx, opline, op_array)) { in zend_jit_trace()
5978 if (!zend_jit_recv_init(&ctx, opline, op_array, in zend_jit_trace()
5980 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
5997 zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
6051 …&ctx, opline, op1_info, op1_addr, RES_REG_ADDR(), zend_may_throw(opline, ssa_op, op_array, ssa))) { in zend_jit_trace()
6058 if (zend_jit_may_delay_fetch_this(op_array, ssa, ssa_opcodes, ssa_op)) { in zend_jit_trace()
6063 if (!zend_jit_fetch_this(&ctx, opline, op_array, delayed_fetch_this)) { in zend_jit_trace()
6070 …if (!zend_jit_switch(&ctx, opline, op_array, op_array_ssa, p+1, &zend_jit_traces[ZEND_JIT_TRACE_NU… in zend_jit_trace()
6083 if (op_array->fn_flags & ZEND_ACC_RETURN_REFERENCE) { in zend_jit_trace()
6093 if (!zend_jit_verify_return_type(&ctx, opline, op_array, op1_info)) { in zend_jit_trace()
6141 if (!zend_jit_fetch_constant(&ctx, opline, op_array, ssa, ssa_op, RES_REG_ADDR())) { in zend_jit_trace()
6155 ce = op_array->scope; in zend_jit_trace()
6195 && op_array_ssa->ops[opline-op_array->opcodes].op1_use >= 0 in zend_jit_trace()
6196 … && op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use].definition >= 0) { in zend_jit_trace()
6197 …on_this = op_array->opcodes[op_array_ssa->vars[op_array_ssa->ops[opline-op_array->opcodes].op1_use… in zend_jit_trace()
6202 op_array_ssa->cfg.map ? op_array_ssa->cfg.map[opline - op_array->opcodes] : -1, in zend_jit_trace()
6203 op_array, ssa, ssa_op, frame->call_level, in zend_jit_trace()
6219 …ine, op_array_ssa->cfg.map ? op_array_ssa->cfg.map[opline - op_array->opcodes] : -1, op_array, ssa… in zend_jit_trace()
6274 if (!zend_jit_trace_handler(&ctx, op_array, opline, in zend_jit_trace()
6275 zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info), p + 1)) { in zend_jit_trace()
6283 zend_jit_may_be_modified((p+1)->func, op_array)) { in zend_jit_trace()
6368 if (op_array->last_live_range in zend_jit_trace()
6369 && opline->result.var > op_array->last_var in zend_jit_trace()
6373 uint32_t op_num = opline - op_array->opcodes; in zend_jit_trace()
6374 const zend_live_range *range = op_array->live_range; in zend_jit_trace()
6378 for (j = 0; j < op_array->last_live_range; range++, j++) { in zend_jit_trace()
6393 op_num = q->opline - op_array->opcodes; in zend_jit_trace()
6397 if (zend_may_throw(q->opline, next_ssa_op, op_array, ssa)) { in zend_jit_trace()
6435 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->result_def, &tmp)) { in zend_jit_trace()
6503 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->op1_def, &tmp)) { in zend_jit_trace()
6547 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->op2_def, &tmp)) { in zend_jit_trace()
6590 && zend_inference_propagate_range(op_array, ssa, opline, ssa_op, ssa_op->op1_def, &tmp)) { in zend_jit_trace()
6660 assert(call && &call->func->op_array == p->op_array); in zend_jit_trace()
6669 if (opline > op_array->opcodes) { in zend_jit_trace()
6679 && p->op_array->num_args in zend_jit_trace()
6680 && (p->op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS) == 0 in zend_jit_trace()
6684 || TRACE_FRAME_NUM_ARGS(call) < p->op_array->num_args) in zend_jit_trace()
6696 if (op_array->fn_flags & ZEND_ACC_CLOSURE) { in zend_jit_trace()
6700 } else if (op_array->scope && !(op_array->fn_flags & ZEND_ACC_STATIC)) { in zend_jit_trace()
6703 op_array = (zend_op_array*)p->op_array; in zend_jit_trace()
6704 ctx.current_op_array = op_array; in zend_jit_trace()
6706 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
6720 for (i = 0; i < op_array->last_var; i++, j++) { in zend_jit_trace()
6740 op_array = (zend_op_array*)p->op_array; in zend_jit_trace()
6741 ctx.current_op_array = op_array; in zend_jit_trace()
6743 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
6751 ZEND_ASSERT(&frame->func->op_array == op_array); in zend_jit_trace()
6753 frame = zend_jit_trace_ret_frame(frame, op_array); in zend_jit_trace()
6754 TRACE_FRAME_INIT(frame, op_array, TRACE_FRAME_MASK_UNKNOWN_RETURN, -1); in zend_jit_trace()
6760 for (i = 0; i < op_array->last_var + op_array->T; i++, j++) { in zend_jit_trace()
6771 for (i = 0; i < op_array->last_var + op_array->T; i++, j++) { in zend_jit_trace()
6781 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace()
6799 const zend_op *init_opline = zend_jit_trace_find_init_fcall_op(p, op_array); in zend_jit_trace()
6839 top = zend_jit_trace_call_frame(top, p->op_array); in zend_jit_trace()
6844 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(p->op_array); in zend_jit_trace()
6847 while (i < p->op_array->num_args) { in zend_jit_trace()
6852 while (i < p->op_array->last_var) { in zend_jit_trace()
6854 && zend_jit_var_may_alias(p->op_array, &jit_extension->func_info.ssa, i) != NO_ALIAS) { in zend_jit_trace()
6861 while (i < p->op_array->last_var + p->op_array->T) { in zend_jit_trace()
6866 for (i = 0; i < p->op_array->last_var + p->op_array->T; i++) { in zend_jit_trace()
6872 for (i = 0; i < p->op_array->num_args; i++) { in zend_jit_trace()
6885 if (op_array->fn_flags & ZEND_ACC_TRAIT_CLONE) { in zend_jit_trace()
6900 && !zend_jit_may_be_modified(p->func, op_array)) { in zend_jit_trace()
7009 && zend_jit_trace_stack_needs_deoptimization(stack, op_array->last_var + op_array->T))) { in zend_jit_trace()
7033 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace()
7042 } else if (i < op_array->last_var in zend_jit_trace()
7045 … && zend_jit_trace_must_store_type(op_array, op_array_ssa, opline - op_array->opcodes, i, type)) { in zend_jit_trace()
7080 for (i = 0; i < op_array->last_var + op_array->T; i++) { in zend_jit_trace()
7113 rec_op_array = op_array = trace_buffer->op_array; in zend_jit_trace()
7115 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
7121 if (p->op_array == rec_op_array) { in zend_jit_trace()
7124 op_array = p->op_array; in zend_jit_trace()
7126 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
7128 op_array = p->op_array; in zend_jit_trace()
7130 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
7151 op_array = &frame->func->op_array; in zend_jit_trace()
7153 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
7172 op_array = op_arrays[--num_op_arrays]; in zend_jit_trace()
7174 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace()
7248 …p_array_trace_extension*)ZEND_FUNC_INFO(zend_jit_traces[zend_jit_traces[trace_num].root].op_array); in zend_jit_trace_exit_to_vm()
7302 t->op_array = trace_buffer[0].op_array; in zend_jit_compile_root_trace()
7428 static void zend_jit_stop_hot_trace_counters(zend_op_array *op_array) in zend_jit_stop_hot_trace_counters() argument
7433 jit_extension = (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_stop_hot_trace_counters()
7434 for (i = 0; i < op_array->last; i++) { in zend_jit_stop_hot_trace_counters()
7442 op_array->opcodes[i].handler = jit_extension->trace_info[i].orig_handler; in zend_jit_stop_hot_trace_counters()
7448 static void zend_jit_stop_persistent_op_array(zend_op_array *op_array) in zend_jit_stop_persistent_op_array() argument
7450 zend_func_info *func_info = ZEND_FUNC_INFO(op_array); in zend_jit_stop_persistent_op_array()
7455 zend_jit_stop_hot_trace_counters(op_array); in zend_jit_stop_persistent_op_array()
7463 zend_op_array *op_array; in zend_jit_stop_persistent_script() local
7467 ZEND_HASH_FOREACH_PTR(&script->script.function_table, op_array) { in zend_jit_stop_persistent_script()
7468 zend_jit_stop_persistent_op_array(op_array); in zend_jit_stop_persistent_script()
7472 ZEND_HASH_FOREACH_PTR(&ce->function_table, op_array) { in zend_jit_stop_persistent_script()
7473 if (op_array->type == ZEND_USER_FUNCTION) { in zend_jit_stop_persistent_script()
7474 zend_jit_stop_persistent_op_array(op_array); in zend_jit_stop_persistent_script()
7564 const zend_op_array *op_array; in zend_jit_dump_trace() local
7570 op_array = p->op_array; in zend_jit_dump_trace()
7577 vars_count = op_array->last_var; in zend_jit_dump_trace()
7579 vars_count = op_array->last_var + op_array->T; in zend_jit_dump_trace()
7584 zend_dump_ssa_var(op_array, tssa, i, 0, i, ZEND_DUMP_RC_INFERENCE); in zend_jit_dump_trace()
7597 zend_dump_ssa_var(op_array, tssa, p->ssa_var, 0, p->var, ZEND_DUMP_RC_INFERENCE); in zend_jit_dump_trace()
7599 zend_dump_ssa_var(op_array, tssa, p->sources[0], 0, p->var, ZEND_DUMP_RC_INFERENCE); in zend_jit_dump_trace()
7601 zend_dump_ssa_var(op_array, tssa, p->sources[1], 0, p->var, ZEND_DUMP_RC_INFERENCE); in zend_jit_dump_trace()
7614 (int)(opline - op_array->opcodes), in zend_jit_dump_trace()
7616 …zend_dump_op(op_array, NULL, opline, ZEND_DUMP_RC_INFERENCE, tssa, (tssa && tssa->ops) ? tssa->ops… in zend_jit_dump_trace()
7683 (int)(opline - op_array->opcodes), in zend_jit_dump_trace()
7685 …zend_dump_op(op_array, NULL, opline, ZEND_DUMP_RC_INFERENCE, tssa, (tssa && tssa->ops) ? tssa->ops… in zend_jit_dump_trace()
7691 op_array = p->op_array; in zend_jit_dump_trace()
7694 op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", in zend_jit_dump_trace()
7695 op_array->scope ? "::" : "", in zend_jit_dump_trace()
7696 op_array->function_name ? in zend_jit_dump_trace()
7697 ZSTR_VAL(op_array->function_name) : in zend_jit_dump_trace()
7698 ZSTR_VAL(op_array->filename)); in zend_jit_dump_trace()
7703 vars_count = op_array->last_var; in zend_jit_dump_trace()
7707 zend_dump_ssa_var(op_array, tssa, v, 0, i, ZEND_DUMP_RC_INFERENCE); in zend_jit_dump_trace()
7713 op_array = p->op_array; in zend_jit_dump_trace()
7717 op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", in zend_jit_dump_trace()
7718 op_array->scope ? "::" : "", in zend_jit_dump_trace()
7719 op_array->function_name ? in zend_jit_dump_trace()
7720 ZSTR_VAL(op_array->function_name) : in zend_jit_dump_trace()
7721 ZSTR_VAL(op_array->filename)); in zend_jit_dump_trace()
7725 vars_count = op_array->last_var + op_array->T; in zend_jit_dump_trace()
7729 zend_dump_ssa_var(op_array, tssa, v, 0, i, ZEND_DUMP_RC_INFERENCE); in zend_jit_dump_trace()
7772 const zend_op_array *op_array = t->exit_info[i].op_array; in zend_jit_dump_exit_info() local
7778 fprintf(stderr, " %04d/", (int)(t->exit_info[i].opline - op_array->opcodes)); in zend_jit_dump_exit_info()
7811 zend_dump_var(op_array, (j < op_array->last_var) ? IS_CV : 0, j); in zend_jit_dump_exit_info()
7855 zend_dump_var(op_array, (j < op_array->last_var) ? IS_CV : 0, j); in zend_jit_dump_exit_info()
7868 zend_op_array *op_array; in zend_jit_trace_hot_root() local
7875 ZEND_ASSERT(opline >= EX(func)->op_array.opcodes && in zend_jit_trace_hot_root()
7876 opline < EX(func)->op_array.opcodes + EX(func)->op_array.last); in zend_jit_trace_hot_root()
7881 op_array = &EX(func)->op_array; in zend_jit_trace_hot_root()
7882 jit_extension = (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_hot_root()
7901 EX(func)->op_array.scope ? ZSTR_VAL(EX(func)->op_array.scope->name) : "", in zend_jit_trace_hot_root()
7902 EX(func)->op_array.scope ? "::" : "", in zend_jit_trace_hot_root()
7903 EX(func)->op_array.function_name ? in zend_jit_trace_hot_root()
7904 ZSTR_VAL(EX(func)->op_array.function_name) : "$main", in zend_jit_trace_hot_root()
7905 ZSTR_VAL(EX(func)->op_array.filename), in zend_jit_trace_hot_root()
7927 op_array = (zend_op_array*)trace_buffer[0].op_array; in zend_jit_trace_hot_root()
7928 jit_extension = (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_hot_root()
7931 const zend_op_array *op_array = trace_buffer[0].op_array; in zend_jit_trace_hot_root() local
7934 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_hot_root()
7940 op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", in zend_jit_trace_hot_root()
7941 op_array->scope ? "::" : "", in zend_jit_trace_hot_root()
7942 op_array->function_name ? in zend_jit_trace_hot_root()
7943 ZSTR_VAL(op_array->function_name) : "$main", in zend_jit_trace_hot_root()
7944 ZSTR_VAL(op_array->filename), in zend_jit_trace_hot_root()
8252 EX(func)->op_array.scope ? ZSTR_VAL(EX(func)->op_array.scope->name) : "", in zend_jit_trace_hot_side()
8253 EX(func)->op_array.scope ? "::" : "", in zend_jit_trace_hot_side()
8254 EX(func)->op_array.function_name ? in zend_jit_trace_hot_side()
8255 ZSTR_VAL(EX(func)->op_array.function_name) : "$main", in zend_jit_trace_hot_side()
8256 ZSTR_VAL(EX(func)->op_array.filename), in zend_jit_trace_hot_side()
8296 const zend_op_array *op_array = trace_buffer[0].op_array; in zend_jit_trace_hot_side() local
8299 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_hot_side()
8305 op_array->scope ? ZSTR_VAL(op_array->scope->name) : "", in zend_jit_trace_hot_side()
8306 op_array->scope ? "::" : "", in zend_jit_trace_hot_side()
8307 op_array->function_name ? in zend_jit_trace_hot_side()
8308 ZSTR_VAL(op_array->function_name) : "$main", in zend_jit_trace_hot_side()
8309 ZSTR_VAL(op_array->filename), in zend_jit_trace_hot_side()
8335 const zend_op_array *op_array = trace_buffer[0].op_array; in zend_jit_trace_hot_side() local
8337 (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_trace_hot_side()
8515 ZEND_ASSERT(EX(opline) >= EX(func)->op_array.opcodes && in zend_jit_trace_exit()
8516 EX(opline) < EX(func)->op_array.opcodes + EX(func)->op_array.last); in zend_jit_trace_exit()
8522 EX(func)->op_array.scope ? ZSTR_VAL(EX(func)->op_array.scope->name) : "", in zend_jit_trace_exit()
8523 EX(func)->op_array.scope ? "::" : "", in zend_jit_trace_exit()
8524 EX(func)->op_array.function_name ? in zend_jit_trace_exit()
8525 ZSTR_VAL(EX(func)->op_array.function_name) : "$main", in zend_jit_trace_exit()
8526 ZSTR_VAL(EX(func)->op_array.filename), in zend_jit_trace_exit()
8541 jit_extension = (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(t->op_array); in zend_jit_trace_exit()
8600 static int zend_jit_restart_hot_trace_counters(zend_op_array *op_array) in zend_jit_restart_hot_trace_counters() argument
8605 jit_extension = (zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array); in zend_jit_restart_hot_trace_counters()
8606 for (i = 0; i < op_array->last; i++) { in zend_jit_restart_hot_trace_counters()
8610 op_array->opcodes[i].handler = (const void*)zend_jit_loop_trace_counter_handler; in zend_jit_restart_hot_trace_counters()
8612 op_array->opcodes[i].handler = (const void*)zend_jit_func_trace_counter_handler; in zend_jit_restart_hot_trace_counters()
8614 op_array->opcodes[i].handler = jit_extension->trace_info[i].orig_handler; in zend_jit_restart_hot_trace_counters()
8620 static int zend_jit_setup_hot_trace_counters(zend_op_array *op_array) in zend_jit_setup_hot_trace_counters() argument
8628 …tension*)zend_shared_alloc(sizeof(zend_jit_op_array_trace_extension) + (op_array->last - 1) * size… in zend_jit_setup_hot_trace_counters()
8634 jit_extension->op_array = op_array; in zend_jit_setup_hot_trace_counters()
8635 jit_extension->offset = (char*)jit_extension->trace_info - (char*)op_array->opcodes; in zend_jit_setup_hot_trace_counters()
8636 for (i = 0; i < op_array->last; i++) { in zend_jit_setup_hot_trace_counters()
8637 jit_extension->trace_info[i].orig_handler = op_array->opcodes[i].handler; in zend_jit_setup_hot_trace_counters()
8638 jit_extension->trace_info[i].call_handler = zend_get_opcode_handler_func(&op_array->opcodes[i]); in zend_jit_setup_hot_trace_counters()
8641 zend_jit_trace_supported(&op_array->opcodes[i]); in zend_jit_setup_hot_trace_counters()
8643 ZEND_SET_FUNC_INFO(op_array, (void*)jit_extension); in zend_jit_setup_hot_trace_counters()
8650 if (zend_jit_build_cfg(op_array, &cfg) != SUCCESS) { in zend_jit_setup_hot_trace_counters()
8658 opline = op_array->opcodes + cfg.blocks[i].start; in zend_jit_setup_hot_trace_counters()
8676 opline = op_array->opcodes; in zend_jit_setup_hot_trace_counters()
8677 if (!(op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS)) { in zend_jit_setup_hot_trace_counters()
8694 zend_shared_alloc_register_xlat_entry(op_array->opcodes, jit_extension); in zend_jit_setup_hot_trace_counters()