@@ -748,10 +748,9 @@ static void zend_adjust_fcall_stack_size_graph(zend_op_array *op_array)
748
748
749
749
int zend_optimize_script (zend_script * script , zend_long optimization_level , zend_long debug_level )
750
750
{
751
- uint idx , j ;
752
- Bucket * p , * q ;
753
751
zend_class_entry * ce ;
754
752
zend_op_array * op_array ;
753
+ zend_string * name ;
755
754
zend_optimizer_ctx ctx ;
756
755
zend_call_graph call_graph ;
757
756
@@ -763,33 +762,24 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
763
762
764
763
zend_optimize_op_array (& script -> main_op_array , & ctx );
765
764
766
- for (idx = 0 ; idx < script -> function_table .nNumUsed ; idx ++ ) {
767
- p = script -> function_table .arData + idx ;
768
- if (Z_TYPE (p -> val ) == IS_UNDEF ) continue ;
769
- op_array = (zend_op_array * )Z_PTR (p -> val );
765
+ ZEND_HASH_FOREACH_PTR (& script -> function_table , op_array ) {
770
766
zend_optimize_op_array (op_array , & ctx );
771
- }
767
+ } ZEND_HASH_FOREACH_END ();
772
768
773
- for (idx = 0 ; idx < script -> class_table .nNumUsed ; idx ++ ) {
774
- p = script -> class_table .arData + idx ;
775
- if (Z_TYPE (p -> val ) == IS_UNDEF ) continue ;
776
- ce = (zend_class_entry * )Z_PTR (p -> val );
777
- for (j = 0 ; j < ce -> function_table .nNumUsed ; j ++ ) {
778
- q = ce -> function_table .arData + j ;
779
- if (Z_TYPE (q -> val ) == IS_UNDEF ) continue ;
780
- op_array = (zend_op_array * )Z_PTR (q -> val );
769
+ ZEND_HASH_FOREACH_PTR (& script -> class_table , ce ) {
770
+ ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
781
771
if (op_array -> scope == ce ) {
782
772
zend_optimize_op_array (op_array , & ctx );
783
773
} else if (op_array -> type == ZEND_USER_FUNCTION ) {
784
774
zend_op_array * orig_op_array ;
785
- if ((orig_op_array = zend_hash_find_ptr (& op_array -> scope -> function_table , q -> key )) != NULL ) {
775
+ if ((orig_op_array = zend_hash_find_ptr (& op_array -> scope -> function_table , name )) != NULL ) {
786
776
HashTable * ht = op_array -> static_variables ;
787
777
* op_array = * orig_op_array ;
788
778
op_array -> static_variables = ht ;
789
779
}
790
780
}
791
- }
792
- }
781
+ } ZEND_HASH_FOREACH_END ();
782
+ } ZEND_HASH_FOREACH_END ();
793
783
794
784
#if HAVE_DFA_PASS
795
785
if ((ZEND_OPTIMIZER_PASS_6 & optimization_level ) &&
@@ -844,33 +834,24 @@ int zend_optimize_script(zend_script *script, zend_long optimization_level, zend
844
834
if (ZEND_OPTIMIZER_PASS_12 & optimization_level ) {
845
835
zend_adjust_fcall_stack_size (& script -> main_op_array , & ctx );
846
836
847
- for (idx = 0 ; idx < script -> function_table .nNumUsed ; idx ++ ) {
848
- p = script -> function_table .arData + idx ;
849
- if (Z_TYPE (p -> val ) == IS_UNDEF ) continue ;
850
- op_array = (zend_op_array * )Z_PTR (p -> val );
837
+ ZEND_HASH_FOREACH_PTR (& script -> function_table , op_array ) {
851
838
zend_adjust_fcall_stack_size (op_array , & ctx );
852
- }
839
+ } ZEND_HASH_FOREACH_END ();
853
840
854
- for (idx = 0 ; idx < script -> class_table .nNumUsed ; idx ++ ) {
855
- p = script -> class_table .arData + idx ;
856
- if (Z_TYPE (p -> val ) == IS_UNDEF ) continue ;
857
- ce = (zend_class_entry * )Z_PTR (p -> val );
858
- for (j = 0 ; j < ce -> function_table .nNumUsed ; j ++ ) {
859
- q = ce -> function_table .arData + j ;
860
- if (Z_TYPE (q -> val ) == IS_UNDEF ) continue ;
861
- op_array = (zend_op_array * )Z_PTR (q -> val );
841
+ ZEND_HASH_FOREACH_PTR (& script -> class_table , ce ) {
842
+ ZEND_HASH_FOREACH_STR_KEY_PTR (& ce -> function_table , name , op_array ) {
862
843
if (op_array -> scope == ce ) {
863
844
zend_adjust_fcall_stack_size (op_array , & ctx );
864
845
} else if (op_array -> type == ZEND_USER_FUNCTION ) {
865
846
zend_op_array * orig_op_array ;
866
- if ((orig_op_array = zend_hash_find_ptr (& op_array -> scope -> function_table , q -> key )) != NULL ) {
847
+ if ((orig_op_array = zend_hash_find_ptr (& op_array -> scope -> function_table , name )) != NULL ) {
867
848
HashTable * ht = op_array -> static_variables ;
868
849
* op_array = * orig_op_array ;
869
850
op_array -> static_variables = ht ;
870
851
}
871
852
}
872
- }
873
- }
853
+ } ZEND_HASH_FOREACH_END ();
854
+ } ZEND_HASH_FOREACH_END ();
874
855
}
875
856
876
857
if (ctx .constants ) {
0 commit comments