@@ -1526,9 +1526,11 @@ ZEND_API void zend_do_inheritance_ex(zend_class_entry *ce, zend_class_entry *par
15261526 ce -> info .internal .module -> type == MODULE_PERSISTENT ) {
15271527 ZEND_MAP_PTR_NEW (ce -> static_members_table );
15281528 } else {
1529+ #if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
15291530 ZEND_MAP_PTR_INIT (ce -> static_members_table ,
15301531 zend_arena_alloc (& CG (arena ), sizeof (zval * )));
15311532 ZEND_MAP_PTR_SET (ce -> static_members_table , NULL );
1533+ #endif
15321534 }
15331535 }
15341536 }
@@ -2610,30 +2612,43 @@ static zend_class_entry *zend_lazy_class_load(zend_class_entry *pce)
26102612 end = p + ce -> function_table .nNumUsed ;
26112613 for (; p != end ; p ++ ) {
26122614 zend_op_array * op_array , * new_op_array ;
2615+ #if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
26132616 void * * * run_time_cache_ptr ;
2617+ #endif
26142618 size_t alloc_size ;
26152619
26162620 op_array = Z_PTR (p -> val );
26172621 ZEND_ASSERT (op_array -> type == ZEND_USER_FUNCTION );
26182622 ZEND_ASSERT (op_array -> scope == pce );
26192623 ZEND_ASSERT (op_array -> prototype == NULL );
2624+ #if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
26202625 alloc_size = sizeof (zend_op_array ) + sizeof (void * );
26212626 if (op_array -> static_variables ) {
26222627 alloc_size += sizeof (HashTable * );
26232628 }
2629+ #else
2630+ alloc_size = sizeof (zend_op_array );
2631+ #endif
26242632 new_op_array = zend_arena_alloc (& CG (arena ), alloc_size );
26252633 Z_PTR (p -> val ) = new_op_array ;
26262634 memcpy (new_op_array , op_array , sizeof (zend_op_array ));
2627- run_time_cache_ptr = (void * * * )(new_op_array + 1 );
2628- * run_time_cache_ptr = NULL ;
26292635 new_op_array -> fn_flags &= ~ZEND_ACC_IMMUTABLE ;
26302636 new_op_array -> scope = ce ;
2637+ #if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
2638+ run_time_cache_ptr = (void * * * )(new_op_array + 1 );
2639+ * run_time_cache_ptr = NULL ;
26312640 ZEND_MAP_PTR_INIT (new_op_array -> run_time_cache , run_time_cache_ptr );
26322641 if (op_array -> static_variables ) {
26332642 HashTable * * static_variables_ptr = (HashTable * * ) (run_time_cache_ptr + 1 );
26342643 * static_variables_ptr = NULL ;
26352644 ZEND_MAP_PTR_INIT (new_op_array -> static_variables_ptr , static_variables_ptr );
26362645 }
2646+ #else
2647+ ZEND_MAP_PTR_INIT (new_op_array -> run_time_cache , NULL );
2648+ if (op_array -> static_variables ) {
2649+ ZEND_MAP_PTR_INIT (new_op_array -> static_variables_ptr , NULL );
2650+ }
2651+ #endif
26372652
26382653 zend_update_inherited_handler (constructor );
26392654 zend_update_inherited_handler (destructor );
@@ -2662,8 +2677,12 @@ static zend_class_entry *zend_lazy_class_load(zend_class_entry *pce)
26622677 ZVAL_COPY_VALUE (dst , src );
26632678 }
26642679 }
2680+ #if ZEND_MAP_PTR_KIND == ZEND_MAP_PTR_KIND_PTR
26652681 ZEND_MAP_PTR_INIT (ce -> static_members_table , zend_arena_alloc (& CG (arena ), sizeof (zval * )));
26662682 ZEND_MAP_PTR_SET (ce -> static_members_table , NULL );
2683+ #else
2684+ ZEND_MAP_PTR_INIT (ce -> static_members_table , NULL );
2685+ #endif
26672686
26682687 /* properties_info */
26692688 if (!(HT_FLAGS (& ce -> properties_info ) & HASH_FLAG_UNINITIALIZED )) {
0 commit comments