mirror of
https://github.com/php/php-src.git
synced 2026-04-23 16:08:35 +02:00
Eliminate useless exception checks
This commit is contained in:
@@ -4255,11 +4255,8 @@ void zend_inference_check_recursive_dependencies(zend_op_array *op_array)
|
||||
free_alloca(worklist, use_heap);
|
||||
}
|
||||
|
||||
int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa)
|
||||
int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2)
|
||||
{
|
||||
uint32_t t1 = OP1_INFO();
|
||||
uint32_t t2 = OP2_INFO();
|
||||
|
||||
if (opline->op1_type == IS_CV) {
|
||||
if (t1 & MAY_BE_UNDEF) {
|
||||
switch (opline->opcode) {
|
||||
@@ -4594,3 +4591,8 @@ int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa)
|
||||
{
|
||||
return zend_may_throw_ex(opline, ssa_op, op_array, ssa, OP1_INFO(), OP2_INFO());
|
||||
}
|
||||
|
||||
@@ -270,6 +270,7 @@ void zend_func_return_info(const zend_op_array *op_array,
|
||||
int widening,
|
||||
zend_ssa_var_info *ret);
|
||||
|
||||
int zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa, uint32_t t1, uint32_t t2);
|
||||
int zend_may_throw(const zend_op *opline, const zend_ssa_op *ssa_op, const zend_op_array *op_array, zend_ssa *ssa);
|
||||
|
||||
int zend_update_type_info(const zend_op_array *op_array,
|
||||
|
||||
@@ -3243,7 +3243,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
if (!zend_jit_assign_dim_op(&dasm_state, opline, op_array,
|
||||
op1_info, op1_def_info, op1_addr, op2_info,
|
||||
op1_data_info, OP1_DATA_RANGE(),
|
||||
zend_may_throw(opline, ssa_op, op_array, ssa))) {
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
goto done;
|
||||
@@ -3267,7 +3267,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
CHECK_OP1_DATA_TRACE_TYPE();
|
||||
if (!zend_jit_assign_dim(&dasm_state, opline, op_array,
|
||||
op1_info, op1_addr, op2_info, op1_data_info,
|
||||
zend_may_throw(opline, ssa_op, op_array, ssa))) {
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
goto done;
|
||||
@@ -3318,7 +3318,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
op1_def_info, op1_def_addr,
|
||||
op2_info, op2_addr, op2_def_addr,
|
||||
res_info, res_addr,
|
||||
zend_may_throw(opline, ssa_op, op_array, ssa))) {
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
goto done;
|
||||
@@ -3768,7 +3768,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
}
|
||||
if (!zend_jit_isset_isempty_dim(&dasm_state, opline, op_array,
|
||||
op1_info, op1_addr, op2_info,
|
||||
zend_may_throw(opline, ssa_op, op_array, ssa),
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info),
|
||||
smart_branch_opcode, -1, -1,
|
||||
exit_addr)) {
|
||||
goto jit_failure;
|
||||
@@ -3839,7 +3839,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
if (!zend_jit_fetch_obj(&dasm_state, opline, op_array,
|
||||
op1_info, op1_addr, op1_indirect, ce, ce_is_instanceof,
|
||||
delayed_fetch_this,
|
||||
zend_may_throw(opline, ssa_op, op_array, ssa))) {
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, MAY_BE_STRING))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
goto done;
|
||||
|
||||
Reference in New Issue
Block a user