#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
| mov r2, aword [r2]
#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
- | test r2, 1
- | jz >1
- | MEM_OP2_2_ZTS add, r2, aword, compiler_globals, map_ptr_base, r1
- |1:
- | mov r2, aword [r2]
+ if (func) {
+ if (func->op_array.fn_flags & ZEND_ACC_IMMUTABLE) {
+ | MEM_OP2_2_ZTS add, r2, aword, compiler_globals, map_ptr_base, r1
+ }
+ | mov r2, aword [r2]
+ } else {
+ | test r2, 1
+ | jz >1
+ | MEM_OP2_2_ZTS add, r2, aword, compiler_globals, map_ptr_base, r1
+ |1:
+ | mov r2, aword [r2]
+ }
#else
# error "Unknown ZEND_MAP_PTR_KIND"
#endif