if (((opline+1)->opcode == ZEND_JMPZ_EX ||
(opline+1)->opcode == ZEND_JMPNZ_EX) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
zend_jit_addr res_addr = zend_jit_decode_op(op_array, opline->result_type, opline->result, opline, NULL, -1);
switch (opline->opcode) {
if (((opline+1)->opcode == ZEND_JMPZ ||
(opline+1)->opcode == ZEND_JMPZ_EX) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
} else if (((opline+1)->opcode == ZEND_JMPNZ ||
(opline+1)->opcode == ZEND_JMPNZ_EX) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
}
} else if ((opline+1)->opcode == ZEND_JMPZNZ &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
if ((opline+1)->opcode == ZEND_JMPZ &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
}
} else if ((opline+1)->opcode == ZEND_JMPNZ &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
}
} else if ((opline+1)->opcode == ZEND_JMPZNZ &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
unsigned int target_label2 = ssa->cfg.blocks[b].successors[1];
target_label = ssa->cfg.blocks[b].successors[0];
| jmp => target_label2
} else if ((opline+1)->opcode == ZEND_JMPZ_EX &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
zend_jit_addr res_addr = zend_jit_decode_op(op_array, opline->result_type, opline->result, opline, NULL, -1);
target_label = ssa->cfg.blocks[b].successors[0];
}
} else if ((opline+1)->opcode == ZEND_JMPNZ_EX &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
zend_jit_addr res_addr = zend_jit_decode_op(op_array, opline->result_type, opline->result, opline, NULL, -1);
target_label = ssa->cfg.blocks[b].successors[0];
if (((opline+1)->opcode == ZEND_JMPZ_EX ||
(opline+1)->opcode == ZEND_JMPNZ_EX) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
switch (opline->opcode) {
case ZEND_IS_EQUAL:
case ZEND_CASE:
if (((opline+1)->opcode == ZEND_JMPZ ||
(opline+1)->opcode == ZEND_JMPZ_EX) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
} else if (((opline+1)->opcode == ZEND_JMPNZ ||
(opline+1)->opcode == ZEND_JMPNZ_EX) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
}
} else if ((opline+1)->opcode == ZEND_JMPZNZ &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
target_label = ssa->cfg.blocks[b].successors[0];
switch (opline->opcode) {
case ZEND_IS_EQUAL:
(opline+1)->opcode == ZEND_JMPNZ_EX ||
(opline+1)->opcode == ZEND_JMPZNZ) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
(*opnum)++;
}
(opline+1)->opcode == ZEND_JMPNZ ||
(opline+1)->opcode == ZEND_JMPZNZ) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
(*opnum)++;
smart_branch = 1;
}
(opline+1)->opcode == ZEND_JMPNZ ||
(opline+1)->opcode == ZEND_JMPZNZ) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
(*opnum)++;
smart_branch = 1;
}
(opline+1)->opcode == ZEND_JMPNZ ||
(opline+1)->opcode == ZEND_JMPZNZ) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
(*opnum)++;
smart_branch = 1;
}
}
}
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- if ((opline+1)->opcode == ZEND_JMPZ) {
+ if ((opline+1)->opcode == ZEND_JMPZ
+ && ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
unsigned int target_label = ssa->cfg.blocks[b].successors[1];
| jmp =>target_label
- } else if ((opline+1)->opcode == ZEND_JMPNZ) {
+ } else if ((opline+1)->opcode == ZEND_JMPNZ
+ && ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
unsigned int target_label = ssa->cfg.blocks[b].successors[0];
| jmp =>target_label
- } else if ((opline+1)->opcode == ZEND_JMPZNZ) {
+ } else if ((opline+1)->opcode == ZEND_JMPZNZ
+ && ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
unsigned int target_label = ssa->cfg.blocks[b].successors[1];
| jmp =>target_label
} else {
}
}
if (!(opline->extended_value & ZEND_ISEMPTY)) {
- if ((opline+1)->opcode == ZEND_JMPZ) {
+ if ((opline+1)->opcode == ZEND_JMPZ
+ && ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
unsigned int target_label = ssa->cfg.blocks[b].successors[0];
| jmp =>target_label
- } else if ((opline+1)->opcode == ZEND_JMPNZ) {
- } else if ((opline+1)->opcode == ZEND_JMPZNZ) {
+ } else if ((opline+1)->opcode == ZEND_JMPNZ
+ && ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
+ } else if ((opline+1)->opcode == ZEND_JMPZNZ
+ && ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
unsigned int target_label = ssa->cfg.blocks[b].successors[0];
| jmp =>target_label
} else {
(opline+1)->opcode == ZEND_JMPNZ ||
(opline+1)->opcode == ZEND_JMPZNZ) &&
(opline+1)->op1_type == IS_TMP_VAR &&
- (opline+1)->op1.var == opline->result.var) {
+ (opline+1)->op1.var == opline->result.var &&
+ ssa->cfg.map[(opline+1) - op_array->opcodes] == ssa->cfg.map[opline - op_array->opcodes]) {
(*opnum)++;
}