| line |
true |
false |
branch |
|
35
|
8 |
363 |
SvGETMAGIC(cloning); |
|
37
|
267 |
104 |
if(SvROK(cloning)){ |
|
56
|
110 |
90 |
while((iter = hv_iternext(cloning))){ |
|
73
|
92 |
52 |
for(i = 0; i <= last; i++){ |
|
75
|
92 |
0 |
if(svp){ |
|
86
|
145 |
6 |
if(he && isGV(HeVAL(he)) && GvCV((GV*)HeVAL(he))){ /* shortcut */ |
|
|
145 |
0 |
if(he && isGV(HeVAL(he)) && GvCV((GV*)HeVAL(he))){ /* shortcut */ |
|
|
10 |
135 |
if(he && isGV(HeVAL(he)) && GvCV((GV*)HeVAL(he))){ /* shortcut */ |
|
96
|
3 |
138 |
if(SvRMAGICAL(sv) && mg_find(sv, PERL_MAGIC_backref)) { |
|
|
0 |
3 |
if(SvRMAGICAL(sv) && mg_find(sv, PERL_MAGIC_backref)) { |
|
100
|
105 |
33 |
else if(SvTYPE(sv) == SVt_PVHV){ |
|
101
|
8 |
97 |
return SvOOK(sv) && HvAUX((HV*)sv)->xhv_backreferences != NULL; |
|
|
5 |
3 |
return SvOOK(sv) && HvAUX((HV*)sv)->xhv_backreferences != NULL; |
|
114
|
329 |
99 |
for (i = startingblock; i >= 0; i--) { |
|
|
0 |
0 |
for (i = startingblock; i >= 0; i--) { |
|
|
0 |
0 |
for (i = startingblock; i >= 0; i--) { |
|
116
|
70 |
259 |
if(CxTYPE(cx) == CXt_SUB){ |
|
|
0 |
0 |
if(CxTYPE(cx) == CXt_SUB){ |
|
|
0 |
0 |
if(CxTYPE(cx) == CXt_SUB){ |
|
133
|
99 |
70 |
while (cxix < 0 && si->si_type != PERLSI_MAIN) { |
|
|
0 |
99 |
while (cxix < 0 && si->si_type != PERLSI_MAIN) { |
|
142
|
70 |
0 |
if (PL_DBsub && GvCV(PL_DBsub) && |
|
|
0 |
70 |
if (PL_DBsub && GvCV(PL_DBsub) && |
|
143
|
0 |
0 |
ccstack[cxix].blk_sub.cv == GvCV(PL_DBsub)) |
|
145
|
0 |
70 |
if (!count--) |
|
172
|
0 |
69 |
PUSHMARK(SP); |
|
173
|
0 |
69 |
XPUSHs(arg1); |
|
184
|
55 |
0 |
FREETMPS; |
|
194
|
61 |
58 |
return method != GvCV(MY_CXT.my_clone) && method != MY_CXT.caller_cv; |
|
203
|
14 |
137 |
if(!method){ /* not a clonable object */ |
|
204
|
14 |
0 |
SV* const object_callback = GvSVn(MY_CXT.object_callback); |
|
207
|
0 |
14 |
SvGETMAGIC(object_callback); |
|
209
|
8 |
6 |
if(SvOK(object_callback)){ |
|
212
|
0 |
2 |
if(!SvROK(x)){ |
|
213
|
0 |
0 |
croak("ObjectCallback function returned %s, but it must return a reference", |
|
226
|
119 |
18 |
if(dc_need_to_call(aTHX_ aMY_CXT_ GvCV(method))){ |
|
229
|
0 |
53 |
if(!SvROK(x)){ |
|
230
|
0 |
0 |
croak("Cloning method '%"SVf"' returned %s, but it must return a reference", |
|
255
|
141 |
126 |
may_be_circular = (SvREFCNT(sv) > 1 || sv_has_backrefs(aTHX_ sv) ); |
|
|
6 |
135 |
may_be_circular = (SvREFCNT(sv) > 1 || sv_has_backrefs(aTHX_ sv) ); |
|
259
|
14 |
118 |
if(svp){ |
|
265
|
143 |
110 |
if(SvOBJECT(sv) && !SvRXOK(cloning)){ |
|
|
139 |
4 |
if(SvOBJECT(sv) && !SvRXOK(cloning)){ |
|
268
|
57 |
72 |
if(proto){ |
|
275
|
14 |
100 |
else if((mg = SvTIED_mg(sv, PERL_MAGIC_tied))){ |
|
|
12 |
2 |
else if((mg = SvTIED_mg(sv, PERL_MAGIC_tied))){ |
|
277
|
0 |
12 |
proto = dc_clone_object(aTHX_ aMY_CXT_ SvTIED_obj(sv, mg), MY_CXT.tieclone_method); |
|
279
|
4 |
4 |
if(proto){ |
|
282
|
2 |
2 |
: (SV*)newAV()); // can we use newSV_type()? |
|
295
|
52 |
126 |
if(SvTYPE(sv) == SVt_PVAV){ |
|
297
|
22 |
30 |
if(may_be_circular){ |
|
302
|
92 |
34 |
else if(SvTYPE(sv) == SVt_PVHV){ |
|
304
|
56 |
36 |
if(may_be_circular){ |
|
318
|
131 |
120 |
if(SvOBJECT(sv)){ |
|
322
|
4 |
247 |
return SvWEAKREF(cloning) ? sv_rvweaken(cloned) : cloned; |
|
333
|
0 |
169 |
if(++MY_CXT.depth == U32_MAX){ |
|
340
|
169 |
14 |
XCPT_TRY_START { |
|
346
|
113 |
56 |
if(--MY_CXT.depth == 0){ |
|
350
|
14 |
155 |
XCPT_CATCH { |
|
351
|
14 |
0 |
XCPT_RETHROW; |
|
|
0 |
0 |
XCPT_RETHROW; |
|
405
|
0 |
0 |
RETVAL = (MY_CXT.depth != 0); |