@@ -603,10 +603,10 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
603
603
} else {
604
604
uint32_t op1_flags = ZEND_VM_OP1_FLAGS (flags );
605
605
if (ZEND_VM_OP_JMP_ADDR == (op1_flags & ZEND_VM_OP_MASK )) {
606
- if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
607
- fprintf (stderr , " %04u" , (uint32_t )(OP_JMP_ADDR (opline , opline -> op1 ) - op_array -> opcodes ));
608
- } else if (b ) {
606
+ if (b ) {
609
607
fprintf (stderr , " BB%d" , b -> successors [n ++ ]);
608
+ } else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
609
+ fprintf (stderr , " %04u" , (uint32_t )(OP_JMP_ADDR (opline , opline -> op1 ) - op_array -> opcodes ));
610
610
} else {
611
611
fprintf (stderr , " L%u" , (uint32_t )(OP_JMP_ADDR (opline , opline -> op1 ) - op_array -> opcodes ));
612
612
}
@@ -628,10 +628,10 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
628
628
} else {
629
629
fprintf (stderr , " " ZEND_LONG_FMT ":" , num_key );
630
630
}
631
- if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
632
- fprintf (stderr , " %04u," , (uint32_t )ZEND_OFFSET_TO_OPLINE_NUM (op_array , opline , Z_LVAL_P (zv )));
633
- } else if (b ) {
631
+ if (b ) {
634
632
fprintf (stderr , " BB%d," , b -> successors [n ++ ]);
633
+ } else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
634
+ fprintf (stderr , " %04u," , (uint32_t )ZEND_OFFSET_TO_OPLINE_NUM (op_array , opline , Z_LVAL_P (zv )));
635
635
} else {
636
636
fprintf (stderr , " L%u," , (uint32_t )ZEND_OFFSET_TO_OPLINE_NUM (op_array , opline , Z_LVAL_P (zv )));
637
637
}
@@ -665,10 +665,10 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
665
665
uint32_t op2_flags = ZEND_VM_OP2_FLAGS (flags );
666
666
if (ZEND_VM_OP_JMP_ADDR == (op2_flags & ZEND_VM_OP_MASK )) {
667
667
if (opline -> opcode != ZEND_CATCH || !(opline -> extended_value & ZEND_LAST_CATCH )) {
668
- if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
669
- fprintf (stderr , " %04u" , (uint32_t )(OP_JMP_ADDR (opline , opline -> op2 ) - op_array -> opcodes ));
670
- } else if (b ) {
668
+ if (b ) {
671
669
fprintf (stderr , " BB%d" , b -> successors [n ++ ]);
670
+ } else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
671
+ fprintf (stderr , " %04u" , (uint32_t )(OP_JMP_ADDR (opline , opline -> op2 ) - op_array -> opcodes ));
672
672
} else {
673
673
fprintf (stderr , " L%u" , (uint32_t )(OP_JMP_ADDR (opline , opline -> op2 ) - op_array -> opcodes ));
674
674
}
@@ -679,10 +679,10 @@ void zend_dump_op(const zend_op_array *op_array, const zend_basic_block *b, cons
679
679
}
680
680
681
681
if (ZEND_VM_EXT_JMP_ADDR == (flags & ZEND_VM_EXT_MASK )) {
682
- if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
683
- fprintf (stderr , " %04u" , (uint32_t )ZEND_OFFSET_TO_OPLINE_NUM (op_array , opline , opline -> extended_value ));
684
- } else if (b ) {
682
+ if (b ) {
685
683
fprintf (stderr , " BB%d" , b -> successors [n ++ ]);
684
+ } else if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
685
+ fprintf (stderr , " %04u" , (uint32_t )ZEND_OFFSET_TO_OPLINE_NUM (op_array , opline , opline -> extended_value ));
686
686
} else {
687
687
fprintf (stderr , " L%u" , (uint32_t )ZEND_OFFSET_TO_OPLINE_NUM (op_array , opline , opline -> extended_value ));
688
688
}
@@ -725,11 +725,14 @@ static void zend_dump_op_line(const zend_op_array *op_array, const zend_basic_bl
725
725
zend_ssa_op * ssa_op = NULL ;
726
726
727
727
if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
728
- len = fprintf (stderr , "%04u:" , (uint32_t )(opline - op_array -> opcodes ));
728
+ len = fprintf (stderr , "%04u" , (uint32_t )(opline - op_array -> opcodes ));
729
+ fprintf (stderr , "%*c" , 5 - len , ' ' );
729
730
} else if (!b ) {
730
731
len = fprintf (stderr , "L%u (%u):" , (uint32_t )(opline - op_array -> opcodes ), opline -> lineno );
732
+ fprintf (stderr , "%*c" , 12 - len , ' ' );
733
+ } else {
734
+ fprintf (stderr , "%*c" , 12 - len , ' ' );
731
735
}
732
- fprintf (stderr , "%*c" , 12 - len , ' ' );
733
736
734
737
if (dump_flags & ZEND_DUMP_SSA ) {
735
738
ssa = (const zend_ssa * )data ;
@@ -747,6 +750,9 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
747
750
zend_basic_block * b = cfg -> blocks + n ;
748
751
749
752
fprintf (stderr , "BB%d:" , n );
753
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
754
+ fprintf (stderr , "\n ;" );
755
+ }
750
756
if (b -> flags & ZEND_BB_START ) {
751
757
fprintf (stderr , " start" );
752
758
}
@@ -800,6 +806,9 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
800
806
int * p = cfg -> predecessors + b -> predecessor_offset ;
801
807
int * end = p + b -> predecessors_count ;
802
808
809
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
810
+ fprintf (stderr , " " );
811
+ }
803
812
fprintf (stderr , " ; from=(BB%d" , * p );
804
813
for (p ++ ; p < end ; p ++ ) {
805
814
fprintf (stderr , ", BB%d" , * p );
@@ -809,6 +818,9 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
809
818
810
819
if (b -> successors_count > 0 ) {
811
820
int s ;
821
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
822
+ fprintf (stderr , " " );
823
+ }
812
824
fprintf (stderr , " ; to=(BB%d" , b -> successors [0 ]);
813
825
for (s = 1 ; s < b -> successors_count ; s ++ ) {
814
826
fprintf (stderr , ", BB%d" , b -> successors [s ]);
@@ -817,16 +829,28 @@ static void zend_dump_block_info(const zend_cfg *cfg, int n, uint32_t dump_flags
817
829
}
818
830
819
831
if (b -> idom >= 0 ) {
832
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
833
+ fprintf (stderr , " " );
834
+ }
820
835
fprintf (stderr , " ; idom=BB%d\n" , b -> idom );
821
836
}
822
837
if (b -> level >= 0 ) {
838
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
839
+ fprintf (stderr , " " );
840
+ }
823
841
fprintf (stderr , " ; level=%d\n" , b -> level );
824
842
}
825
843
if (b -> loop_header >= 0 ) {
844
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
845
+ fprintf (stderr , " " );
846
+ }
826
847
fprintf (stderr , " ; loop_header=%d\n" , b -> loop_header );
827
848
}
828
849
if (b -> children >= 0 ) {
829
850
int j = b -> children ;
851
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
852
+ fprintf (stderr , " " );
853
+ }
830
854
fprintf (stderr , " ; children=(BB%d" , j );
831
855
j = cfg -> blocks [j ].next_child ;
832
856
while (j >= 0 ) {
@@ -846,7 +870,11 @@ static void zend_dump_block_header(const zend_cfg *cfg, const zend_op_array *op_
846
870
do {
847
871
int j ;
848
872
849
- fprintf (stderr , " " );
873
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
874
+ fprintf (stderr , " " );
875
+ } else {
876
+ fprintf (stderr , " " );
877
+ }
850
878
zend_dump_ssa_var (op_array , ssa , p -> ssa_var , 0 , p -> var , dump_flags );
851
879
if (p -> pi < 0 ) {
852
880
fprintf (stderr , " = Phi(" );
@@ -917,7 +945,11 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
917
945
918
946
fprintf (stderr , "\n" );
919
947
zend_dump_op_array_name (op_array );
920
- fprintf (stderr , ": ; (lines=%d, args=%d" ,
948
+ fprintf (stderr , ":" );
949
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
950
+ fprintf (stderr , "\n " );
951
+ }
952
+ fprintf (stderr , " ; (lines=%d, args=%d" ,
921
953
op_array -> last ,
922
954
op_array -> num_args );
923
955
if (func_info && func_info -> num_args >= 0 ) {
@@ -976,14 +1008,23 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
976
1008
}
977
1009
fprintf (stderr , ")\n" );
978
1010
if (msg ) {
1011
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
1012
+ fprintf (stderr , " " );
1013
+ }
979
1014
fprintf (stderr , " ; (%s)\n" , msg );
980
1015
}
1016
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
1017
+ fprintf (stderr , " " );
1018
+ }
981
1019
fprintf (stderr , " ; %s:%u-%u\n" , op_array -> filename -> val , op_array -> line_start , op_array -> line_end );
982
1020
983
1021
if (func_info && func_info -> num_args > 0 ) {
984
1022
uint32_t j ;
985
1023
986
1024
for (j = 0 ; j < MIN (op_array -> num_args , func_info -> num_args ); j ++ ) {
1025
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
1026
+ fprintf (stderr , " " );
1027
+ }
987
1028
fprintf (stderr , " ; arg %d " , j );
988
1029
zend_dump_type_info (func_info -> arg_info [j ].info .type , func_info -> arg_info [j ].info .ce , func_info -> arg_info [j ].info .is_instanceof , dump_flags );
989
1030
zend_dump_range (& func_info -> arg_info [j ].info .range );
@@ -992,6 +1033,9 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
992
1033
}
993
1034
994
1035
if (func_info ) {
1036
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
1037
+ fprintf (stderr , " " );
1038
+ }
995
1039
fprintf (stderr , " ; return " );
996
1040
zend_dump_type_info (func_info -> return_info .type , func_info -> return_info .ce , func_info -> return_info .is_instanceof , dump_flags );
997
1041
zend_dump_range (& func_info -> return_info .range );
@@ -1000,6 +1044,9 @@ void zend_dump_op_array(const zend_op_array *op_array, uint32_t dump_flags, cons
1000
1044
1001
1045
if (ssa && ssa -> var_info ) {
1002
1046
for (i = 0 ; i < op_array -> last_var ; i ++ ) {
1047
+ if (dump_flags & ZEND_DUMP_NUMERIC_OPLINES ) {
1048
+ fprintf (stderr , " " );
1049
+ }
1003
1050
fprintf (stderr , " ; " );
1004
1051
zend_dump_ssa_var (op_array , ssa , i , IS_CV , i , dump_flags );
1005
1052
fprintf (stderr , "\n" );
0 commit comments