ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
if (op_array->scope == ce) {
zend_optimize_op_array(op_array, &ctx);
- } else if (op_array->type == ZEND_USER_FUNCTION) {
- zend_op_array *orig_op_array;
- if ((orig_op_array = zend_hash_find_ptr(&op_array->scope->function_table, name)) != NULL) {
- HashTable *ht = op_array->static_variables;
- *op_array = *orig_op_array;
- op_array->static_variables = ht;
- }
}
} ZEND_HASH_FOREACH_END();
} ZEND_HASH_FOREACH_END();
ZEND_SET_FUNC_INFO(call_graph.op_arrays[i], NULL);
}
- ZEND_HASH_FOREACH_PTR(&script->class_table, ce) {
- ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
- if (op_array->scope != ce && op_array->type == ZEND_USER_FUNCTION) {
- zend_op_array *orig_op_array;
- if ((orig_op_array = zend_hash_find_ptr(&op_array->scope->function_table, name)) != NULL) {
- HashTable *ht = op_array->static_variables;
- *op_array = *orig_op_array;
- op_array->static_variables = ht;
- }
- }
- } ZEND_HASH_FOREACH_END();
- } ZEND_HASH_FOREACH_END();
-
zend_arena_release(&ctx.arena, checkpoint);
} else
#endif
ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
if (op_array->scope == ce) {
zend_adjust_fcall_stack_size(op_array, &ctx);
- } else if (op_array->type == ZEND_USER_FUNCTION) {
- zend_op_array *orig_op_array;
- if ((orig_op_array = zend_hash_find_ptr(&op_array->scope->function_table, name)) != NULL) {
- HashTable *ht = op_array->static_variables;
- *op_array = *orig_op_array;
- op_array->static_variables = ht;
- }
}
} ZEND_HASH_FOREACH_END();
} ZEND_HASH_FOREACH_END();
}
+ ZEND_HASH_FOREACH_PTR(&script->class_table, ce) {
+ ZEND_HASH_FOREACH_STR_KEY_PTR(&ce->function_table, name, op_array) {
+ if (op_array->scope != ce && op_array->type == ZEND_USER_FUNCTION) {
+ zend_op_array *orig_op_array =
+ zend_hash_find_ptr(&op_array->scope->function_table, name);
+
+ ZEND_ASSERT(orig_op_array != NULL);
+ if (orig_op_array != op_array) {
+ HashTable *ht = op_array->static_variables;
+
+ *op_array = *orig_op_array;
+ op_array->static_variables = ht;
+ }
+ }
+ } ZEND_HASH_FOREACH_END();
+ } ZEND_HASH_FOREACH_END();
+
if ((debug_level & ZEND_DUMP_AFTER_OPTIMIZER) &&
(ZEND_OPTIMIZER_PASS_7 & optimization_level)) {
zend_dump_op_array(&script->main_op_array, ZEND_DUMP_RT_CONSTANTS, "after optimizer", NULL);