Skip to content

Commit 3d2a6d9

Browse files
committed
Merge branch 'PHP-7.4'
* PHP-7.4: Also, use ZEND_ACC_PRELOADED for classes
2 parents faf2414 + 8cdd215 commit 3d2a6d9

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

Zend/zend_compile.h

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,9 @@ typedef struct _zend_oparray_context {
227227
/* Top-level class or function declaration | | | */
228228
#define ZEND_ACC_TOP_LEVEL (1 << 9) /* X | X | | */
229229
/* | | | */
230+
/* op_array or class is preloaded | | | */
231+
#define ZEND_ACC_PRELOADED (1 << 10) /* X | X | | */
232+
/* | | | */
230233
/* Class Flags (unused: 16...) | | | */
231234
/* =========== | | | */
232235
/* | | | */
@@ -244,80 +247,77 @@ typedef struct _zend_oparray_context {
244247
/* | | | */
245248
/* Class has magic methods __get/__set/__unset/ | | | */
246249
/* __isset that use guards | | | */
247-
#define ZEND_ACC_USE_GUARDS (1 << 10) /* X | | | */
250+
#define ZEND_ACC_USE_GUARDS (1 << 11) /* X | | | */
248251
/* | | | */
249252
/* Class constants updated | | | */
250-
#define ZEND_ACC_CONSTANTS_UPDATED (1 << 11) /* X | | | */
253+
#define ZEND_ACC_CONSTANTS_UPDATED (1 << 12) /* X | | | */
251254
/* | | | */
252255
/* Class extends another class | | | */
253-
#define ZEND_ACC_INHERITED (1 << 12) /* X | | | */
256+
#define ZEND_ACC_INHERITED (1 << 13) /* X | | | */
254257
/* | | | */
255258
/* Class implements interface(s) | | | */
256-
#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 13) /* X | | | */
259+
#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 14) /* X | | | */
257260
/* | | | */
258261
/* Class uses trait(s) | | | */
259-
#define ZEND_ACC_IMPLEMENT_TRAITS (1 << 14) /* X | | | */
262+
#define ZEND_ACC_IMPLEMENT_TRAITS (1 << 15) /* X | | | */
260263
/* | | | */
261264
/* User class has methods with static variables | | | */
262-
#define ZEND_HAS_STATIC_IN_METHODS (1 << 15) /* X | | | */
265+
#define ZEND_HAS_STATIC_IN_METHODS (1 << 16) /* X | | | */
263266
/* | | | */
264267
/* Whether all property types are resolved to CEs | | | */
265-
#define ZEND_ACC_PROPERTY_TYPES_RESOLVED (1 << 16) /* X | | | */
268+
#define ZEND_ACC_PROPERTY_TYPES_RESOLVED (1 << 17) /* X | | | */
266269
/* | | | */
267270
/* Children must reuse parent get_iterator() | | | */
268-
#define ZEND_ACC_REUSE_GET_ITERATOR (1 << 17) /* X | | | */
271+
#define ZEND_ACC_REUSE_GET_ITERATOR (1 << 18) /* X | | | */
269272
/* | | | */
270273
/* Function Flags (unused: 28...30) | | | */
271274
/* ============== | | | */
272275
/* | | | */
273276
/* deprecation flag | | | */
274-
#define ZEND_ACC_DEPRECATED (1 << 10) /* | X | | */
277+
#define ZEND_ACC_DEPRECATED (1 << 11) /* | X | | */
275278
/* | | | */
276279
/* Function returning by reference | | | */
277-
#define ZEND_ACC_RETURN_REFERENCE (1 << 11) /* | X | | */
280+
#define ZEND_ACC_RETURN_REFERENCE (1 << 12) /* | X | | */
278281
/* | | | */
279282
/* Function has a return type | | | */
280-
#define ZEND_ACC_HAS_RETURN_TYPE (1 << 12) /* | X | | */
283+
#define ZEND_ACC_HAS_RETURN_TYPE (1 << 13) /* | X | | */
281284
/* | | | */
282285
/* Function with variable number of arguments | | | */
283-
#define ZEND_ACC_VARIADIC (1 << 13) /* | X | | */
286+
#define ZEND_ACC_VARIADIC (1 << 14) /* | X | | */
284287
/* | | | */
285288
/* op_array has finally blocks (user only) | | | */
286-
#define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 14) /* | X | | */
289+
#define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 15) /* | X | | */
287290
/* | | | */
288291
/* "main" op_array with | | | */
289292
/* ZEND_DECLARE_INHERITED_CLASS_DELAYED opcodes | | | */
290-
#define ZEND_ACC_EARLY_BINDING (1 << 15) /* | X | | */
293+
#define ZEND_ACC_EARLY_BINDING (1 << 16) /* | X | | */
291294
/* | | | */
292295
/* call through user function trampoline. e.g. | | | */
293296
/* __call, __callstatic | | | */
294-
#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 17) /* | X | | */
297+
#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 18) /* | X | | */
295298
/* | | | */
296299
/* disable inline caching | | | */
297-
#define ZEND_ACC_NEVER_CACHE (1 << 18) /* | X | | */
300+
#define ZEND_ACC_NEVER_CACHE (1 << 19) /* | X | | */
298301
/* | | | */
299302
/* Closure related | | | */
300-
#define ZEND_ACC_CLOSURE (1 << 19) /* | X | | */
301-
#define ZEND_ACC_FAKE_CLOSURE (1 << 20) /* | X | | */
303+
#define ZEND_ACC_CLOSURE (1 << 20) /* | X | | */
304+
#define ZEND_ACC_FAKE_CLOSURE (1 << 21) /* | X | | */
302305
/* | | | */
303306
/* run_time_cache allocated on heap (user only) | | | */
304-
#define ZEND_ACC_HEAP_RT_CACHE (1 << 21) /* | X | | */
307+
#define ZEND_ACC_HEAP_RT_CACHE (1 << 22) /* | X | | */
305308
/* | | | */
306309
/* method flag used by Closure::__invoke() | | | */
307-
#define ZEND_ACC_USER_ARG_INFO (1 << 22) /* | X | | */
310+
#define ZEND_ACC_USER_ARG_INFO (1 << 23) /* | X | | */
308311
/* | | | */
309-
#define ZEND_ACC_GENERATOR (1 << 23) /* | X | | */
312+
#define ZEND_ACC_GENERATOR (1 << 24) /* | X | | */
310313
/* | | | */
311-
#define ZEND_ACC_DONE_PASS_TWO (1 << 24) /* | X | | */
314+
#define ZEND_ACC_DONE_PASS_TWO (1 << 25) /* | X | | */
312315
/* | | | */
313316
/* internal function is allocated at arena (int only) | | | */
314-
#define ZEND_ACC_ARENA_ALLOCATED (1 << 25) /* | X | | */
317+
#define ZEND_ACC_ARENA_ALLOCATED (1 << 26) /* | X | | */
315318
/* | | | */
316319
/* op_array is a clone of trait method | | | */
317-
#define ZEND_ACC_TRAIT_CLONE (1 << 26) /* | X | | */
318-
/* | | | */
319-
/* op_array is preloaded | | | */
320-
#define ZEND_ACC_PRELOADED (1 << 27) /* | X | | */
320+
#define ZEND_ACC_TRAIT_CLONE (1 << 27) /* | X | | */
321321
/* | | | */
322322
/* functions is a constructor | | | */
323323
#define ZEND_ACC_CTOR (1 << 28) /* | X | | */

ext/opcache/ZendAccelerator.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3225,6 +3225,7 @@ static void preload_move_user_classes(HashTable *src, HashTable *dst)
32253225
if (copy) {
32263226
zend_function *function;
32273227

3228+
ce->ce_flags |= ZEND_ACC_PRELOADED;
32283229
_zend_hash_append_ptr(dst, p->key, ce);
32293230
ZEND_HASH_FOREACH_PTR(&ce->function_table, function) {
32303231
if (EXPECTED(function->type == ZEND_USER_FUNCTION)) {

0 commit comments

Comments
 (0)