Lines Matching refs:op_array

108 static void zend_mark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg, int start) /* …  in zend_mark_reachable_blocks()  argument
113 zend_mark_reachable(op_array->opcodes, cfg, blocks + start); in zend_mark_reachable_blocks()
115 if (op_array->last_try_catch) { in zend_mark_reachable_blocks()
124 for (j = 0; j < op_array->last_try_catch; j++) { in zend_mark_reachable_blocks()
127 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
131 if (op_array->try_catch_array[j].catch_op) { in zend_mark_reachable_blocks()
132 end = blocks + block_map[op_array->try_catch_array[j].catch_op]; in zend_mark_reachable_blocks()
135 op_array->try_catch_array[j].try_op = b->start; in zend_mark_reachable_blocks()
141 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
143 if (op_array->try_catch_array[j].finally_op) { in zend_mark_reachable_blocks()
144 end = blocks + block_map[op_array->try_catch_array[j].finally_op]; in zend_mark_reachable_blocks()
147 op_array->try_catch_array[j].try_op = op_array->try_catch_array[j].catch_op; in zend_mark_reachable_blocks()
149 …zend_mark_reachable(op_array->opcodes, cfg, blocks + block_map[op_array->try_catch_array[j].try_op… in zend_mark_reachable_blocks()
158 b = blocks + block_map[op_array->try_catch_array[j].try_op]; in zend_mark_reachable_blocks()
161 if (op_array->try_catch_array[j].catch_op) { in zend_mark_reachable_blocks()
162 b = blocks + block_map[op_array->try_catch_array[j].catch_op]; in zend_mark_reachable_blocks()
166 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
169 if (op_array->try_catch_array[j].finally_op) { in zend_mark_reachable_blocks()
170 b = blocks + block_map[op_array->try_catch_array[j].finally_op]; in zend_mark_reachable_blocks()
174 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
177 if (op_array->try_catch_array[j].finally_end) { in zend_mark_reachable_blocks()
178 b = blocks + block_map[op_array->try_catch_array[j].finally_end]; in zend_mark_reachable_blocks()
182 zend_mark_reachable(op_array->opcodes, cfg, b); in zend_mark_reachable_blocks()
186 if (op_array->try_catch_array[j].catch_op) { in zend_mark_reachable_blocks()
187 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].catch_op]].flags & ZEND_BB_REACHABLE)); in zend_mark_reachable_blocks()
189 if (op_array->try_catch_array[j].finally_op) { in zend_mark_reachable_blocks()
190 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_op]].flags & ZEND_BB_REACHABLE… in zend_mark_reachable_blocks()
192 if (op_array->try_catch_array[j].finally_end) { in zend_mark_reachable_blocks()
193 …ZEND_ASSERT(!(blocks[block_map[op_array->try_catch_array[j].finally_end]].flags & ZEND_BB_REACHABL… in zend_mark_reachable_blocks()
212 zend_op *opline = &op_array->opcodes[j]; in zend_mark_reachable_blocks()
214 zend_op *def_opline = zend_optimizer_get_loop_var_def(op_array, opline); in zend_mark_reachable_blocks()
216 uint32_t def_block = block_map[def_opline - op_array->opcodes]; in zend_mark_reachable_blocks()
229 void zend_cfg_remark_reachable_blocks(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_remark_reachable_blocks() argument
248 zend_mark_reachable_blocks(op_array, cfg, start); in zend_cfg_remark_reachable_blocks()
270 ZEND_API void zend_build_cfg(zend_arena **arena, const zend_op_array *op_array, uint32_t build_flag… in zend_build_cfg() argument
284 cfg->map = block_map = zend_arena_calloc(arena, op_array->last, sizeof(uint32_t)); in zend_build_cfg()
288 for (i = 0; i < op_array->last; i++) { in zend_build_cfg()
289 zend_op *opline = op_array->opcodes + i; in zend_build_cfg()
301 if (i + 1 < op_array->last) { in zend_build_cfg()
310 if (opline->extended_value != ZEND_THROW_IS_EXPR && i + 1 < op_array->last) { in zend_build_cfg()
350 BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes); in zend_build_cfg()
354 if (i + 1 < op_array->last) { in zend_build_cfg()
359 BB_START(OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes); in zend_build_cfg()
360 if (i + 1 < op_array->last) { in zend_build_cfg()
374 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg()
379 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg()
385 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg()
390 BB_START(OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes); in zend_build_cfg()
400 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv))); in zend_build_cfg()
402 BB_START(ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_value)); in zend_build_cfg()
417 !op_array->function_name) { in zend_build_cfg()
445 && op_array->last > 0 && block_map[0] > 1) { in zend_build_cfg()
449 if (op_array->last_try_catch) { in zend_build_cfg()
450 for (j = 0; j < op_array->last_try_catch; j++) { in zend_build_cfg()
451 BB_START(op_array->try_catch_array[j].try_op); in zend_build_cfg()
452 if (op_array->try_catch_array[j].catch_op) { in zend_build_cfg()
453 BB_START(op_array->try_catch_array[j].catch_op); in zend_build_cfg()
455 if (op_array->try_catch_array[j].finally_op) { in zend_build_cfg()
456 BB_START(op_array->try_catch_array[j].finally_op); in zend_build_cfg()
458 if (op_array->try_catch_array[j].finally_end) { in zend_build_cfg()
459 BB_START(op_array->try_catch_array[j].finally_end); in zend_build_cfg()
479 for (i = 0; i < op_array->last; i++) { in zend_build_cfg()
504 opline = op_array->opcodes + block->start + block->len - 1; in zend_build_cfg()
517 block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes]; in zend_build_cfg()
530 block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes]; in zend_build_cfg()
536 block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes]; in zend_build_cfg()
546 …block->successors[0] = block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_valu… in zend_build_cfg()
552 block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op2) - op_array->opcodes]; in zend_build_cfg()
557 block->successors[0] = block_map[OP_JMP_ADDR(opline, opline->op1) - op_array->opcodes]; in zend_build_cfg()
572 block->successors[s++] = block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, Z_LVAL_P(zv))]; in zend_build_cfg()
575 …block->successors[s++] = block_map[ZEND_OFFSET_TO_OPLINE_NUM(op_array, opline, opline->extended_va… in zend_build_cfg()
590 zend_mark_reachable_blocks(op_array, cfg, 0); in zend_build_cfg()
675 ZEND_API void zend_cfg_compute_dominators_tree(const zend_op_array *op_array, zend_cfg *cfg) /* {{{… in zend_cfg_compute_dominators_tree() argument
777 ZEND_API void zend_cfg_identify_loops(const zend_op_array *op_array, zend_cfg *cfg) /* {{{ */ in zend_cfg_identify_loops() argument