mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Eliminate some repeatable IS_REFERENCE checks
This commit is contained in:
parent
288581fade
commit
dde5572937
@ -4134,8 +4134,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -4196,8 +4196,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -4268,8 +4268,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -4334,8 +4334,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -4358,6 +4358,11 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
zend_may_throw(opline, ssa_op, op_array, ssa))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
if ((opline+1)->op1_type == IS_CV
|
||||
&& (ssa_op+1)->op1_def >= 0
|
||||
&& ssa->vars[(ssa_op+1)->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[(ssa_op+1)->op1_def].guarded_reference = ssa->var_info[(ssa_op+1)->op1_use].guarded_reference;
|
||||
}
|
||||
goto done;
|
||||
case ZEND_ASSIGN_DIM:
|
||||
op1_info = OP1_INFO();
|
||||
@ -4381,8 +4386,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -4396,6 +4401,11 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
if ((opline+1)->op1_type == IS_CV
|
||||
&& (ssa_op+1)->op1_def >= 0
|
||||
&& ssa->vars[(ssa_op+1)->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[(ssa_op+1)->op1_def].guarded_reference = ssa->var_info[(ssa_op+1)->op1_use].guarded_reference;
|
||||
}
|
||||
goto done;
|
||||
case ZEND_ASSIGN:
|
||||
if (opline->op1_type != IS_CV) {
|
||||
@ -4422,8 +4432,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
if (!zend_jit_assign_to_typed_ref(&dasm_state, opline, opline->op2_type, op2_addr, 1)) {
|
||||
goto jit_failure;
|
||||
@ -4488,6 +4498,11 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
zend_may_throw_ex(opline, ssa_op, op_array, ssa, op1_info, op2_info))) {
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op2_type == IS_CV
|
||||
&& ssa_op->op2_def >= 0
|
||||
&& ssa->vars[ssa_op->op2_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op2_def].guarded_reference = ssa->var_info[ssa_op->op2_use].guarded_reference;
|
||||
}
|
||||
goto done;
|
||||
case ZEND_CAST:
|
||||
if (opline->extended_value != op1_type) {
|
||||
@ -4518,6 +4533,11 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
res_use_info, res_info, RES_REG_ADDR())) {
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa_op->op1_def >= 0
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = ssa->var_info[ssa_op->op1_use].guarded_reference;
|
||||
}
|
||||
goto done;
|
||||
case ZEND_INIT_FCALL:
|
||||
case ZEND_INIT_FCALL_BY_NAME:
|
||||
@ -4566,6 +4586,10 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
op1_info, 0)) {
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
goto done;
|
||||
case ZEND_SEND_VAR:
|
||||
case ZEND_SEND_VAR_EX:
|
||||
@ -4595,6 +4619,11 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
op1_info, op1_addr, op1_def_addr)) {
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa_op->op1_def >= 0
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = ssa->var_info[ssa_op->op1_use].guarded_reference;
|
||||
}
|
||||
if (frame->call
|
||||
&& frame->call->func
|
||||
&& frame->call->func->type == ZEND_USER_FUNCTION) {
|
||||
@ -5096,8 +5125,8 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
goto jit_failure;
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
&& ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -5251,7 +5280,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
}
|
||||
if (opline->op1_type == IS_CV
|
||||
&& ssa->vars[ssa_op->op1_use].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_use].guarded_reference = 1;
|
||||
ssa->var_info[ssa_op->op1_def >= 0 ? ssa_op->op1_def : ssa_op->op1_use].guarded_reference = 1;
|
||||
}
|
||||
} else {
|
||||
CHECK_OP1_TRACE_TYPE();
|
||||
@ -5289,6 +5318,9 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
|
||||
} else {
|
||||
op1_info = OP1_INFO();
|
||||
}
|
||||
if (ssa->vars[ssa_op->op1_def].alias == NO_ALIAS) {
|
||||
ssa->var_info[ssa_op->op1_def].guarded_reference = 1;
|
||||
}
|
||||
if (!zend_jit_bind_global(&dasm_state, opline, op1_info)) {
|
||||
goto jit_failure;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user