line |
true |
false |
branch |
7
|
493 |
111 |
if (f == s) return true; |
9
|
53 |
58 |
if (SvROK(f) | SvROK(s)) { /* unroll references */ |
10
|
78 |
45 |
while (SvROK(f) & SvROK(s)) { |
13
|
2 |
76 |
if (SvOBJECT(fval) ^ SvOBJECT(sval)) return false; |
14
|
12 |
64 |
if (SvOBJECT(fval)) { |
15
|
1 |
11 |
if (fval == sval) return true; |
16
|
2 |
9 |
if (SvSTASH(fval) != SvSTASH(sval)) return false; |
17
|
4 |
5 |
if (HvAMAGIC(SvSTASH(fval))) { // class has operator overloadings |
19
|
3 |
1 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
3 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
3 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
3 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
3 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
3 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
3 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
2 |
1 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
2 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
|
0 |
0 |
if (tmpsv) return SvTRUE(tmpsv); // class has '==' operator overloading |
26
|
4 |
41 |
if (SvROK(f) | SvROK(s)) return false; /* asymmetric references */ |
27
|
2 |
39 |
if (f == s) return true; |
38
|
3 |
60 |
if (SvOK(f) && SvOK(s)) { // both are not undefs |
|
3 |
0 |
if (SvOK(f) && SvOK(s)) { // both are not undefs |
|
0 |
3 |
if (SvOK(f) && SvOK(s)) { // both are not undefs |
|
3 |
57 |
if (SvOK(f) && SvOK(s)) { // both are not undefs |
|
3 |
0 |
if (SvOK(f) && SvOK(s)) { // both are not undefs |
|
0 |
3 |
if (SvOK(f) && SvOK(s)) { // both are not undefs |
39
|
0 |
57 |
if (SvTYPE(s) > SVt_PVMG) return false; // wrong type |
40
|
13 |
44 |
if (SvPOK(f) | SvPOK(s)) return strEQ(SvPV_nolen(f), SvPV_nolen(s)); // both strings |
|
11 |
2 |
if (SvPOK(f) | SvPOK(s)) return strEQ(SvPV_nolen(f), SvPV_nolen(s)); // both strings |
|
8 |
5 |
if (SvPOK(f) | SvPOK(s)) return strEQ(SvPV_nolen(f), SvPV_nolen(s)); // both strings |
41
|
4 |
40 |
if (SvNOK(f) | SvNOK(s)) return SvNV(f) == SvNV(s); // natural values |
|
3 |
1 |
if (SvNOK(f) | SvNOK(s)) return SvNV(f) == SvNV(s); // natural values |
|
2 |
2 |
if (SvNOK(f) | SvNOK(s)) return SvNV(f) == SvNV(s); // natural values |
44
|
3 |
3 |
return !(SvOK(f) || SvOK(s)); |
|
3 |
0 |
return !(SvOK(f) || SvOK(s)); |
|
3 |
0 |
return !(SvOK(f) || SvOK(s)); |
|
1 |
2 |
return !(SvOK(f) || SvOK(s)); |
|
1 |
0 |
return !(SvOK(f) || SvOK(s)); |
|
1 |
0 |
return !(SvOK(f) || SvOK(s)); |
46
|
19 |
0 |
return SvTYPE(s) == SVt_PVHV && hv_compare(aTHX_ (HV*)f, (HV*)s); |
|
12 |
7 |
return SvTYPE(s) == SVt_PVHV && hv_compare(aTHX_ (HV*)f, (HV*)s); |
48
|
9 |
0 |
return SvTYPE(s) == SVt_PVAV && av_compare(aTHX_ (AV*)f, (AV*)s); |
|
6 |
3 |
return SvTYPE(s) == SVt_PVAV && av_compare(aTHX_ (AV*)f, (AV*)s); |
50
|
1 |
0 |
return SvTYPE(s) == SVt_PVIO && PerlIO_fileno(IoIFP(f)) == PerlIO_fileno(IoIFP(s)); |
|
0 |
1 |
return SvTYPE(s) == SVt_PVIO && PerlIO_fileno(IoIFP(f)) == PerlIO_fileno(IoIFP(s)); |
52
|
3 |
0 |
return SvTYPE(s) == SVt_REGEXP && strEQ(SvPV_nolen(f), SvPV_nolen(s)); |
|
0 |
3 |
return SvTYPE(s) == SVt_REGEXP && strEQ(SvPV_nolen(f), SvPV_nolen(s)); |
|
0 |
3 |
return SvTYPE(s) == SVt_REGEXP && strEQ(SvPV_nolen(f), SvPV_nolen(s)); |
|
1 |
2 |
return SvTYPE(s) == SVt_REGEXP && strEQ(SvPV_nolen(f), SvPV_nolen(s)); |
62
|
0 |
57 |
if ((bool)f ^ (bool)s) return false; |
67
|
0 |
19 |
if (f == s) return true; |
68
|
19 |
0 |
if (!f || !s) return false; |
|
0 |
19 |
if (!f || !s) return false; |
69
|
0 |
19 |
if (HvUSEDKEYS(f) != HvUSEDKEYS(s)) return false; |
|
0 |
19 |
if (HvUSEDKEYS(f) != HvUSEDKEYS(s)) return false; |
|
1 |
18 |
if (HvUSEDKEYS(f) != HvUSEDKEYS(s)) return false; |
72
|
1 |
17 |
if (!farr) return true; // both are empty |
76
|
126 |
4 |
for (STRLEN i = 0; res && i <= fmax; ++i) { |
|
115 |
11 |
for (STRLEN i = 0; res && i <= fmax; ++i) { |
78
|
140 |
4 |
for (entry = farr[i]; res && entry; entry = HeNEXT(entry)) { |
|
31 |
109 |
for (entry = farr[i]; res && entry; entry = HeNEXT(entry)) { |
81
|
2 |
29 |
if (!sref) return false; |
90
|
0 |
9 |
if (f == s) return true; |
91
|
9 |
0 |
if (!f || !s) return true; |
|
0 |
9 |
if (!f || !s) return true; |
94
|
0 |
9 |
if (lasti != AvFILLp(s)) return false; |
99
|
525 |
2 |
while (res && lasti-- >= 0) { |
|
519 |
6 |
while (res && lasti-- >= 0) { |
|
519 |
8 |
while (res && lasti-- >= 0) { |
100
|
1 |
518 |
if ((bool)*fl ^ (bool)*sl) return false; // one is null while another is not. |
106
|
11 |
0 |
}} |
|
11 |
0 |
}} |