Skip to content

Commit c2f1c36

Browse files
committed
Eliminate run-time check
1 parent ddf38fd commit c2f1c36

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

ext/opcache/jit/zend_jit_x86.dasc

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8015,11 +8015,18 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend
80158015
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
80168016
| mov r2, aword [r2]
80178017
#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
8018-
| test r2, 1
8019-
| jz >1
8020-
| MEM_OP2_2_ZTS add, r2, aword, compiler_globals, map_ptr_base, r1
8021-
|1:
8022-
| mov r2, aword [r2]
8018+
if (func) {
8019+
if (func->op_array.fn_flags & ZEND_ACC_IMMUTABLE) {
8020+
| MEM_OP2_2_ZTS add, r2, aword, compiler_globals, map_ptr_base, r1
8021+
}
8022+
| mov r2, aword [r2]
8023+
} else {
8024+
| test r2, 1
8025+
| jz >1
8026+
| MEM_OP2_2_ZTS add, r2, aword, compiler_globals, map_ptr_base, r1
8027+
|1:
8028+
| mov r2, aword [r2]
8029+
}
80238030
#else
80248031
# error "Unknown ZEND_MAP_PTR_KIND"
80258032
#endif

0 commit comments

Comments
 (0)