Skip to content

Commit 8cdd215

Browse files
committed
Also, use ZEND_ACC_PRELOADED for classes
1 parent ce65d23 commit 8cdd215

File tree

2 files changed

+29
-28
lines changed

2 files changed

+29
-28
lines changed

Zend/zend_compile.h

Lines changed: 28 additions & 28 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,84 +247,81 @@ 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
/* method flag (bc only), any method that has this | | | */
293296
/* flag can be used statically and non statically. | | | */
294-
#define ZEND_ACC_ALLOW_STATIC (1 << 16) /* | X | | */
297+
#define ZEND_ACC_ALLOW_STATIC (1 << 17) /* | X | | */
295298
/* | | | */
296299
/* call through user function trampoline. e.g. | | | */
297300
/* __call, __callstatic | | | */
298-
#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 17) /* | X | | */
301+
#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 18) /* | X | | */
299302
/* | | | */
300303
/* disable inline caching | | | */
301-
#define ZEND_ACC_NEVER_CACHE (1 << 18) /* | X | | */
304+
#define ZEND_ACC_NEVER_CACHE (1 << 19) /* | X | | */
302305
/* | | | */
303306
/* Closure related | | | */
304-
#define ZEND_ACC_CLOSURE (1 << 19) /* | X | | */
305-
#define ZEND_ACC_FAKE_CLOSURE (1 << 20) /* | X | | */
307+
#define ZEND_ACC_CLOSURE (1 << 20) /* | X | | */
308+
#define ZEND_ACC_FAKE_CLOSURE (1 << 21) /* | X | | */
306309
/* | | | */
307310
/* run_time_cache allocated on heap (user only) | | | */
308-
#define ZEND_ACC_HEAP_RT_CACHE (1 << 21) /* | X | | */
311+
#define ZEND_ACC_HEAP_RT_CACHE (1 << 22) /* | X | | */
309312
/* | | | */
310313
/* method flag used by Closure::__invoke() | | | */
311-
#define ZEND_ACC_USER_ARG_INFO (1 << 22) /* | X | | */
314+
#define ZEND_ACC_USER_ARG_INFO (1 << 23) /* | X | | */
312315
/* | | | */
313-
#define ZEND_ACC_GENERATOR (1 << 23) /* | X | | */
316+
#define ZEND_ACC_GENERATOR (1 << 24) /* | X | | */
314317
/* | | | */
315-
#define ZEND_ACC_DONE_PASS_TWO (1 << 24) /* | X | | */
318+
#define ZEND_ACC_DONE_PASS_TWO (1 << 25) /* | X | | */
316319
/* | | | */
317320
/* internal function is allocated at arena (int only) | | | */
318-
#define ZEND_ACC_ARENA_ALLOCATED (1 << 25) /* | X | | */
321+
#define ZEND_ACC_ARENA_ALLOCATED (1 << 26) /* | X | | */
319322
/* | | | */
320323
/* op_array is a clone of trait method | | | */
321-
#define ZEND_ACC_TRAIT_CLONE (1 << 26) /* | X | | */
322-
/* | | | */
323-
/* op_array is preloaded | | | */
324-
#define ZEND_ACC_PRELOADED (1 << 27) /* | X | | */
324+
#define ZEND_ACC_TRAIT_CLONE (1 << 27) /* | X | | */
325325
/* | | | */
326326
/* functions is a constructor | | | */
327327
#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
@@ -3171,6 +3171,7 @@ static void preload_move_user_classes(HashTable *src, HashTable *dst)
31713171
if (copy) {
31723172
zend_function *function;
31733173

3174+
ce->ce_flags |= ZEND_ACC_PRELOADED;
31743175
_zend_hash_append_ptr(dst, p->key, ce);
31753176
ZEND_HASH_FOREACH_PTR(&ce->function_table, function) {
31763177
if (EXPECTED(function->type == ZEND_USER_FUNCTION)) {

0 commit comments

Comments
 (0)