Re: more B::Concise stuff (PATCH - updated)
[p5sagit/p5-mst-13.2.git] / ext / B / t / optree_sort.t
CommitLineData
724aa791 1#!perl
2
3BEGIN {
4 chdir 't';
5 @INC = ('../lib', '../ext/B/t');
6 require './test.pl';
7}
8use OptreeCheck;
2ce64696 9use Config;
724aa791 10plan tests => 11;
11
2ce64696 12SKIP: {
13skip "no perlio in this build", 11 unless $Config::Config{useperlio};
14
724aa791 15pass("SORT OPTIMIZATION");
16
17checkOptree ( name => 'sub {sort @a}',
18 code => sub {sort @a},
19 bcopts => '-exec',
20 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
21# 1 <;> nextstate(main 424 optree_sort.t:14) v
22# 2 <0> pushmark s
cc02ea56 23# 3 <#> gv[*a] s
24# 4 <1> rv2av[t2] lK/1
724aa791 25# 5 <@> sort K
26# 6 <1> leavesub[1 ref] K/REFC,1
27EOT_EOT
28# 1 <;> nextstate(main 424 optree_sort.t:14) v
29# 2 <0> pushmark s
30# 3 <$> gv(*a) s
31# 4 <1> rv2av[t1] lK/1
32# 5 <@> sort K
33# 6 <1> leavesub[1 ref] K/REFC,1
34EONT_EONT
35
36checkOptree ( name => 'sort @a',
37 prog => 'sort @a',
38 bcopts => '-exec',
39 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
401 <0> enter
412 <;> nextstate(main 1 -e:1) v
423 <0> pushmark s
434 <#> gv[*a] s
445 <1> rv2av[t2] lK/1
456 <@> sort vK
467 <@> leave[1 ref] vKP/REFC
47EOT_EOT
48# 1 <0> enter
49# 2 <;> nextstate(main 1 -e:1) v
50# 3 <0> pushmark s
51# 4 <$> gv(*a) s
52# 5 <1> rv2av[t1] lK/1
53# 6 <@> sort vK
54# 7 <@> leave[1 ref] vKP/REFC
55EONT_EONT
56
57checkOptree ( name => 'sub {@a = sort @a}',
58 code => sub {@a = sort @a},
59 bcopts => '-exec',
60 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 611 <;> nextstate(main -438 optree.t:244) v
622 <0> pushmark s
633 <0> pushmark s
644 <#> gv[*a] s
cc02ea56 655 <1> rv2av[t4] lK/1
724aa791 666 <@> sort lK
677 <0> pushmark s
688 <#> gv[*a] s
699 <1> rv2av[t2] lKRM*/1
70a <2> aassign[t\d+] KS/COMMON
71b <1> leavesub[1 ref] K/REFC,1
72EOT_EOT
73# 1 <;> nextstate(main 65 optree.t:311) v
74# 2 <0> pushmark s
75# 3 <0> pushmark s
76# 4 <$> gv(*a) s
77# 5 <1> rv2av[t2] lK/1
78# 6 <@> sort lK
79# 7 <0> pushmark s
80# 8 <$> gv(*a) s
81# 9 <1> rv2av[t1] lKRM*/1
82# a <2> aassign[t3] KS/COMMON
83# b <1> leavesub[1 ref] K/REFC,1
84EONT_EONT
85
86checkOptree ( name => '@a = sort @a',
87 prog => '@a = sort @a',
88 bcopts => '-exec',
89 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
901 <0> enter
912 <;> nextstate(main 1 -e:1) v
923 <0> pushmark s
934 <0> pushmark s
945 <#> gv[*a] s
956 <1> rv2av[t4] lKRM*/1
967 <@> sort lK/INPLACE
978 <@> leave[1 ref] vKP/REFC
98EOT_EOT
99# 1 <0> enter
100# 2 <;> nextstate(main 1 -e:1) v
101# 3 <0> pushmark s
102# 4 <0> pushmark s
103# 5 <$> gv(*a) s
104# 6 <1> rv2av[t2] lKRM*/1
105# 7 <@> sort lK/INPLACE
106# 8 <@> leave[1 ref] vKP/REFC
107EONT_EONT
108
109checkOptree ( name => 'sub {@a = sort @a; reverse @a}',
110 code => sub {@a = sort @a; reverse @a},
111 bcopts => '-exec',
112 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1131 <;> nextstate(main -438 optree.t:286) v
1142 <0> pushmark s
1153 <0> pushmark s
1164 <#> gv[*a] s
1175 <1> rv2av[t4] lKRM*/1
1186 <@> sort lK/INPLACE
1197 <;> nextstate(main -438 optree.t:288) v
1208 <0> pushmark s
1219 <#> gv[*a] s
122a <1> rv2av[t7] lK/1
123b <@> reverse[t8] K/1
124c <1> leavesub[1 ref] K/REFC,1
125EOT_EOT
126# 1 <;> nextstate(main 66 optree.t:345) v
127# 2 <0> pushmark s
128# 3 <0> pushmark s
129# 4 <$> gv(*a) s
130# 5 <1> rv2av[t2] lKRM*/1
131# 6 <@> sort lK/INPLACE
132# 7 <;> nextstate(main 66 optree.t:346) v
133# 8 <0> pushmark s
134# 9 <$> gv(*a) s
135# a <1> rv2av[t4] lK/1
136# b <@> reverse[t5] K/1
137# c <1> leavesub[1 ref] K/REFC,1
138EONT_EONT
139
140checkOptree ( name => '@a = sort @a; reverse @a',
141 prog => '@a = sort @a; reverse @a',
142 bcopts => '-exec',
143 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
1441 <0> enter
1452 <;> nextstate(main 1 -e:1) v
1463 <0> pushmark s
1474 <0> pushmark s
1485 <#> gv[*a] s
1496 <1> rv2av[t4] lKRM*/1
1507 <@> sort lK/INPLACE
1518 <;> nextstate(main 1 -e:1) v
1529 <0> pushmark s
153a <#> gv[*a] s
154b <1> rv2av[t7] lK/1
155c <@> reverse[t8] vK/1
156d <@> leave[1 ref] vKP/REFC
157EOT_EOT
158# 1 <0> enter
159# 2 <;> nextstate(main 1 -e:1) v
160# 3 <0> pushmark s
161# 4 <0> pushmark s
162# 5 <$> gv(*a) s
163# 6 <1> rv2av[t2] lKRM*/1
164# 7 <@> sort lK/INPLACE
165# 8 <;> nextstate(main 1 -e:1) v
166# 9 <0> pushmark s
167# a <$> gv(*a) s
168# b <1> rv2av[t4] lK/1
169# c <@> reverse[t5] vK/1
170# d <@> leave[1 ref] vKP/REFC
171EONT_EONT
172
173checkOptree ( name => 'sub {my @a; @a = sort @a}',
174 code => sub {my @a; @a = sort @a},
175 bcopts => '-exec',
176 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 1771 <;> nextstate(main -437 optree.t:254) v
1782 <0> padav[@a:-437,-436] vM/LVINTRO
1793 <;> nextstate(main -436 optree.t:256) v
1804 <0> pushmark s
1815 <0> pushmark s
1826 <0> padav[@a:-437,-436] l
1837 <@> sort lK
1848 <0> pushmark s
1859 <0> padav[@a:-437,-436] lRM*
186a <2> aassign[t\d+] KS/COMMON
187b <1> leavesub[1 ref] K/REFC,1
188EOT_EOT
189# 1 <;> nextstate(main 427 optree_sort.t:172) v
190# 2 <0> padav[@a:427,428] vM/LVINTRO
191# 3 <;> nextstate(main 428 optree_sort.t:173) v
192# 4 <0> pushmark s
193# 5 <0> pushmark s
194# 6 <0> padav[@a:427,428] l
195# 7 <@> sort lK
196# 8 <0> pushmark s
197# 9 <0> padav[@a:427,428] lRM*
198# a <2> aassign[t2] KS/COMMON
199# b <1> leavesub[1 ref] K/REFC,1
200EONT_EONT
201
202checkOptree ( name => 'my @a; @a = sort @a',
203 prog => 'my @a; @a = sort @a',
204 bcopts => '-exec',
205 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
2061 <0> enter
2072 <;> nextstate(main 1 -e:1) v
2083 <0> padav[@a:1,2] vM/LVINTRO
2094 <;> nextstate(main 2 -e:1) v
2105 <0> pushmark s
2116 <0> pushmark s
2127 <0> padav[@a:1,2] lRM*
2138 <@> sort lK/INPLACE
2149 <@> leave[1 ref] vKP/REFC
215EOT_EOT
216# 1 <0> enter
217# 2 <;> nextstate(main 1 -e:1) v
218# 3 <0> padav[@a:1,2] vM/LVINTRO
219# 4 <;> nextstate(main 2 -e:1) v
220# 5 <0> pushmark s
221# 6 <0> pushmark s
222# 7 <0> padav[@a:1,2] lRM*
223# 8 <@> sort lK/INPLACE
224# 9 <@> leave[1 ref] vKP/REFC
225EONT_EONT
226
227checkOptree ( name => 'sub {my @a; @a = sort @a; push @a, 1}',
228 code => sub {my @a; @a = sort @a; push @a, 1},
229 bcopts => '-exec',
230 debug => 0,
231 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2321 <;> nextstate(main -437 optree.t:325) v
2332 <0> padav[@a:-437,-436] vM/LVINTRO
2343 <;> nextstate(main -436 optree.t:325) v
2354 <0> pushmark s
2365 <0> pushmark s
2376 <0> padav[@a:-437,-436] lRM*
2387 <@> sort lK/INPLACE
2398 <;> nextstate(main -436 optree.t:325) v
2409 <0> pushmark s
241a <0> padav[@a:-437,-436] lRM
242b <$> const[IV 1] s
243c <@> push[t3] sK/2
244d <1> leavesub[1 ref] K/REFC,1
245EOT_EOT
246# 1 <;> nextstate(main 429 optree_sort.t:219) v
247# 2 <0> padav[@a:429,430] vM/LVINTRO
248# 3 <;> nextstate(main 430 optree_sort.t:220) v
249# 4 <0> pushmark s
250# 5 <0> pushmark s
251# 6 <0> padav[@a:429,430] lRM*
252# 7 <@> sort lK/INPLACE
253# 8 <;> nextstate(main 430 optree_sort.t:220) v
254# 9 <0> pushmark s
255# a <0> padav[@a:429,430] lRM
256# b <$> const(IV 1) s
257# c <@> push[t3] sK/2
258# d <1> leavesub[1 ref] K/REFC,1
259EONT_EONT
260
261checkOptree ( name => 'sub {my @a; @a = sort @a; 1}',
262 code => sub {my @a; @a = sort @a; 1},
263 bcopts => '-exec',
264 debug => 0,
265 expect => <<'EOT_EOT', expect_nt => <<'EONT_EONT');
724aa791 2661 <;> nextstate(main -437 optree.t:325) v
2672 <0> padav[@a:-437,-436] vM/LVINTRO
2683 <;> nextstate(main -436 optree.t:325) v
2694 <0> pushmark s
2705 <0> pushmark s
2716 <0> padav[@a:-437,-436] lRM*
2727 <@> sort lK/INPLACE
2738 <;> nextstate(main -436 optree.t:346) v
2749 <$> const[IV 1] s
275a <1> leavesub[1 ref] K/REFC,1
276EOT_EOT
277# 1 <;> nextstate(main 431 optree_sort.t:250) v
278# 2 <0> padav[@a:431,432] vM/LVINTRO
279# 3 <;> nextstate(main 432 optree_sort.t:251) v
280# 4 <0> pushmark s
281# 5 <0> pushmark s
282# 6 <0> padav[@a:431,432] lRM*
283# 7 <@> sort lK/INPLACE
284# 8 <;> nextstate(main 432 optree_sort.t:251) v
285# 9 <$> const(IV 1) s
286# a <1> leavesub[1 ref] K/REFC,1
287EONT_EONT
288
2ce64696 289} #skip
724aa791 290
291__END__
292