} else if (trace_flags & ZEND_JIT_TRACE_START_RETURN) {
return "return";
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
return "???";
}
}
return i;
}
}
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
return 0;
}
} else if (i < parent_vars_count
&& STACK_TYPE(parent_stack, i) != IS_UNKNOWN) {
/* This must be already handled by trace type inference */
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
SET_STACK_TYPE(stack, i, STACK_TYPE(parent_stack, i));
} else if ((info & MAY_BE_GUARD) != 0
&& trace_buffer->stop == ZEND_JIT_TRACE_STOP_LOOP
&& op_array->function_name
&& i >= op_array->num_args) {
/* This must be already handled by trace type inference */
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
SET_STACK_TYPE(stack, i, IS_UNDEF);
} else {
SET_STACK_TYPE(stack, i, IS_UNKNOWN);
smart_branch_opcode = opline->opcode;
exit_opline = OP_JMP_ADDR(opline, opline->op2);
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (ra) {
zend_jit_trace_clenup_stack(stack, opline, ssa_op, ssa, ra);
goto jit_failure;
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (opline->result_type == IS_UNDEF) {
res_addr = 0;
frame->call = call->prev;
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
} else if (STACK_REG(stack, i) == ZREG_LONG_MAX) {
val = ZEND_LONG_MAX;
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
ZVAL_LONG(EX_VAR_NUM(i), val);
} else if (STACK_TYPE(stack, i) == IS_DOUBLE) {
} else if (STACK_REG(stack, i) == ZREG_LONG_MAX_PLUS_1) {
val = (double)ZEND_LONG_MAX + 1.0;
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
ZVAL_DOUBLE(EX_VAR_NUM(i), val);
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
}
|| } else if (Z_MODE(addr) == IS_MEM_ZVAL) {
| LOAD_BASE_ADDR reg, Z_REG(addr), Z_OFFSET(addr)
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
|| } else if (Z_MODE(addr) == IS_MEM_ZVAL) {
| PUSH_BASE_ADDR Z_REG(addr), Z_OFFSET(addr), tmp_reg
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
|| } else if (Z_MODE(addr) == IS_REG) {
| sse_ins xmm(reg-ZREG_XMM0), xmm(Z_REG(addr)-ZREG_XMM0)
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
|| } else if (Z_MODE(addr) == IS_REG) {
| SSE_AVX_INS sse_ins, avx_ins, xmm(reg-ZREG_XMM0), xmm(Z_REG(addr)-ZREG_XMM0)
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
| cvtsi2sd xmm(reg-ZREG_XMM0), Ra(Z_REG(addr))
|| }
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
|| } else if (Z_MODE(addr) == IS_REG) {
| SSE_AVX_INS movsd, vmovaps, xmm(reg-ZREG_XMM0), xmm(Z_REG(addr)-ZREG_XMM0)
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|| }
|.endmacro
|| } else if (Z_MODE(addr) == IS_REG) {
| avx_ins xmm(reg-ZREG_XMM0), xmm(op1_reg-ZREG_XMM0), xmm(Z_REG(addr)-ZREG_XMM0)
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
|| } else if (Z_MODE(addr) == IS_REG) {
| long_ins Ra(reg), Ra(Z_REG(addr))
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
| long_ins Ra(Z_REG(op1_addr)), lval
| .endif
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
| mov Ra(reg), Ra(Z_REG(addr))
|| }
|| } else {
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
| LONG_OP xor, reg, addr
|| break;
|| default:
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
| xor dst_reg, src_reg
|| break;
|| default:
-|| ZEND_ASSERT(0);
+|| ZEND_UNREACHABLE();
|| }
|.endmacro
| add r4, SPAD // stack alignment
| jmp aword [IP]
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
// TODO: context threading can't work without GLOBAL REGS because we have to change
// the value of execute_data in execute_ex()
| mov FCARG1a, FP
| SET_ZVAL_TYPE_INFO dst, IS_DOUBLE
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
return 1;
}
} else if ((info & MAY_BE_ANY) == MAY_BE_DOUBLE) {
| SSE_GET_ZVAL_DVAL Z_REG(dst), src
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
return 1;
}
} else if ((info & MAY_BE_ANY) == MAY_BE_DOUBLE) {
| SSE_AVX_INS movsd, vmovaps, xmm(Z_REG(dst)-ZREG_XMM0), xmm(Z_REG(src)-ZREG_XMM0)
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (Z_MODE(dst) == IS_MEM_ZVAL) {
if (!Z_LOAD(src) && !Z_STORE(src)) {
}
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (Z_MODE(src) == IS_MEM_ZVAL) {
if (Z_MODE(dst) == IS_REG) {
return 0;
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
return 1;
|.endif
| SET_ZVAL_TYPE_INFO dst, IS_DOUBLE
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
return 1;
}
} else if (opline->opcode == ZEND_POST_DEC) {
| EXT_CALL zend_jit_post_dec_typed_ref, r0
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
|.if not(X64)
| add r4, 12
} else if (opcode == ZEND_DIV) {
| EXT_CALL div_function, r0
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
|.if not(X64)
| add r4, 12
} else if (opcode == ZEND_MOD) {
| EXT_CALL mod_function, r0
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
|.if not(X64)
| add r4, 12
| jmp >9
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
|.code
break;
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (type != BP_JIT_IS && (op2_info & MAY_BE_STRING)) {
| jmp >9
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
|.code
break;
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
| jmp >9
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (op2_info & (MAY_BE_LONG|MAY_BE_STRING)) {
|.code
} else if (val_type == IS_CV) {
| EXT_CALL zend_jit_assign_cv_to_typed_ref, r0
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| jmp >8
|.code
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
result = zend_jit_concat_helper(Dst, opline, op_array, opline->op1_type, opline->op1, op1_addr, op1_info, opline->op2_type, opline->op2, op2_addr, op2_info, op1_addr, op1_def_info, may_throw);
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
|9:
return result;
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| movzx eax, al
| lea eax, [eax + 2]
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPNZ ||
smart_branch_opcode == ZEND_JMPNZ_EX) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
switch (opline->opcode) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| jmp => target_label2
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
switch (opline->opcode) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| movzx eax, al
| add eax, 2
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPNZ) {
switch (opline->opcode) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
switch (opline->opcode) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| jmp => target_label2
} else if (smart_branch_opcode == ZEND_JMPZ_EX) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPNZ_EX) {
switch (opline->opcode) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
switch (opline->opcode) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| SET_ZVAL_TYPE_INFO res_addr, eax
}
| setle al
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| movzx eax, al
| lea eax, [eax + 2]
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPNZ ||
smart_branch_opcode == ZEND_JMPNZ_EX) {
}
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
switch (opline->opcode) {
| jg => target_label
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| jmp => target_label2
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
switch (opline->opcode) {
| setle al
break;
default:
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| movzx eax, al
| add eax, 2
not_identical_label = target_label;
identical_label = target_label2;
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else if (opline->opcode == ZEND_IS_NOT_IDENTICAL) {
if (smart_branch_opcode == ZEND_JMPZ) {
identical_label = target_label;
not_identical_label = target_label2;
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
set_bool = 1;
true_label = target_label;
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (Z_MODE(op1_addr) == IS_CONST_ZVAL) {
return 0;
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
return 0;
}
| LOAD_ADDR FCARG1a, zv;
| EXT_CALL zend_jit_find_ns_func_helper, r0
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
| // CACHE_PTR(opline->result.num, fbc);
| mov r1, EX->run_time_cache
}
#endif
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (trace && !func) {
op1_info |= MAY_BE_NULL;
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
if (op1_info & (MAY_BE_UNDEF|MAY_BE_ANY|MAY_BE_REF)) {
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
| jmp =>target_label2
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
zend_jit_addr res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
| jmp =>target_label
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
zend_jit_addr res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
undefined_label = target_label;
defined_label = target_label2;
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
| je =>target_label
| jmp =>target_label2
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
zend_jit_addr res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
| jne =>target_label
| jmp =>target_label2
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
zend_jit_addr res_addr = ZEND_ADDR_MEM_ZVAL(ZREG_FP, opline->result.var);
#endif
} else {
#ifdef CONTEXT_THREADED_JIT
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
// TODO: context threading can't work without GLOBAL REGS because we have to change
// the value of execute_data in execute_ex()
| mov FCARG1a, FP
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
| jmp =>target_label2
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
| SET_ZVAL_TYPE_INFO res_addr, IS_TRUE
} else if (smart_branch_opcode == ZEND_JMPZNZ) {
| jmp =>target_label
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
| SET_ZVAL_TYPE_INFO res_addr, IS_FALSE
| jmp =>b
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
} else {
zend_ssa_op *ssa_op = &ssa->ops[opline - op_array->opcodes];
|.code
}
} else {
- ZEND_ASSERT(0);
+ ZEND_UNREACHABLE();
}
}
return 1;