diff options
-rw-r--r-- | Zend/zend_compile.h | 54 | ||||
-rw-r--r-- | ext/opcache/ZendAccelerator.c | 1 |
2 files changed, 28 insertions, 27 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 02f52151a8..56f21d1423 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -227,6 +227,9 @@ typedef struct _zend_oparray_context { /* Top-level class or function declaration | | | */ #define ZEND_ACC_TOP_LEVEL (1 << 9) /* X | X | | */ /* | | | */ +/* op_array or class is preloaded | | | */ +#define ZEND_ACC_PRELOADED (1 << 10) /* X | X | | */ +/* | | | */ /* Class Flags (unused: 16...) | | | */ /* =========== | | | */ /* | | | */ @@ -244,80 +247,77 @@ typedef struct _zend_oparray_context { /* | | | */ /* Class has magic methods __get/__set/__unset/ | | | */ /* __isset that use guards | | | */ -#define ZEND_ACC_USE_GUARDS (1 << 10) /* X | | | */ +#define ZEND_ACC_USE_GUARDS (1 << 11) /* X | | | */ /* | | | */ /* Class constants updated | | | */ -#define ZEND_ACC_CONSTANTS_UPDATED (1 << 11) /* X | | | */ +#define ZEND_ACC_CONSTANTS_UPDATED (1 << 12) /* X | | | */ /* | | | */ /* Class extends another class | | | */ -#define ZEND_ACC_INHERITED (1 << 12) /* X | | | */ +#define ZEND_ACC_INHERITED (1 << 13) /* X | | | */ /* | | | */ /* Class implements interface(s) | | | */ -#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 13) /* X | | | */ +#define ZEND_ACC_IMPLEMENT_INTERFACES (1 << 14) /* X | | | */ /* | | | */ /* Class uses trait(s) | | | */ -#define ZEND_ACC_IMPLEMENT_TRAITS (1 << 14) /* X | | | */ +#define ZEND_ACC_IMPLEMENT_TRAITS (1 << 15) /* X | | | */ /* | | | */ /* User class has methods with static variables | | | */ -#define ZEND_HAS_STATIC_IN_METHODS (1 << 15) /* X | | | */ +#define ZEND_HAS_STATIC_IN_METHODS (1 << 16) /* X | | | */ /* | | | */ /* Whether all property types are resolved to CEs | | | */ -#define ZEND_ACC_PROPERTY_TYPES_RESOLVED (1 << 16) /* X | | | */ +#define ZEND_ACC_PROPERTY_TYPES_RESOLVED (1 << 17) /* X | | | */ /* | | | */ /* Children must reuse parent get_iterator() | | | */ -#define ZEND_ACC_REUSE_GET_ITERATOR (1 << 17) /* X | | | */ +#define ZEND_ACC_REUSE_GET_ITERATOR (1 << 18) /* X | | | */ /* | | | */ /* Function Flags (unused: 28...30) | | | */ /* ============== | | | */ /* | | | */ /* deprecation flag | | | */ -#define ZEND_ACC_DEPRECATED (1 << 10) /* | X | | */ +#define ZEND_ACC_DEPRECATED (1 << 11) /* | X | | */ /* | | | */ /* Function returning by reference | | | */ -#define ZEND_ACC_RETURN_REFERENCE (1 << 11) /* | X | | */ +#define ZEND_ACC_RETURN_REFERENCE (1 << 12) /* | X | | */ /* | | | */ /* Function has a return type | | | */ -#define ZEND_ACC_HAS_RETURN_TYPE (1 << 12) /* | X | | */ +#define ZEND_ACC_HAS_RETURN_TYPE (1 << 13) /* | X | | */ /* | | | */ /* Function with variable number of arguments | | | */ -#define ZEND_ACC_VARIADIC (1 << 13) /* | X | | */ +#define ZEND_ACC_VARIADIC (1 << 14) /* | X | | */ /* | | | */ /* op_array has finally blocks (user only) | | | */ -#define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 14) /* | X | | */ +#define ZEND_ACC_HAS_FINALLY_BLOCK (1 << 15) /* | X | | */ /* | | | */ /* "main" op_array with | | | */ /* ZEND_DECLARE_INHERITED_CLASS_DELAYED opcodes | | | */ -#define ZEND_ACC_EARLY_BINDING (1 << 15) /* | X | | */ +#define ZEND_ACC_EARLY_BINDING (1 << 16) /* | X | | */ /* | | | */ /* call through user function trampoline. e.g. | | | */ /* __call, __callstatic | | | */ -#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 17) /* | X | | */ +#define ZEND_ACC_CALL_VIA_TRAMPOLINE (1 << 18) /* | X | | */ /* | | | */ /* disable inline caching | | | */ -#define ZEND_ACC_NEVER_CACHE (1 << 18) /* | X | | */ +#define ZEND_ACC_NEVER_CACHE (1 << 19) /* | X | | */ /* | | | */ /* Closure related | | | */ -#define ZEND_ACC_CLOSURE (1 << 19) /* | X | | */ -#define ZEND_ACC_FAKE_CLOSURE (1 << 20) /* | X | | */ +#define ZEND_ACC_CLOSURE (1 << 20) /* | X | | */ +#define ZEND_ACC_FAKE_CLOSURE (1 << 21) /* | X | | */ /* | | | */ /* run_time_cache allocated on heap (user only) | | | */ -#define ZEND_ACC_HEAP_RT_CACHE (1 << 21) /* | X | | */ +#define ZEND_ACC_HEAP_RT_CACHE (1 << 22) /* | X | | */ /* | | | */ /* method flag used by Closure::__invoke() | | | */ -#define ZEND_ACC_USER_ARG_INFO (1 << 22) /* | X | | */ +#define ZEND_ACC_USER_ARG_INFO (1 << 23) /* | X | | */ /* | | | */ -#define ZEND_ACC_GENERATOR (1 << 23) /* | X | | */ +#define ZEND_ACC_GENERATOR (1 << 24) /* | X | | */ /* | | | */ -#define ZEND_ACC_DONE_PASS_TWO (1 << 24) /* | X | | */ +#define ZEND_ACC_DONE_PASS_TWO (1 << 25) /* | X | | */ /* | | | */ /* internal function is allocated at arena (int only) | | | */ -#define ZEND_ACC_ARENA_ALLOCATED (1 << 25) /* | X | | */ +#define ZEND_ACC_ARENA_ALLOCATED (1 << 26) /* | X | | */ /* | | | */ /* op_array is a clone of trait method | | | */ -#define ZEND_ACC_TRAIT_CLONE (1 << 26) /* | X | | */ -/* | | | */ -/* op_array is preloaded | | | */ -#define ZEND_ACC_PRELOADED (1 << 27) /* | X | | */ +#define ZEND_ACC_TRAIT_CLONE (1 << 27) /* | X | | */ /* | | | */ /* functions is a constructor | | | */ #define ZEND_ACC_CTOR (1 << 28) /* | X | | */ diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 113371872f..284a1b7875 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -3225,6 +3225,7 @@ static void preload_move_user_classes(HashTable *src, HashTable *dst) if (copy) { zend_function *function; + ce->ce_flags |= ZEND_ACC_PRELOADED; _zend_hash_append_ptr(dst, p->key, ce); ZEND_HASH_FOREACH_PTR(&ce->function_table, function) { if (EXPECTED(function->type == ZEND_USER_FUNCTION)) { |