Skip to content

Commit ddaf64b

Browse files
committed
Avoid non-immutable map_ptr indirection
1 parent 7cc3c7a commit ddaf64b

15 files changed

+47
-150
lines changed

Zend/zend.c

Lines changed: 5 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -702,7 +702,6 @@ static void compiler_globals_ctor(zend_compiler_globals *compiler_globals) /* {{
702702
compiler_globals->script_encoding_list = NULL;
703703
compiler_globals->current_linking_class = NULL;
704704

705-
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
706705
/* Map region is going to be created and resized at run-time. */
707706
compiler_globals->map_ptr_real_base = NULL;
708707
compiler_globals->map_ptr_base = ZEND_MAP_PTR_BIASED_BASE(NULL);
@@ -716,9 +715,6 @@ static void compiler_globals_ctor(zend_compiler_globals *compiler_globals) /* {{
716715
compiler_globals->map_ptr_base = ZEND_MAP_PTR_BIASED_BASE(base);
717716
memset(base, 0, compiler_globals->map_ptr_last * sizeof(void*));
718717
}
719-
#else
720-
# error "Unknown ZEND_MAP_PTR_KIND"
721-
#endif
722718
}
723719
/* }}} */
724720

@@ -967,24 +963,11 @@ void zend_startup(zend_utility_functions *utility_functions) /* {{{ */
967963
#ifdef ZEND_WIN32
968964
zend_get_windows_version_info(&EG(windows_version_info));
969965
#endif
970-
# if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
971-
/* Create a map region, used for indirect pointers from shared to
972-
* process memory. It's allocated once and never resized.
973-
* All processes must map it into the same address space.
974-
*/
975-
CG(map_ptr_size) = 1024 * 1024; // TODO: initial size ???
976-
CG(map_ptr_last) = 0;
977-
CG(map_ptr_real_base) = pemalloc(CG(map_ptr_size) * sizeof(void*), 1);
978-
CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
979-
# elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
980-
/* Map region is going to be created and resized at run-time. */
981-
CG(map_ptr_real_base) = NULL;
982-
CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(NULL);
983-
CG(map_ptr_size) = 0;
984-
CG(map_ptr_last) = 0;
985-
# else
986-
# error "Unknown ZEND_MAP_PTR_KIND"
987-
# endif
966+
/* Map region is going to be created and resized at run-time. */
967+
CG(map_ptr_real_base) = NULL;
968+
CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(NULL);
969+
CG(map_ptr_size) = 0;
970+
CG(map_ptr_last) = 0;
988971
#endif
989972
EG(error_reporting) = E_ALL & ~E_NOTICE;
990973

@@ -1821,28 +1804,15 @@ ZEND_API void *zend_map_ptr_new(void)
18211804
void **ptr;
18221805

18231806
if (CG(map_ptr_last) >= CG(map_ptr_size)) {
1824-
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
1825-
// TODO: error ???
1826-
ZEND_UNREACHABLE();
1827-
#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
18281807
/* Grow map_ptr table */
18291808
CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(CG(map_ptr_last) + 1, 4096);
18301809
CG(map_ptr_real_base) = perealloc(CG(map_ptr_real_base), CG(map_ptr_size) * sizeof(void*), 1);
18311810
CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
1832-
#else
1833-
# error "Unknown ZEND_MAP_PTR_KIND"
1834-
#endif
18351811
}
18361812
ptr = (void**)CG(map_ptr_real_base) + CG(map_ptr_last);
18371813
*ptr = NULL;
18381814
CG(map_ptr_last)++;
1839-
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
1840-
return ptr;
1841-
#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
18421815
return ZEND_MAP_PTR_PTR2OFFSET(ptr);
1843-
#else
1844-
# error "Unknown ZEND_MAP_PTR_KIND"
1845-
#endif
18461816
}
18471817

18481818
ZEND_API void zend_map_ptr_extend(size_t last)
@@ -1851,17 +1821,10 @@ ZEND_API void zend_map_ptr_extend(size_t last)
18511821
void **ptr;
18521822

18531823
if (last >= CG(map_ptr_size)) {
1854-
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
1855-
/* This may never happen */
1856-
ZEND_UNREACHABLE();
1857-
#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
18581824
/* Grow map_ptr table */
18591825
CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(last, 4096);
18601826
CG(map_ptr_real_base) = perealloc(CG(map_ptr_real_base), CG(map_ptr_size) * sizeof(void*), 1);
18611827
CG(map_ptr_base) = ZEND_MAP_PTR_BIASED_BASE(CG(map_ptr_real_base));
1862-
#else
1863-
# error "Unknown ZEND_MAP_PTR_KIND"
1864-
#endif
18651828
}
18661829
ptr = (void**)CG(map_ptr_real_base) + CG(map_ptr_last);
18671830
memset(ptr, 0, (last - CG(map_ptr_last)) * sizeof(void*));

Zend/zend_API.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4054,10 +4054,6 @@ ZEND_API zend_property_info *zend_declare_typed_property(zend_class_entry *ce, z
40544054
if (ce->type == ZEND_INTERNAL_CLASS &&
40554055
ce->info.internal.module->type == MODULE_PERSISTENT) {
40564056
ZEND_MAP_PTR_NEW(ce->static_members_table);
4057-
} else {
4058-
ZEND_MAP_PTR_INIT(ce->static_members_table,
4059-
zend_arena_alloc(&CG(arena), sizeof(zval **)));
4060-
ZEND_MAP_PTR_SET(ce->static_members_table, NULL);
40614057
}
40624058
}
40634059
} else {

Zend/zend_closures.c

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,10 +164,8 @@ ZEND_METHOD(Closure, call)
164164
void *ptr;
165165

166166
my_function.op_array.fn_flags |= ZEND_ACC_HEAP_RT_CACHE;
167-
ptr = emalloc(sizeof(void*) + my_function.op_array.cache_size);
167+
ptr = emalloc(my_function.op_array.cache_size);
168168
ZEND_MAP_PTR_INIT(my_function.op_array.run_time_cache, ptr);
169-
ptr = (char*)ptr + sizeof(void*);
170-
ZEND_MAP_PTR_SET(my_function.op_array.run_time_cache, ptr);
171169
memset(ptr, 0, my_function.op_array.cache_size);
172170
}
173171
}
@@ -487,6 +485,7 @@ static void zend_closure_free_storage(zend_object *object) /* {{{ */
487485
/* We don't own the static variables of fake closures. */
488486
if (!(closure->func.op_array.fn_flags & ZEND_ACC_FAKE_CLOSURE)) {
489487
zend_destroy_static_vars(&closure->func.op_array);
488+
closure->func.op_array.static_variables = NULL;
490489
}
491490
destroy_op_array(&closure->func.op_array);
492491
} else if (closure->func.type == ZEND_INTERNAL_FUNCTION) {
@@ -696,7 +695,15 @@ static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_en
696695
zend_array_dup(closure->func.op_array.static_variables);
697696
}
698697
ZEND_MAP_PTR_INIT(closure->func.op_array.static_variables_ptr,
699-
&closure->func.op_array.static_variables);
698+
closure->func.op_array.static_variables);
699+
} else if (func->op_array.static_variables) {
700+
HashTable *ht = ZEND_MAP_PTR_GET(func->op_array.static_variables_ptr);
701+
702+
if (!ht) {
703+
ht = zend_array_dup(func->op_array.static_variables);
704+
ZEND_MAP_PTR_SET(func->op_array.static_variables_ptr, ht);
705+
}
706+
ZEND_MAP_PTR_INIT(closure->func.op_array.static_variables_ptr, ht);
700707
}
701708

702709
/* Runtime cache is scope-dependent, so we cannot reuse it if the scope changed */
@@ -722,10 +729,8 @@ static void zend_create_closure_ex(zval *res, zend_function *func, zend_class_en
722729
} else {
723730
/* Otherwise, we use a non-shared runtime cache */
724731
closure->func.op_array.fn_flags |= ZEND_ACC_HEAP_RT_CACHE;
725-
ptr = emalloc(sizeof(void*) + func->op_array.cache_size);
732+
ptr = emalloc(func->op_array.cache_size);
726733
ZEND_MAP_PTR_INIT(closure->func.op_array.run_time_cache, ptr);
727-
ptr = (char*)ptr + sizeof(void*);
728-
ZEND_MAP_PTR_SET(closure->func.op_array.run_time_cache, ptr);
729734
}
730735
memset(ptr, 0, func->op_array.cache_size);
731736
}

Zend/zend_compile.c

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,15 +1037,6 @@ static uint32_t zend_add_try_element(uint32_t try_op) /* {{{ */
10371037
}
10381038
/* }}} */
10391039

1040-
void zend_init_static_variables_map_ptr(zend_op_array *op_array)
1041-
{
1042-
if (op_array->static_variables) {
1043-
ZEND_MAP_PTR_INIT(op_array->static_variables_ptr,
1044-
zend_arena_alloc(&CG(arena), sizeof(HashTable *)));
1045-
ZEND_MAP_PTR_SET(op_array->static_variables_ptr, NULL);
1046-
}
1047-
}
1048-
10491040
ZEND_API void function_add_ref(zend_function *function) /* {{{ */
10501041
{
10511042
if (function->type == ZEND_USER_FUNCTION) {
@@ -1054,10 +1045,8 @@ ZEND_API void function_add_ref(zend_function *function) /* {{{ */
10541045
(*op_array->refcount)++;
10551046
}
10561047

1057-
ZEND_MAP_PTR_INIT(op_array->run_time_cache, zend_arena_alloc(&CG(arena), sizeof(void *)));
1058-
ZEND_MAP_PTR_SET(op_array->run_time_cache, NULL);
1059-
1060-
zend_init_static_variables_map_ptr(op_array);
1048+
ZEND_MAP_PTR_INIT(op_array->run_time_cache, NULL);
1049+
ZEND_MAP_PTR_INIT(op_array->static_variables_ptr, NULL);
10611050
}
10621051

10631052
if (function->common.function_name) {
@@ -7093,9 +7082,6 @@ static void zend_compile_func_decl(znode *result, zend_ast *ast, bool toplevel)
70937082
op_array->fn_flags |= ZEND_ACC_PRELOADED;
70947083
}
70957084

7096-
ZEND_MAP_PTR_INIT(op_array->run_time_cache, zend_arena_alloc(&CG(arena), sizeof(void *)));
7097-
ZEND_MAP_PTR_SET(op_array->run_time_cache, NULL);
7098-
70997085
op_array->fn_flags |= (orig_op_array->fn_flags & ZEND_ACC_STRICT_TYPES);
71007086
op_array->fn_flags |= decl->flags;
71017087
op_array->line_start = decl->start_lineno;
@@ -7181,7 +7167,6 @@ static void zend_compile_func_decl(znode *result, zend_ast *ast, bool toplevel)
71817167
zend_do_extended_stmt();
71827168
zend_emit_final_return(0);
71837169

7184-
zend_init_static_variables_map_ptr(op_array);
71857170
pass_two(CG(active_op_array));
71867171
zend_oparray_context_end(&orig_oparray_context);
71877172

Zend/zend_compile.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -801,7 +801,6 @@ ZEND_API zend_result do_bind_class(zval *lcname, zend_string *lc_parent_name);
801801
void zend_resolve_goto_label(zend_op_array *op_array, zend_op *opline);
802802

803803
ZEND_API void function_add_ref(zend_function *function);
804-
void zend_init_static_variables_map_ptr(zend_op_array *op_array);
805804
zend_string *zval_make_interned_string(zval *zv);
806805

807806
#define INITIAL_OP_ARRAY_SIZE 64

Zend/zend_execute.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3779,10 +3779,8 @@ static zend_always_inline void i_init_code_execute_data(zend_execute_data *execu
37793779
void *ptr;
37803780

37813781
ZEND_ASSERT(op_array->fn_flags & ZEND_ACC_HEAP_RT_CACHE);
3782-
ptr = emalloc(op_array->cache_size + sizeof(void*));
3782+
ptr = emalloc(op_array->cache_size);
37833783
ZEND_MAP_PTR_INIT(op_array->run_time_cache, ptr);
3784-
ptr = (char*)ptr + sizeof(void*);
3785-
ZEND_MAP_PTR_SET(op_array->run_time_cache, ptr);
37863784
memset(ptr, 0, op_array->cache_size);
37873785
}
37883786
EX(run_time_cache) = RUN_TIME_CACHE(op_array);

Zend/zend_inheritance.c

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1525,10 +1525,6 @@ ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *par
15251525
if (ce->type == ZEND_INTERNAL_CLASS &&
15261526
ce->info.internal.module->type == MODULE_PERSISTENT) {
15271527
ZEND_MAP_PTR_NEW(ce->static_members_table);
1528-
} else {
1529-
ZEND_MAP_PTR_INIT(ce->static_members_table,
1530-
zend_arena_alloc(&CG(arena), sizeof(zval *)));
1531-
ZEND_MAP_PTR_SET(ce->static_members_table, NULL);
15321528
}
15331529
}
15341530
}
@@ -2615,30 +2611,18 @@ static zend_class_entry *zend_lazy_class_load(zend_class_entry *pce)
26152611
end = p + ce->function_table.nNumUsed;
26162612
for (; p != end; p++) {
26172613
zend_op_array *op_array, *new_op_array;
2618-
void ***run_time_cache_ptr;
2619-
size_t alloc_size;
26202614

26212615
op_array = Z_PTR(p->val);
26222616
ZEND_ASSERT(op_array->type == ZEND_USER_FUNCTION);
26232617
ZEND_ASSERT(op_array->scope == pce);
26242618
ZEND_ASSERT(op_array->prototype == NULL);
2625-
alloc_size = sizeof(zend_op_array) + sizeof(void *);
2626-
if (op_array->static_variables) {
2627-
alloc_size += sizeof(HashTable *);
2628-
}
2629-
new_op_array = zend_arena_alloc(&CG(arena), alloc_size);
2619+
new_op_array = zend_arena_alloc(&CG(arena), sizeof(zend_op_array));
26302620
Z_PTR(p->val) = new_op_array;
26312621
memcpy(new_op_array, op_array, sizeof(zend_op_array));
2632-
run_time_cache_ptr = (void***)(new_op_array + 1);
2633-
*run_time_cache_ptr = NULL;
26342622
new_op_array->fn_flags &= ~ZEND_ACC_IMMUTABLE;
26352623
new_op_array->scope = ce;
2636-
ZEND_MAP_PTR_INIT(new_op_array->run_time_cache, run_time_cache_ptr);
2637-
if (op_array->static_variables) {
2638-
HashTable **static_variables_ptr = (HashTable **) (run_time_cache_ptr + 1);
2639-
*static_variables_ptr = NULL;
2640-
ZEND_MAP_PTR_INIT(new_op_array->static_variables_ptr, static_variables_ptr);
2641-
}
2624+
ZEND_MAP_PTR_INIT(new_op_array->run_time_cache, NULL);
2625+
ZEND_MAP_PTR_INIT(new_op_array->static_variables_ptr, NULL);
26422626

26432627
zend_update_inherited_handler(constructor);
26442628
zend_update_inherited_handler(destructor);
@@ -2667,8 +2651,7 @@ static zend_class_entry *zend_lazy_class_load(zend_class_entry *pce)
26672651
ZVAL_COPY_VALUE(dst, src);
26682652
}
26692653
}
2670-
ZEND_MAP_PTR_INIT(ce->static_members_table, zend_arena_alloc(&CG(arena), sizeof(zval *)));
2671-
ZEND_MAP_PTR_SET(ce->static_members_table, NULL);
2654+
ZEND_MAP_PTR_INIT(ce->static_members_table, NULL);
26722655

26732656
/* properties_info */
26742657
if (!(HT_FLAGS(&ce->properties_info) & HASH_FLAG_UNINITIALIZED)) {

Zend/zend_language_scanner.l

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,6 @@ static zend_op_array *zend_compile(int type)
620620
zend_emit_final_return(type == ZEND_USER_FUNCTION);
621621
op_array->line_start = 1;
622622
op_array->line_end = last_lineno;
623-
zend_init_static_variables_map_ptr(op_array);
624623
pass_two(op_array);
625624
zend_oparray_context_end(&original_oparray_context);
626625
zend_file_context_end(&original_file_context);

Zend/zend_map_ptr.h

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,12 @@
2424
#define ZEND_MAP_PTR_KIND_PTR 0
2525
#define ZEND_MAP_PTR_KIND_PTR_OR_OFFSET 1
2626

27-
//#if defined(ZTS) || defined(TSRM_WIN32)
28-
# define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
29-
//#else
30-
//# define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR
31-
//#endif
27+
#define ZEND_MAP_PTR_KIND ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
3228

3329
#define ZEND_MAP_PTR(ptr) \
3430
ptr ## __ptr
3531
#define ZEND_MAP_PTR_DEF(type, name) \
36-
type * ZEND_MAP_PTR(name)
32+
type ZEND_MAP_PTR(name)
3733
#define ZEND_MAP_PTR_OFFSET2PTR(offset) \
3834
((void**)((char*)CG(map_ptr_base) + offset))
3935
#define ZEND_MAP_PTR_PTR2OFFSET(ptr) \
@@ -45,37 +41,23 @@
4541
ZEND_MAP_PTR(ptr) = zend_map_ptr_new(); \
4642
} while (0)
4743

48-
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
49-
# define ZEND_MAP_PTR_NEW_OFFSET() \
50-
((uint32_t)(uintptr_t)ZEND_MAP_PTR_PTR2OFFSET(zend_map_ptr_new()))
51-
# define ZEND_MAP_PTR_GET(ptr) \
52-
(*(ZEND_MAP_PTR(ptr)))
53-
# define ZEND_MAP_PTR_GET_IMM(ptr) \
54-
ZEND_MAP_PTR_GET(ptr)
55-
# define ZEND_MAP_PTR_SET(ptr, val) do { \
56-
(*(ZEND_MAP_PTR(ptr))) = (val); \
57-
} while (0)
58-
# define ZEND_MAP_PTR_SET_IMM(ptr, val) \
59-
ZEND_MAP_PTR_SET(ptr, val)
60-
# define ZEND_MAP_PTR_BIASED_BASE(real_base) \
61-
(real_base)
62-
#elif ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
44+
#if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR_OR_OFFSET
6345
# define ZEND_MAP_PTR_NEW_OFFSET() \
6446
((uint32_t)(uintptr_t)zend_map_ptr_new())
6547
# define ZEND_MAP_PTR_IS_OFFSET(ptr) \
6648
(((uintptr_t)ZEND_MAP_PTR(ptr)) & 1L)
6749
# define ZEND_MAP_PTR_GET(ptr) \
68-
(*(ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
69-
ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)) : \
70-
((void**)(ZEND_MAP_PTR(ptr)))))
50+
((ZEND_MAP_PTR_IS_OFFSET(ptr) ? \
51+
ZEND_MAP_PTR_GET_IMM(ptr) : \
52+
((void*)(ZEND_MAP_PTR(ptr)))))
7153
# define ZEND_MAP_PTR_GET_IMM(ptr) \
7254
(*ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)))
7355
# define ZEND_MAP_PTR_SET(ptr, val) do { \
74-
void **__p = (void**)(ZEND_MAP_PTR(ptr)); \
7556
if (ZEND_MAP_PTR_IS_OFFSET(ptr)) { \
76-
__p = ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)); \
57+
ZEND_MAP_PTR_SET_IMM(ptr, val); \
58+
} else { \
59+
ZEND_MAP_PTR_INIT(ptr, val); \
7760
} \
78-
*__p = (val); \
7961
} while (0)
8062
# define ZEND_MAP_PTR_SET_IMM(ptr, val) do { \
8163
void **__p = ZEND_MAP_PTR_OFFSET2PTR((uintptr_t)ZEND_MAP_PTR(ptr)); \

Zend/zend_object_handlers.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1236,7 +1236,7 @@ ZEND_API zend_function *zend_get_call_trampoline_func(zend_class_entry *ce, zend
12361236
func->fn_flags |= ZEND_ACC_STATIC;
12371237
}
12381238
func->opcodes = &EG(call_trampoline_op);
1239-
ZEND_MAP_PTR_INIT(func->run_time_cache, (void***)&dummy);
1239+
ZEND_MAP_PTR_INIT(func->run_time_cache, (void**)dummy);
12401240
func->scope = fbc->common.scope;
12411241
/* reserve space for arguments, local and temporary variables */
12421242
func->T = (fbc->type == ZEND_USER_FUNCTION)? MAX(fbc->op_array.last_var + fbc->op_array.T, 2) : 2;

ext/opcache/jit/zend_jit_arm64.dasc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9244,8 +9244,8 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend
92449244
| TST_64_WITH_ONE REG2
92459245
| beq >1
92469246
| MEM_LOAD_OP_ZTS add, ldr, REG2, compiler_globals, map_ptr_base, REG1, TMP1
9247-
|1:
92489247
| ldr REG2, [REG2]
9248+
|1:
92499249
}
92509250
} else {
92519251
if (func) {
@@ -9255,8 +9255,8 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend
92559255
| TST_64_WITH_ONE REG2
92569256
| beq >1
92579257
| MEM_LOAD_OP_ZTS add, ldr, REG2, compiler_globals, map_ptr_base, REG1, TMP1
9258-
|1:
92599258
| ldr REG2, [REG2]
9259+
|1:
92609260
}
92619261
#else
92629262
# error "Unknown ZEND_MAP_PTR_KIND"

ext/opcache/jit/zend_jit_helpers.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ static ZEND_COLD void zend_jit_illegal_string_offset(zval *offset)
3737
zend_type_error("Cannot access offset of type %s on string", zend_zval_type_name(offset));
3838
}
3939

40-
static zend_never_inline zend_function* ZEND_FASTCALL _zend_jit_init_func_run_time_cache(const zend_op_array *op_array) /* {{{ */
40+
static zend_never_inline zend_function* ZEND_FASTCALL _zend_jit_init_func_run_time_cache(zend_op_array *op_array) /* {{{ */
4141
{
4242
void **run_time_cache;
4343

0 commit comments

Comments
 (0)