From d77b74a1f3edafa9dce4b91a23b5bab091fc5c89 Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 26 Dec 2015 23:43:33 +0100 Subject: [PATCH] Use ZEND_HASH_FOREACH --- ext/opcache/Optimizer/zend_optimizer.c | 49 ++++++++------------------ 1 file changed, 15 insertions(+), 34 deletions(-) diff --git a/ext/opcache/Optimizer/zend_optimizer.c b/ext/opcache/Optimizer/zend_optimizer.c index 7ae7213ed9..246a69b36d 100644 --- a/ext/opcache/Optimizer/zend_optimizer.c +++ b/ext/opcache/Optimizer/zend_optimizer.c @@ -748,10 +748,9 @@ static void zend_adjust_fcall_stack_size_graph(zend_op_array *op_array) int zend_optimize_script(zend_script *script, zend_long optimization_level, zend_long debug_level) { - uint idx, j; - Bucket *p, *q; zend_class_entry *ce; zend_op_array *op_array; + zend_string *name; zend_optimizer_ctx ctx; zend_call_graph call_graph; @@ -763,33 +762,24 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend zend_optimize_op_array(&script->main_op_array, &ctx); - for (idx = 0; idx < script->function_table.nNumUsed; idx++) { - p = script->function_table.arData + idx; - if (Z_TYPE(p->val) == IS_UNDEF) continue; - op_array = (zend_op_array*)Z_PTR(p->val); + ZEND_HASH_FOREACH_PTR(&script->function_table, op_array) { zend_optimize_op_array(op_array, &ctx); - } + } ZEND_HASH_FOREACH_END(); - for (idx = 0; idx < script->class_table.nNumUsed; idx++) { - p = script->class_table.arData + idx; - if (Z_TYPE(p->val) == IS_UNDEF) continue; - ce = (zend_class_entry*)Z_PTR(p->val); - for (j = 0; j < ce->function_table.nNumUsed; j++) { - q = ce->function_table.arData + j; - if (Z_TYPE(q->val) == IS_UNDEF) continue; - op_array = (zend_op_array*)Z_PTR(q->val); + 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) { 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, q->key)) != NULL) { + 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(); #if HAVE_DFA_PASS if ((ZEND_OPTIMIZER_PASS_6 & optimization_level) && @@ -844,33 +834,24 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend if (ZEND_OPTIMIZER_PASS_12 & optimization_level) { zend_adjust_fcall_stack_size(&script->main_op_array, &ctx); - for (idx = 0; idx < script->function_table.nNumUsed; idx++) { - p = script->function_table.arData + idx; - if (Z_TYPE(p->val) == IS_UNDEF) continue; - op_array = (zend_op_array*)Z_PTR(p->val); + ZEND_HASH_FOREACH_PTR(&script->function_table, op_array) { zend_adjust_fcall_stack_size(op_array, &ctx); - } + } ZEND_HASH_FOREACH_END(); - for (idx = 0; idx < script->class_table.nNumUsed; idx++) { - p = script->class_table.arData + idx; - if (Z_TYPE(p->val) == IS_UNDEF) continue; - ce = (zend_class_entry*)Z_PTR(p->val); - for (j = 0; j < ce->function_table.nNumUsed; j++) { - q = ce->function_table.arData + j; - if (Z_TYPE(q->val) == IS_UNDEF) continue; - op_array = (zend_op_array*)Z_PTR(q->val); + 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) { 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, q->key)) != NULL) { + 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(); } if (ctx.constants) { -- 2.50.1