Skip to content

Commit ef7904b

Browse files
committed
JIT for MATCH and CASE_STRICT instructions
1 parent ecf4e70 commit ef7904b

File tree

3 files changed

+196
-132
lines changed

3 files changed

+196
-132
lines changed

ext/opcache/jit/zend_jit.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2633,6 +2633,7 @@ static int zend_jit(const zend_op_array *op_array, zend_ssa *ssa, const zend_op
26332633
}
26342634
case ZEND_IS_IDENTICAL:
26352635
case ZEND_IS_NOT_IDENTICAL:
2636+
case ZEND_CASE_STRICT:
26362637
if ((opline->result_type & IS_TMP_VAR)
26372638
&& (i + 1) <= end
26382639
&& ((opline+1)->opcode == ZEND_JMPZ

ext/opcache/jit/zend_jit_trace.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,7 @@ static int zend_jit_trace_may_exit(const zend_op_array *op_array, const zend_op
257257
case ZEND_IS_SMALLER:
258258
case ZEND_IS_SMALLER_OR_EQUAL:
259259
case ZEND_CASE:
260+
case ZEND_CASE_STRICT:
260261
case ZEND_ISSET_ISEMPTY_CV:
261262
case ZEND_ISSET_ISEMPTY_VAR:
262263
case ZEND_ISSET_ISEMPTY_DIM_OBJ:
@@ -1420,6 +1421,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
14201421
case ZEND_CASE:
14211422
case ZEND_IS_IDENTICAL:
14221423
case ZEND_IS_NOT_IDENTICAL:
1424+
case ZEND_CASE_STRICT:
14231425
case ZEND_FETCH_DIM_R:
14241426
case ZEND_FETCH_DIM_IS:
14251427
case ZEND_BW_OR:
@@ -3726,6 +3728,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
37263728
goto done;
37273729
case ZEND_IS_IDENTICAL:
37283730
case ZEND_IS_NOT_IDENTICAL:
3731+
case ZEND_CASE_STRICT:
37293732
op1_info = OP1_INFO();
37303733
CHECK_OP1_TRACE_TYPE();
37313734
op2_info = OP2_INFO();

0 commit comments

Comments
 (0)