38 for (i = 0; i < jmp_hitlist_count; i++) {
39 if (jmp_hitlist[i] == target) {
46#define CHECK_LOOP(target) \
47 if (EXPECTED(!in_hitlist(target, jmp_hitlist, jmp_hitlist_count))) { \
48 jmp_hitlist[jmp_hitlist_count++] = target; \
59 int jmp_hitlist_count;
66 while (opline <
end) {
70 jmp_hitlist_count = 0;
78 }
else if (target->opcode ==
ZEND_NOP) {
86 if (target == opline + 1) {
100 }
else if (opline > op_array->
opcodes &&
112 jmp_hitlist_count = 0;
119 }
else if (target->opcode ==
ZEND_NOP) {
130 jmp_hitlist_count = 0;
139 }
else if (target->opcode == opline->
opcode &&
150 }
else if (target->opcode ==
ZEND_NOP) {
159 if (target == opline + 1) {
166 jmp_hitlist_count = 0;
175 }
else if (target->opcode == opline->
opcode-3 &&
182 }
else if (target->opcode == opline->
opcode &&
183 target->result.var == opline->
result.
var &&
197 target->result.var == opline->
result.
var &&
203 }
else if (target->opcode ==
ZEND_BOOL &&
220 }
else if (target->opcode ==
ZEND_NOP) {
229 if (target == opline + 1) {
void zend_optimizer_pass3(zend_op_array *op_array, zend_optimizer_ctx *ctx)
#define CHECK_LOOP(target)
unsigned const char * end
#define ZEND_SET_OP_JMP_ADDR(opline, node, val)
struct _zend_op_array zend_op_array
#define ZEND_ACC_HAS_FINALLY_BLOCK
int zend_optimizer_add_literal(zend_op_array *op_array, const zval *zv)
void zend_optimizer_convert_to_free_op1(zend_op_array *op_array, zend_op *opline)
#define ZEND_OP1_JMP_ADDR(opline)
#define INV_EX_COND_EX(op)
#define ZEND_OP1_LITERAL(opline)
#define SAME_VAR(op1, op2)
#define ZEND_OP2_JMP_ADDR(opline)
struct _zend_optimizer_ctx zend_optimizer_ctx
#define ALLOCA_FLAG(name)
#define do_alloca(p, use_heap)
#define zend_always_inline
#define free_alloca(p, use_heap)
#define ZEND_RETURN_BY_REF
#define ZEND_GENERATOR_RETURN