File tree 5 files changed +63
-3
lines changed
5 files changed +63
-3
lines changed Original file line number Diff line number Diff line change @@ -929,6 +929,7 @@ stats: native [
929
929
/profile {Returns profiler object}
930
930
/timer {High resolution time difference from start}
931
931
/evals {Number of values evaluated by interpreter}
932
+ /dump-series pool-id [integer! ] {Dump all series in pool pool-id, -1 for all pools}
932
933
]
933
934
934
935
do-codec: native [
Original file line number Diff line number Diff line change 27
27
**
28
28
***********************************************************************/
29
29
30
+ #include <stdio.h>
30
31
#include "sys-core.h"
31
32
32
33
49
50
SERIES_REST (series ),
50
51
SERIES_FLAGS (series )
51
52
);
52
- if (SERIES_WIDE (series ) == sizeof (REBVAL ))
53
+ if (SERIES_WIDE (series ) == sizeof (REBVAL )) {
53
54
Dump_Values (BLK_HEAD (series ), SERIES_TAIL (series ));
54
- else
55
+ } else
55
56
Dump_Bytes (series -> data , (SERIES_TAIL (series )+ 1 ) * SERIES_WIDE (series ));
56
57
}
57
58
122
123
123
124
cp = buf ;
124
125
for (l = 0 ; l < count ; l ++ ) {
126
+ REBVAL * val = (REBVAL * )bp ;
125
127
cp = Form_Hex_Pad (cp , l , 8 );
126
128
127
129
* cp ++ = ':' ;
137
139
cp = Form_Hex_Pad (cp , * bp ++ , 8 );
138
140
* cp ++ = ' ' ;
139
141
}
142
+ n = 0 ;
143
+ if (IS_WORD ((REBVAL * )val ) || IS_GET_WORD ((REBVAL * )val ) || IS_SET_WORD ((REBVAL * )val )) {
144
+ char * name = Get_Word_Name ((REBVAL * )val );
145
+ n = snprintf (cp , sizeof (buf ) - (cp - buf ), " (%s)" , name );
146
+ }
140
147
141
- * cp = 0 ;
148
+ * ( cp + n ) = 0 ;
142
149
Debug_Str (buf );
143
150
cp = buf ;
144
151
}
Original file line number Diff line number Diff line change @@ -746,6 +746,7 @@ static void Mark_Series(REBSER *series, REBCNT depth);
746
746
}
747
747
748
748
749
+
749
750
/***********************************************************************
750
751
**
751
752
*/ void Save_Series (REBSER * series )
Original file line number Diff line number Diff line change @@ -704,6 +704,51 @@ const REBPOOLSPEC Mem_Pool_Spec[MAX_POOLS] =
704
704
}
705
705
}
706
706
707
+ /***********************************************************************
708
+ **
709
+ */ void Dump_Series_In_Pool (int pool_id )
710
+ /*
711
+ ** Dump all series in the pool @pool_id, -1 for all pools
712
+ **
713
+ ***********************************************************************/
714
+ {
715
+ REBSEG * seg ;
716
+ REBSER * series ;
717
+ REBCNT count ;
718
+ REBCNT n = 0 ;
719
+
720
+ for (seg = Mem_Pools [SERIES_POOL ].segs ; seg ; seg = seg -> next ) {
721
+ series = (REBSER * ) (seg + 1 );
722
+ for (count = Mem_Pools [SERIES_POOL ].units ; count > 0 ; count -- ) {
723
+ SKIP_WALL (series );
724
+ if (!SERIES_FREED (series )) {
725
+ if (pool_id < 0 || FIND_POOL (SERIES_TOTAL (series )) == pool_id ) {
726
+ Debug_Fmt (
727
+ Str_Dump [0 ], //"%s Series %x %s: Wide: %2d Size: %6d - Bias: %d Tail: %d Rest: %d Flags: %x"
728
+ "Dump" ,
729
+ series ,
730
+ (SERIES_LABEL (series ) ? SERIES_LABEL (series ) : "-" ),
731
+ SERIES_WIDE (series ),
732
+ SERIES_TOTAL (series ),
733
+ SERIES_BIAS (series ),
734
+ SERIES_TAIL (series ),
735
+ SERIES_REST (series ),
736
+ SERIES_FLAGS (series )
737
+ );
738
+ //Dump_Series(series, "Dump");
739
+ if (SERIES_WIDE (series ) == sizeof (REBVAL )) {
740
+ Debug_Values (BLK_HEAD (series ), SERIES_TAIL (series ), 1024 ); /* FIXME limit */
741
+ } else {
742
+ Dump_Bytes (series -> data , (SERIES_TAIL (series )+ 1 ) * SERIES_WIDE (series ));
743
+ }
744
+ }
745
+ }
746
+ series ++ ;
747
+ SKIP_WALL (series );
748
+ }
749
+ }
750
+ }
751
+
707
752
708
753
/***********************************************************************
709
754
**
Original file line number Diff line number Diff line change 162
162
return R_RET ;
163
163
}
164
164
165
+ if (D_REF (5 )) {
166
+ REBVAL * pool_id = D_ARG (6 );
167
+ Dump_Series_In_Pool (VAL_INT32 (pool_id ));
168
+ return R_NONE ;
169
+ }
170
+
165
171
if (D_REF (1 )) flags = 3 ;
166
172
n = Inspect_Series (flags );
167
173
You can’t perform that action at this time.
0 commit comments