void zend_free_compiled_variables(zend_execute_data *execute_data TSRMLS_DC);
#define CACHED_PTR(num) \
- EG(active_op_array)->run_time_cache[(num)]
+ EX(run_time_cache)[(num)]
#define CACHE_PTR(num, ptr) do { \
- EG(active_op_array)->run_time_cache[(num)] = (ptr); \
+ EX(run_time_cache)[(num)] = (ptr); \
} while (0)
#define CACHED_POLYMORPHIC_PTR(num, ce) \
- ((EG(active_op_array)->run_time_cache[(num)] == (ce)) ? \
- EG(active_op_array)->run_time_cache[(num) + 1] : \
+ ((EX(run_time_cache)[(num)] == (ce)) ? \
+ EX(run_time_cache)[(num) + 1] : \
NULL)
#define CACHE_POLYMORPHIC_PTR(num, ce, ptr) do { \
- EG(active_op_array)->run_time_cache[(num)] = (ce); \
- EG(active_op_array)->run_time_cache[(num) + 1] = (ptr); \
+ EX(run_time_cache)[(num)] = (ce); \
+ EX(run_time_cache)[(num) + 1] = (ptr); \
+ } while (0)
+
+#define CACHED_PTR_EX(op_array, num) \
+ (op_array)->run_time_cache[(num)]
+
+#define CACHE_PTR_EX(op_array, num, ptr) do { \
+ (op_array)->run_time_cache[(num)] = (ptr); \
+ } while (0)
+
+#define CACHED_POLYMORPHIC_PTR_EX(op_array, num, ce) \
+ (((op_array)->run_time_cache[(num)] == (ce)) ? \
+ (op_array)->run_time_cache[(num) + 1] : \
+ NULL)
+
+#define CACHE_POLYMORPHIC_PTR_EX(op_array, num, ce, ptr) do { \
+ (op_array)->run_time_cache[(num)] = (ce); \
+ (op_array)->run_time_cache[(num) + 1] = (ptr); \
} while (0)
END_EXTERN_C()
zend_property_info *scope_property_info;
zend_bool denied_access = 0;
- if (cache_slot != -1 && (property_info = CACHED_POLYMORPHIC_PTR(cache_slot, ce)) != NULL) {
+ if (cache_slot != -1 && (property_info = CACHED_POLYMORPHIC_PTR_EX(EG(active_op_array), cache_slot, ce)) != NULL) {
return property_info;
}
zend_error(E_STRICT, "Accessing static property %s::$%s as non static", ce->name->val, member->val);
}
if (cache_slot != -1) {
- CACHE_POLYMORPHIC_PTR(cache_slot, ce, property_info);
+ CACHE_POLYMORPHIC_PTR_EX(EG(active_op_array), cache_slot, ce, property_info);
}
return property_info;
}
&& (scope_property_info = zend_hash_find_ptr(&EG(scope)->properties_info, member)) != NULL
&& scope_property_info->flags & ZEND_ACC_PRIVATE) {
if (cache_slot != -1) {
- CACHE_POLYMORPHIC_PTR(cache_slot, ce, scope_property_info);
+ CACHE_POLYMORPHIC_PTR_EX(EG(active_op_array), cache_slot, ce, scope_property_info);
}
return scope_property_info;
} else if (property_info) {
} else {
/* fall through, return property_info... */
if (cache_slot != -1) {
- CACHE_POLYMORPHIC_PTR(cache_slot, ce, property_info);
+ CACHE_POLYMORPHIC_PTR_EX(EG(active_op_array), cache_slot, ce, property_info);
}
}
} else {
zend_property_info *property_info;
if (UNEXPECTED(cache_slot == -1) ||
- (property_info = CACHED_POLYMORPHIC_PTR(cache_slot, ce)) == NULL) {
+ (property_info = CACHED_POLYMORPHIC_PTR_EX(EG(active_op_array), cache_slot, ce)) == NULL) {
if (UNEXPECTED((property_info = zend_hash_find_ptr(&ce->properties_info, property_name)) == NULL)) {
if (!silent) {
zend_update_class_constants(ce TSRMLS_CC);
if (EXPECTED(cache_slot != -1)) {
- CACHE_POLYMORPHIC_PTR(cache_slot, ce, property_info);
+ CACHE_POLYMORPHIC_PTR_EX(EG(active_op_array), cache_slot, ce, property_info);
}
}