File Coverage

blib/lib/Acme/Perl/VM/Context.pm
Criterion Covered Total %
statement 92 94 97.8
branch n/a
condition n/a
subroutine 31 32 96.8
pod 0 1 0.0
total 123 127 96.8


line stmt bran cond sub pod time code
1             package Acme::Perl::VM::Context;
2 22     22   22028 use Mouse;
  22         1119728  
  22         145  
3              
4              
5             sub type{
6 99     99 0 498 (my $type = ref($_[0])) =~ s/^Acme::Perl::VM::Context:://;
7              
8 99         306 return $type;
9             }
10              
11 22     22   13002 no Mouse;
  22         57  
  22         331  
12             __PACKAGE__->meta->make_immutable();
13              
14             package Acme::Perl::VM::Context::BLOCK;
15 22     22   4494 use Mouse;
  22         55  
  22         164  
16 22     22   7493 use Acme::Perl::VM qw($PL_comppad);
  22         45  
  22         13355  
17              
18             extends 'Acme::Perl::VM::Context';
19              
20             has gimme => (
21             is => 'rw',
22             isa => 'Int',
23              
24             required => 1,
25             );
26             has oldsp => (
27             is => 'rw',
28             isa => 'Int',
29              
30             required => 1
31             );
32             has oldcop => (
33             is => 'rw',
34             isa => 'B::COP',
35              
36             required => 1,
37             );
38             has oldmarksp => (
39             is => 'rw',
40             isa => 'Int',
41              
42             required => 1,
43             );
44             has oldscopesp => (
45             is => 'rw',
46             isa => 'Int',
47              
48             required => 1,
49             );
50              
51             sub CURPAD_SAVE{
52 21     21   34 my($cx) = @_;
53              
54 21         105 $cx->oldcomppad($PL_comppad);
55 21         47 return;
56             }
57              
58             sub CURPAD_SV{
59 0     0   0 my($cx, $ix) = @_;
60              
61 0         0 return $cx->oldcomppad->ARRAYelt($ix);
62             }
63              
64              
65 22     22   177 no Mouse;
  22         43  
  22         110  
66             __PACKAGE__->meta->make_immutable();
67              
68             package Acme::Perl::VM::Context::SUB;
69 22     22   3355 use Mouse;
  22         47  
  22         110  
70             extends 'Acme::Perl::VM::Context::BLOCK';
71              
72             has cv => (
73             is => 'rw',
74             isa => 'B::CV',
75              
76             required => 1,
77             );
78              
79             has olddepth => (
80             is => 'rw',
81             isa => 'Int',
82             );
83             has hasargs => (
84             is => 'rw',
85             isa => 'Bool',
86              
87             required => 1,
88             );
89              
90             has retop => (
91             is => 'rw',
92             isa => 'B::OBJECT', # NULL or B::OP
93              
94             required => 1,
95             );
96              
97             has oldcomppad => (
98             is => 'rw',
99             isa => 'B::AV',
100             );
101             has savearray => (
102             is => 'rw',
103             isa => 'ArrayRef',
104             );
105             has argarray => (
106             is => 'rw',
107             isa => 'B::AV',
108             );
109              
110             has lval => (
111             is => 'rw',
112             isa => 'Bool',
113             );
114              
115             sub BUILD{
116 131     131   224 my($cx) = @_;
117              
118 131         850 $cx->olddepth($cx->cv->DEPTH);
119 131         389 return;
120             }
121              
122 22     22   11303 no Mouse;
  22         69  
  22         99  
123             __PACKAGE__->meta->make_immutable();
124              
125             package Acme::Perl::VM::Context::EVAL;
126 22     22   3012 use Mouse;
  22         40  
  22         97  
127             extends 'Acme::Perl::VM::Context::BLOCK';
128              
129 22     22   7046 no Mouse;
  22         59  
  22         102  
130             __PACKAGE__->meta->make_immutable();
131              
132             package Acme::Perl::VM::Context::LOOP;
133 22     22   2952 use Mouse;
  22         46  
  22         98  
134             extends 'Acme::Perl::VM::Context::BLOCK';
135              
136 22     22   7429 use Acme::Perl::VM qw($PL_op $PL_curcop);
  22         50  
  22         7172  
137              
138             has label => (
139             is => 'rw',
140             isa => 'Maybe[Str]',
141             );
142             has resetsp => (
143             is => 'rw',
144             isa => 'Int',
145              
146             required => 1,
147             );
148             has myop => (
149             is => 'rw',
150             isa => 'B::LOOP',
151             );
152             has nextop => (
153             is => 'rw',
154             isa => 'B::OP',
155             );
156              
157             sub BUILD{
158 6     6   460 my($cx) = @_;
159              
160 6         74 $cx->label($PL_curcop->label);
161 6         55 $cx->myop($PL_op);
162 6         71 $cx->nextop($PL_op->nextop);
163              
164 6         22 return;
165             }
166              
167 3     3   10 sub ITERVAR(){ undef }
168              
169 22     22   135 no Mouse;
  22         50  
  22         106  
170             __PACKAGE__->meta->make_immutable();
171              
172             package Acme::Perl::VM::Context::FOREACH;
173 22     22   3087 use Mouse;
  22         41  
  22         97  
174 22     22   25855 use Acme::Perl::VM::B qw(USE_ITHREADS);
  22         64  
  22         14225  
175             extends 'Acme::Perl::VM::Context::LOOP';
176              
177             has padvar => (
178             is => 'rw',
179             isa => 'Bool',
180              
181             required => 1,
182             );
183             has for_def => (
184             is => 'rw',
185             isa => 'Bool',
186              
187             required => 1,
188             );
189              
190             has iterdata => (
191             is => 'rw',
192             isa => 'Defined',
193              
194             required => 1,
195             );
196             if(USE_ITHREADS){
197             has oldcomppad => (
198             is => 'rw',
199             isa => 'B::AV',
200             );
201             }
202              
203             has itersave => (
204             is => 'rw',
205             );
206             has iterlval => (
207             is => 'rw',
208             );
209             has iterary => (
210             is => 'rw',
211             );
212             has iterix => (
213             is => 'rw',
214             isa => 'Int',
215             );
216             has itermax => (
217             is => 'rw',
218             isa => 'Int',
219             );
220              
221             sub type(){ 'LOOP' } # this is a LOOP
222              
223             sub BUILD{
224 2     2   4 my($cx) = @_;
225 2         10 $cx->ITERDATA_SET($cx->iterdata);
226 2         5 return;
227             }
228              
229              
230             sub ITERVAR{
231 26     26   33 my($cx) = @_;
232 26         30 if(USE_ITHREADS){
233             if($cx->padvar){
234             return $cx->CURPAD_SV($cx->iterdata);
235             }
236             else{
237             return $cx->iterdata->SV;
238             }
239             }
240             else{
241 26         96 return $cx->iterdata;
242             }
243             }
244             sub ITERDATA_SET{
245 2     2   10 my($cx, $idata) = @_;
246 2         3 if(USE_ITHREADS){
247             $cx->CURPAD_SAVE();
248             }
249              
250 2         5 $cx->itersave($cx->ITERVAR);
251             }
252              
253 22     22   212 no Mouse;
  22         44  
  22         193  
254             __PACKAGE__->meta->make_immutable();
255              
256             package Acme::Perl::VM::Context::GivenWhen;
257 22     22   3956 use Mouse;
  22         39  
  22         131  
258             extends 'Acme::Perl::VM::Context::BLOCK';
259              
260 22     22   9338 no Mouse;
  22         48  
  22         94  
261             __PACKAGE__->meta->make_immutable();
262              
263             package Acme::Perl::VM::Context::GIVEN;
264 22     22   3585 use Mouse;
  22         48  
  22         88  
265             extends 'Acme::Perl::VM::Context::GivenWhen';
266              
267 22     22   6475 no Mouse;
  22         46  
  22         89  
268             __PACKAGE__->meta->make_immutable();
269              
270             package Acme::Perl::VM::Context::WHEN;
271 22     22   3275 use Mouse;
  22         40  
  22         93  
272             extends 'Acme::Perl::VM::Context::GivenWhen';
273              
274 22     22   7086 no Mouse;
  22         46  
  22         160  
275             __PACKAGE__->meta->make_immutable();
276              
277             package Acme::Perl::VM::Context::SUBST;
278 22     22   3612 use Mouse;
  22         37  
  22         559  
279             extends 'Acme::Perl::VM::Context';
280              
281 22     22   6330 no Mouse;
  22         45  
  22         92  
282             __PACKAGE__->meta->make_immutable();
283              
284             __END__