File tree Expand file tree Collapse file tree 3 files changed +33
-1
lines changed Expand file tree Collapse file tree 3 files changed +33
-1
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,10 @@ PHP NEWS
21
21
- MbString:
22
22
. Fixed bug GH-18901 (integer overflow mb_split). (nielsdos)
23
23
24
+ - Opcache:
25
+ . Fixed bug GH-18639 (Internal class aliases can break preloading + JIT).
26
+ (nielsdos)
27
+
24
28
- Standard:
25
29
. Fix misleading errors in printf(). (nielsdos)
26
30
Original file line number Diff line number Diff line change @@ -3302,8 +3302,16 @@ int zend_jit_script(zend_script *script)
3302
3302
|| JIT_G (trigger ) == ZEND_JIT_ON_HOT_TRACE ) {
3303
3303
zend_class_entry * ce ;
3304
3304
zend_op_array * op_array ;
3305
+ zval * zv ;
3306
+
3307
+ ZEND_HASH_MAP_FOREACH_VAL (& script -> class_table , zv ) {
3308
+ if (Z_TYPE_P (zv ) == IS_ALIAS_PTR ) {
3309
+ continue ;
3310
+ }
3311
+
3312
+ ce = Z_PTR_P (zv );
3313
+ ZEND_ASSERT (ce -> type == ZEND_USER_CLASS );
3305
3314
3306
- ZEND_HASH_MAP_FOREACH_PTR (& script -> class_table , ce ) {
3307
3315
ZEND_HASH_MAP_FOREACH_PTR (& ce -> function_table , op_array ) {
3308
3316
if (!ZEND_FUNC_INFO (op_array )) {
3309
3317
void * jit_extension = zend_shared_alloc_get_xlat_entry (op_array -> opcodes );
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ GH-18639 (Internal class aliases can break preloading + JIT)
3
+ --INI--
4
+ opcache.enable=1
5
+ opcache.enable_cli=1
6
+ opcache.jit=1255
7
+ opcache.jit_buffer_size=16M
8
+ opcache.preload={PWD}/preload_gh18567.inc
9
+ --EXTENSIONS--
10
+ opcache
11
+ --SKIPIF--
12
+ <?php
13
+ if (PHP_OS_FAMILY == 'Windows ' ) die ('skip Preloading is not supported on Windows ' );
14
+ ?>
15
+ --FILE--
16
+ <?php
17
+ echo "ok \n" ;
18
+ ?>
19
+ --EXPECT--
20
+ ok
You can’t perform that action at this time.
0 commit comments