Lines Matching refs:ssa
9268 …call_info *call_info, uint32_t b, const zend_op_array *op_array, zend_ssa *ssa, const zend_ssa_op …
9324 if (zend_may_throw(opline, ssa_op, op_array, ssa)) {
9346 if (zend_may_throw(opline, ssa_op, op_array, ssa)) {
9395 if (end - op_array->opcodes >= ssa->cfg.blocks[b].start + ssa->cfg.blocks[b].len) {
9409 if (end - op_array->opcodes >= ssa->cfg.blocks[b].start + ssa->cfg.blocks[b].len) {
9436 if (zend_may_throw(opline, ssa_op, op_array, ssa)) {
9516 …onst zend_op *opline, uint32_t b, const zend_op_array *op_array, zend_ssa *ssa, const zend_ssa_op …
9656 if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
9672 zend_ssa *ssa,
9907 if (zend_jit_needs_call_chain(call_info, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
9923 zend_ssa *ssa,
9934 if (ssa->var_info[ssa_op->op2_use].ce != zend_ce_closure
9935 && !(ssa->var_info[ssa_op->op2_use].type & MAY_BE_CLASS_GUARD)) {
9954 if (ssa->var_info && ssa_op->op2_use >= 0) {
9955 ssa->var_info[ssa_op->op2_use].type |= MAY_BE_CLASS_GUARD;
9956 ssa->var_info[ssa_op->op2_use].ce = zend_ce_closure;
9957 ssa->var_info[ssa_op->op2_use].is_instanceof = 0;
10000 if (zend_jit_needs_call_chain(NULL, b, op_array, ssa, ssa_op, opline, call_level, trace)) {
10020 static uint32_t skip_valid_arguments(const zend_op_array *op_array, zend_ssa *ssa, const zend_call_…
10031 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes];
10045 …ate **Dst, const zend_op *opline, const zend_op_array *op_array, zend_ssa *ssa, int call_level, un…
10290 num_args = skip_valid_arguments(op_array, ssa, call_info);
10592 zend_get_func_info(call_info, ssa, &ce, &ce_is_instanceof) :
11469 static uint32_t zend_ssa_cv_info(const zend_op_array *op_array, zend_ssa *ssa, uint32_t var)
11473 if (ssa->vars && ssa->var_info) {
11474 info = ssa->var_info[var].type;
11475 for (j = op_array->last_var; j < ssa->vars_count; j++) {
11476 if (ssa->vars[j].var == var) {
11477 info |= ssa->var_info[j].type;
11488 for (j = 0; j < ssa->cfg.blocks_count; j++) {
11489 if ((ssa->cfg.blocks[j].flags & ZEND_BB_REACHABLE) &&
11490 ssa->cfg.blocks[j].len > 0) {
11491 … const zend_op *opline = op_array->opcodes + ssa->cfg.blocks[j].start + ssa->cfg.blocks[j].len - 1;
12009 zend_ssa *ssa,
12063 ssa->var_info[ssa_op->result_def].avoid_refcounting = 1;
12082 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD;
13092 zend_ssa *ssa,
13164 if (ssa->var_info && ssa_op->op1_use >= 0) {
13165 ssa->var_info[ssa_op->op1_use].type |= MAY_BE_CLASS_GUARD;
13166 ssa->var_info[ssa_op->op1_use].ce = ce;
13167 ssa->var_info[ssa_op->op1_use].is_instanceof = ce_is_instanceof;
13304 ssa->var_info[ssa_op->result_def].indirect_reference = 1;
13332 ssa->var_info[ssa_op->result_def].avoid_refcounting = 1;
13346 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD;
13486 zend_ssa *ssa,
13571 if (ssa->var_info && ssa_op->op1_use >= 0) {
13572 ssa->var_info[ssa_op->op1_use].type |= MAY_BE_CLASS_GUARD;
13573 ssa->var_info[ssa_op->op1_use].ce = ce;
13574 ssa->var_info[ssa_op->op1_use].is_instanceof = ce_is_instanceof;
13576 if (ssa->var_info && ssa_op->op1_def >= 0) {
13577 ssa->var_info[ssa_op->op1_def].type |= MAY_BE_CLASS_GUARD;
13578 ssa->var_info[ssa_op->op1_def].ce = ce;
13579 ssa->var_info[ssa_op->op1_def].is_instanceof = ce_is_instanceof;
13868 zend_ssa *ssa,
13963 if (ssa->var_info && ssa_op->op1_use >= 0) {
13964 ssa->var_info[ssa_op->op1_use].type |= MAY_BE_CLASS_GUARD;
13965 ssa->var_info[ssa_op->op1_use].ce = ce;
13966 ssa->var_info[ssa_op->op1_use].is_instanceof = ce_is_instanceof;
13968 if (ssa->var_info && ssa_op->op1_def >= 0) {
13969 ssa->var_info[ssa_op->op1_def].type |= MAY_BE_CLASS_GUARD;
13970 ssa->var_info[ssa_op->op1_def].ce = ce;
13971 ssa->var_info[ssa_op->op1_def].is_instanceof = ce_is_instanceof;
14210 zend_ssa *ssa,
14307 if (ssa->var_info && ssa_op->op1_use >= 0) {
14308 ssa->var_info[ssa_op->op1_use].type |= MAY_BE_CLASS_GUARD;
14309 ssa->var_info[ssa_op->op1_use].ce = ce;
14310 ssa->var_info[ssa_op->op1_use].is_instanceof = ce_is_instanceof;
14312 if (ssa->var_info && ssa_op->op1_def >= 0) {
14313 ssa->var_info[ssa_op->op1_def].type |= MAY_BE_CLASS_GUARD;
14314 ssa->var_info[ssa_op->op1_def].ce = ce;
14315 ssa->var_info[ssa_op->op1_def].is_instanceof = ce_is_instanceof;
14693 …ate **Dst, const zend_op *opline, const zend_op_array *op_array, zend_ssa *ssa, HashTable *jumptab…
14750 b = ssa->cfg.map[target - op_array->opcodes];
14768 …ate **Dst, const zend_op *opline, const zend_op_array *op_array, zend_ssa *ssa, zend_jit_trace_rec…
14812 b = ssa->cfg.map[ZEND_OFFSET_TO_OPLINE(opline, Z_LVAL_P(jump_zv)) - op_array->opcodes];
14814 b = ssa->cfg.map[ZEND_OFFSET_TO_OPLINE(opline, opline->extended_value) - op_array->opcodes];
14819 zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes];
14824 int default_b = next_opline ? -1 : ssa->cfg.map[default_opline - op_array->opcodes];
14916 b = ssa->cfg.map[target - op_array->opcodes];
14934 …if (!zend_jit_hash_jmp(Dst, opline, op_array, ssa, jumptable, default_b, default_label, next_oplin…
14975 …if (!zend_jit_hash_jmp(Dst, opline, op_array, ssa, jumptable, default_b, default_label, next_oplin…
15025 …if (!zend_jit_hash_jmp(Dst, opline, op_array, ssa, jumptable, default_b, default_label, next_oplin…
15362 zend_ssa *ssa,
15396 ssa->var_info[ssa_op->result_def].type &= ~MAY_BE_GUARD;
15615 …_may_reuse_reg(const zend_op *opline, const zend_ssa_op *ssa_op, zend_ssa *ssa, int def_var, int u…
15617 …if ((ssa->var_info[def_var].type & ~MAY_BE_GUARD) != (ssa->var_info[use_var].type & ~MAY_BE_GUARD)…
15647 static zend_bool zend_jit_opline_supports_reg(const zend_op_array *op_array, zend_ssa *ssa, const z…
15698 if (!ssa->cfg.map) {
15701 … if (opline > op_array->opcodes + ssa->cfg.blocks[ssa->cfg.map[opline-op_array->opcodes]].start &&
15730 static zend_bool zend_jit_var_supports_reg(zend_ssa *ssa, int var)
15732 if (ssa->vars[var].no_val) {
15741 if (ssa->vars[var].definition_phi) {
15744 if (ssa->vars[var].phi_use_chain) {
15745 zend_ssa_phi *phi = ssa->vars[var].phi_use_chain;
15747 if (!ssa->vars[phi->ssa_var].no_val) {
15750 phi = zend_ssa_next_use_phi(ssa, var, phi);
15755 if (((ssa->var_info[var].type & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) != MAY_BE_DOUBLE) &&
15756 ((ssa->var_info[var].type & (MAY_BE_ANY|MAY_BE_UNDEF|MAY_BE_REF)) != MAY_BE_LONG)) {
15764 static zend_bool zend_jit_may_be_in_reg(const zend_op_array *op_array, zend_ssa *ssa, int var)
15766 if (!zend_jit_var_supports_reg(ssa, var)) {
15770 if (ssa->vars[var].definition >= 0) {
15771 uint32_t def = ssa->vars[var].definition;
15772 if (!zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + def, ssa->ops + def, NULL)) {
15777 if (ssa->vars[var].use_chain >= 0) {
15778 int use = ssa->vars[var].use_chain;
15781 if (!zend_ssa_is_no_val_use(op_array->opcodes + use, ssa->ops + use, var) &&
15782 … !zend_jit_opline_supports_reg(op_array, ssa, op_array->opcodes + use, ssa->ops + use, NULL)) {
15785 use = zend_ssa_next_use(ssa->ops, var, use);
15807 …pline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, int current_var, z…
15829 …pline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, int current_var, z…
16139 if (ssa_op == ssa->ops
16149 if (ssa_op == ssa->ops
16161 uint32_t b = ssa->cfg.map[ssa_op - ssa->ops];
16163 if ((ssa->cfg.blocks[b].flags & ZEND_BB_LOOP_HEADER) != 0
16164 && ssa->cfg.blocks[b].start == ssa_op - ssa->ops) {