line |
true |
false |
branch |
7
|
493 |
113 |
if (f == s) return true; |
9
|
54 |
59 |
if (SvROK(f) | SvROK(s)) { /* unroll references */ |
10
|
79 |
46 |
while (SvROK(f) & SvROK(s)) { |
13
|
2 |
77 |
if (SvOBJECT(fval) ^ SvOBJECT(sval)) return false; |
14
|
12 |
65 |
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 |
42 |
if (SvROK(f) | SvROK(s)) return false; /* asymmetric references */ |
27
|
2 |
40 |
if (f == s) return true; |
38
|
3 |
61 |
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 |
58 |
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 |
58 |
if (SvTYPE(s) > SVt_PVMG) return false; // wrong type |
40
|
14 |
44 |
if (SvPOK(f) | SvPOK(s)) return strEQ(SvPV_nolen(f), SvPV_nolen(s)); // both strings |
|
12 |
2 |
if (SvPOK(f) | SvPOK(s)) return strEQ(SvPV_nolen(f), SvPV_nolen(s)); // both strings |
|
8 |
6 |
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
|
10 |
0 |
return SvTYPE(s) == SVt_PVAV && av_compare(aTHX_ (AV*)f, (AV*)s); |
|
7 |
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
|
121 |
5 |
for (STRLEN i = 0; res && i <= fmax; ++i) { |
|
110 |
11 |
for (STRLEN i = 0; res && i <= fmax; ++i) { |
78
|
135 |
5 |
for (entry = farr[i]; res && entry; entry = HeNEXT(entry)) { |
|
31 |
104 |
for (entry = farr[i]; res && entry; entry = HeNEXT(entry)) { |
81
|
1 |
30 |
if (!sref) return false; |
90
|
0 |
10 |
if (f == s) return true; |
91
|
10 |
0 |
if (!f || !s) return true; |
|
0 |
10 |
if (!f || !s) return true; |
94
|
0 |
10 |
if (lasti != AvFILLp(s)) return false; |
99
|
527 |
2 |
while (res && lasti-- >= 0) { |
|
520 |
7 |
while (res && lasti-- >= 0) { |
|
520 |
9 |
while (res && lasti-- >= 0) { |
100
|
1 |
519 |
if ((bool)*fl ^ (bool)*sl) return false; // one is null while another is not. |
106
|
11 |
0 |
}} |
|
11 |
0 |
}} |