Branch Coverage

XSConstructor.xs
Criterion Covered Total %
branch 478 958 49.9


line true false branch
157 33 0 if (!sig_sv) {
158 0 33 if ( !sig ) {
163 0 33 PUSHMARK(SP);
164 0 33 XPUSHs(sv_2mortal(newSVpv(sig->package, 0)));
167 0 33 if ( count < 1 ) {
174 33 0 FREETMPS;
179 33 0 if (!SvROK(sig_sv) || SvTYPE(SvRV(sig_sv)) != SVt_PVHV) {
0 33 if (!SvROK(sig_sv) || SvTYPE(SvRV(sig_sv)) != SVt_PVHV) {
188 0 33 if ( sig == NULL ) {
192 1 32 if (sig->params) {
193 1 1 for (i = 0; i < sig->num_params; i++) {
197 0 1 for (j = 0; j < p->num_aliases; j++)
209 1 32 if (sig->allow) {
210 2 1 for (j = 0; j < sig->num_allow; j++)
214 0 33 if (sig->build_methods) {
215 0 0 for (i = 0; i < sig->num_build_methods; i++) {
216 0 0 if (sig->build_methods[i]) {
222 0 33 if (sig->foreignbuildargs_cv)
224 0 33 if (sig->foreignconstructor_cv)
226 0 33 if (sig->buildargs_cv)
235 33 0 if (svp && *svp && SvOK(*svp)) {
33 0 if (svp && *svp && SvOK(*svp)) {
33 0 if (svp && *svp && SvOK(*svp)) {
243 33 0 if (svp && SvOK(*svp)) {
3 30 if (svp && SvOK(*svp)) {
251 2 31 if (svp && SvOK(*svp)) {
1 1 if (svp && SvOK(*svp)) {
259 3 30 if (svp && SvOK(*svp)) {
3 0 if (svp && SvOK(*svp)) {
267 3 30 if (svp && SvOK(*svp)) {
1 2 if (svp && SvOK(*svp)) {
278 0 33 PUSHMARK(SP);
279 0 33 XPUSHs(sv_2mortal(newSVpv(sig->package, 0)));
283 6 27 if (count > 0) {
286 9 6 for (i = count - 1; i >= 0; i--) {
288 9 0 if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
0 9 if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
298 33 0 FREETMPS;
304 10 23 sig->strict_params = (svp && *svp && SvTRUE(*svp));
10 0 sig->strict_params = (svp && *svp && SvTRUE(*svp));
10 0 sig->strict_params = (svp && *svp && SvTRUE(*svp));
308 10 23 if (sig->strict_params && svp && *svp) {
10 0 if (sig->strict_params && svp && *svp) {
10 0 if (sig->strict_params && svp && *svp) {
309 10 0 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
0 10 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
317 33 10 for (j = 0; j < na; j++) {
319 33 0 if (!asv || !*asv || !SvOK(*asv)) {
33 0 if (!asv || !*asv || !SvOK(*asv)) {
0 33 if (!asv || !*asv || !SvOK(*asv)) {
328 33 0 if (!svp || !*svp || !SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
33 0 if (!svp || !*svp || !SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
33 0 if (!svp || !*svp || !SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
0 33 if (!svp || !*svp || !SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
339 68 33 for (i = 0; i < num_params; i++) {
343 68 0 if (!elem || !*elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
68 0 if (!elem || !*elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
68 0 if (!elem || !*elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
0 68 if (!elem || !*elem || !SvROK(*elem) || SvTYPE(SvRV(*elem)) != SVt_PVHV) {
354 68 0 if (!svp || !*svp || !SvOK(*svp)) {
68 0 if (!svp || !*svp || !SvOK(*svp)) {
0 68 if (!svp || !*svp || !SvOK(*svp)) {
361 68 0 p->flags = (svp && *svp) ? SvIV(*svp) : 0;
68 0 p->flags = (svp && *svp) ? SvIV(*svp) : 0;
365 68 0 if (svp && *svp && SvOK(*svp)) {
68 0 if (svp && *svp && SvOK(*svp)) {
65 3 if (svp && *svp && SvOK(*svp)) {
374 1 67 if (svp && *svp) {
1 0 if (svp && *svp) {
375 1 0 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
0 1 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVAV) {
383 1 1 for (j = 0; j < na; j++) {
385 1 0 if (!asv || !*asv || !SvOK(*asv)) {
1 0 if (!asv || !*asv || !SvOK(*asv)) {
0 1 if (!asv || !*asv || !SvOK(*asv)) {
393 8 60 if (svp && SvOK(*svp)) {
8 0 if (svp && SvOK(*svp)) {
400 3 65 if (svp && SvOK(*svp)) {
3 0 if (svp && SvOK(*svp)) {
407 7 61 if (svp && SvOK(*svp)) {
7 0 if (svp && SvOK(*svp)) {
408 7 0 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 7 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVCV)
417 1 67 if (svp && SvOK(*svp)) {
1 0 if (svp && SvOK(*svp)) {
418 1 0 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 1 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVCV)
427 1 67 if (svp && SvOK(*svp)) {
1 0 if (svp && SvOK(*svp)) {
428 1 0 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 1 if (!SvROK(*svp) || SvTYPE(SvRV(*svp)) != SVt_PVCV)
437 2 66 if (svp && SvOK(*svp)) {
2 0 if (svp && SvOK(*svp)) {
438 1 1 if (SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVCV) {
1 0 if (SvROK(*svp) && SvTYPE(SvRV(*svp)) == SVt_PVCV) {
462 0 1 if ( sig == NULL ) {
466 0 1 if (sig->demolish_methods) {
467 0 0 for (i = 0; i < sig->num_demolish_methods; i++) {
468 0 0 if (sig->demolish_methods[i]) {
486 0 1 PUSHMARK(SP);
487 0 1 XPUSHs(sv_2mortal(newSVpv(sig->package, 0)));
491 1 0 if (count > 0) {
494 1 1 for (i = count - 1; i >= 0; i--) {
496 1 0 if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
0 1 if (!SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
506 1 0 FREETMPS;
521 13 6 for (i = 0; i <= len; i++) {
523 6 7 if (!svp) continue;
524 1 6 if (i > 0)
537 3 77 if ( sig->buildargs_cv ) {
541 0 3 PUSHMARK(SP);
543 10 3 for (i = 0; i < items; i++) {
544 0 10 XPUSHs( newSVsv(ST(i)) );
548 0 3 if ( count < 1 ) {
554 3 0 FREETMPS;
556 3 0 if (!IsHashRef(args_ref)) {
3 0 if (!IsHashRef(args_ref)) {
0 3 if (!IsHashRef(args_ref)) {
566 14 63 if(items == 1){
568 14 0 if(!IsHashRef(args_ref)){
14 0 if(!IsHashRef(args_ref)){
0 14 if(!IsHashRef(args_ref)){
577 0 63 if( (items % 2) != 0 ){
582 120 63 for(i = 0; i < items; i += 2){
597 1 1 if (!sig->foreignbuildargs_cv) {
608 0 1 PUSHMARK(SP);
610 4 1 for (i = 0; i <= argslen; i++) {
612 0 4 XPUSHs(svp ? *svp : &PL_sv_undef);
4 0 XPUSHs(svp ? *svp : &PL_sv_undef);
623 2 1 for (i = 0; i < count; i++) {
629 1 0 FREETMPS;
643 0 3 if (!sig->foreignconstructor_cv) {
653 0 3 PUSHMARK(SP);
656 0 3 XPUSHs(sv_2mortal(newSVpv(klass, 0)));
660 5 3 for (i = 0; i <= n; i++) {
662 0 5 XPUSHs(svp ? *svp : &PL_sv_undef);
5 0 XPUSHs(svp ? *svp : &PL_sv_undef);
671 0 3 if (count != 1) {
672 0 0 FREETMPS;
683 3 0 FREETMPS;
688 3 0 if (SvROK(ret) && sv_isobject(ret)) {
3 0 if (SvROK(ret) && sv_isobject(ret)) {
691 1 2 if (sv_isa(ret, klass)) {
697 0 2 if (!newstash) {
725 0 5 if(*p == '-') p++;
727 0 5 if (!*p) return FALSE;
729 7 2 while(*p){
730 3 4 if(!isDIGIT(*p)){
741 0 0 if(nv == (NV)(IV)nv){
759 0 0 if ( !SvPOKp(klass) || !SvCUR(klass) ) { /* XXX: SvPOK does not work with magical scalars */
0 0 if ( !SvPOKp(klass) || !SvCUR(klass) ) { /* XXX: SvPOK does not work with magical scalars */
764 0 0 if ( !stash ) {
768 0 0 if (( gvp = (GV**)hv_fetchs(stash, "VERSION", FALSE) )) {
769 0 0 if ( isGV(*gvp) && GvSV(*gvp) && SvOK(GvSV(*gvp)) ){
0 0 if ( isGV(*gvp) && GvSV(*gvp) && SvOK(GvSV(*gvp)) ){
0 0 if ( isGV(*gvp) && GvSV(*gvp) && SvOK(GvSV(*gvp)) ){
774 0 0 if (( gvp = (GV**)hv_fetchs(stash, "ISA", FALSE) )) {
775 0 0 if ( isGV(*gvp) && GvAV(*gvp) && av_len(GvAV(*gvp)) != -1 ) {
0 0 if ( isGV(*gvp) && GvAV(*gvp) && av_len(GvAV(*gvp)) != -1 ) {
0 0 if ( isGV(*gvp) && GvAV(*gvp) && av_len(GvAV(*gvp)) != -1 ) {
781 0 0 while (( he = hv_iternext(stash) )) {
783 0 0 if ( isGV(gv) ) {
784 0 0 if ( GvCVu(gv) ) { /* is GV and has CV */
0 0 if ( GvCVu(gv) ) { /* is GV and has CV */
789 0 0 else if ( SvOK(gv) ) { /* is a stub or constant */
806 15 6 if ( ( flags & XSCON_TYPE_OTHER ) == XSCON_TYPE_OTHER ) {
807 0 15 if ( !check_cv ) {
808 0 0 warn( "Type constraint check coderef gone AWOL for attribute '%s', so just assuming value passes", keyname ? keyname : "unknown" );
817 0 15 PUSHMARK(SP);
818 0 15 EXTEND(SP, 1);
823 15 0 result = count ? POPs : &PL_sv_undef;
825 15 0 FREETMPS;
831 0 6 if ( flags & XSCON_TYPE_ARRAYREF ) {
832 0 0 if ( !IsArrayRef(val) ) {
0 0 if ( !IsArrayRef(val) ) {
0 0 if ( !IsArrayRef(val) ) {
835 0 0 if ( flags == XSCON_TYPE_ARRAYREF ) {
842 0 0 for (i = 0; i < len; i++) {
844 0 0 if ( ! xscon_check_type(NULL, subval, newflags, NULL) ) {
851 0 6 if ( flags & XSCON_TYPE_HASHREF ) {
852 0 0 if ( !IsHashRef(val) ) {
0 0 if ( !IsHashRef(val) ) {
0 0 if ( !IsHashRef(val) ) {
856 0 0 if ( flags == XSCON_TYPE_HASHREF ) {
863 0 0 while ((he = hv_iternext(hv))) {
865 0 0 if ( ! xscon_check_type(NULL, subval, newflags, NULL) ) {
879 0 0 return SvOK(val) && SvROK(val);
0 0 return SvOK(val) && SvROK(val);
881 0 0 if ( SvROK(val) || isGV(val) ) {
0 0 if ( SvROK(val) || isGV(val) ) {
884 0 0 else if ( sv_true( val ) ) {
885 0 0 if ( SvPOKp(val) ) {
887 0 0 return SvCUR(val) == 1 && SvPVX(val)[0] == '1';
0 0 return SvCUR(val) == 1 && SvPVX(val)[0] == '1';
889 0 0 else if ( SvIOKp(val) ) {
893 0 0 else if( SvNOKp(val) ) {
901 0 0 return len == 1 && ptr[0] == '1';
0 0 return len == 1 && ptr[0] == '1';
911 6 0 if ( SvOK(val) && !SvROK(val) && !isGV(val) ) {
6 0 if ( SvOK(val) && !SvROK(val) && !isGV(val) ) {
6 0 if ( SvOK(val) && !SvROK(val) && !isGV(val) ) {
912 5 1 if ( SvPOK(val) ) {
915 1 0 else if ( SvIOK(val) ) {
918 0 0 else if ( SvNOK(val) ) {
925 0 0 if ( (!SvOK(val)) || SvROK(val) || isGV(val) ) {
0 0 if ( (!SvOK(val)) || SvROK(val) || isGV(val) ) {
0 0 if ( (!SvOK(val)) || SvROK(val) || isGV(val) ) {
928 0 0 if ( SvPOKp(val) ){
929 0 0 if ( ! _S_pv_is_integer( SvPVX(val) ) ) {
933 0 0 else if ( SvIOKp(val) ) {
936 0 0 else if ( SvNOKp(val) ) {
937 0 0 if ( ! _S_nv_is_integer( SvNVX(val) ) ) {
948 0 0 return ( (len > 0 && i[0] != '-') ? TRUE : FALSE );
0 0 return ( (len > 0 && i[0] != '-') ? TRUE : FALSE );
953 0 0 if ( ! looks_like_number(val) ) {
959 0 0 return SvOK(val) && !SvROK(val) && !isGV(val);
0 0 return SvOK(val) && !SvROK(val) && !isGV(val);
0 0 return SvOK(val) && !SvROK(val) && !isGV(val);
961 0 0 if ( SvOK(val) && !SvROK(val) && !isGV(val) ) {
0 0 if ( SvOK(val) && !SvROK(val) && !isGV(val) ) {
0 0 if ( SvOK(val) && !SvROK(val) && !isGV(val) ) {
972 0 0 return IsObject(val);
0 0 return IsObject(val);
974 0 0 return IsScalarRef(val);
0 0 return IsScalarRef(val);
0 0 return IsScalarRef(val);
976 0 0 return IsCodeRef(val);
0 0 return IsCodeRef(val);
0 0 return IsCodeRef(val);
1012 0 7 if ( !default_sv ) {
1018 4 3 if (IsCodeRef( default_sv )) {
4 0 if (IsCodeRef( default_sv )) {
3 1 if (IsCodeRef( default_sv )) {
1022 0 3 PUSHMARK(SP);
1023 0 3 EXTEND(SP, 1);
1028 3 0 SV* got = count ? POPs : &PL_sv_undef;
1030 3 0 FREETMPS;
1036 1 3 if (IsScalarRef(default_sv)) {
1 0 if (IsScalarRef(default_sv)) {
1 0 if (IsScalarRef(default_sv)) {
1043 0 1 PUSHMARK(SP);
1044 0 1 EXTEND(SP, 1);
1049 1 0 SV* got = count ? POPs : &PL_sv_undef;
1051 1 0 FREETMPS;
1079 0 4 if (hv_exists_ent(object_hv, mutexkey_sv, 0)) {
1100 4 0 value_sv = svp ? *svp : &PL_sv_undef;
1104 3 1 if (!SvROK(trigger_sv)) {
1105 0 3 PUSHMARK(SP);
1106 0 3 XPUSHs((SV *)object);
1107 0 3 XPUSHs(value_sv);
1111 1 0 else if (SvTYPE(SvRV(trigger_sv)) == SVt_PVCV) {
1112 0 1 PUSHMARK(SP);
1113 0 1 XPUSHs((SV *)object);
1114 0 1 XPUSHs(value_sv);
1122 4 0 FREETMPS;
1135 0 80 if (sig->is_placeholder) {
1139 0 80 if(mg_find((SV*)args, PERL_MAGIC_tied)){
1150 225 59 for (i = 0; i < sig->num_params; i++) {
1157 222 3 if ( param->init_arg ) {
1166 222 3 if ( (!( flags & XSCON_FLAG_NO_INIT_ARG )) && init_arg_len >= 0 && hv_exists(args, init_arg, init_arg_len) ) {
222 0 if ( (!( flags & XSCON_FLAG_NO_INIT_ARG )) && init_arg_len >= 0 && hv_exists(args, init_arg, init_arg_len) ) {
111 111 if ( (!( flags & XSCON_FLAG_NO_INIT_ARG )) && init_arg_len >= 0 && hv_exists(args, init_arg, init_arg_len) ) {
1175 3 222 if ( flags & XSCON_FLAG_HAS_ALIASES ) {
1177 3 2 for (i = 0; i < param->num_aliases; i++) {
1180 2 1 if ( hv_exists(args, alias, alias_len) ) {
1181 1 1 if ( has_value ) {
1195 111 113 if ( value_was_from_args && ( flags & XSCON_FLAG_UNDEF_TOLERANT ) && !SvOK(val) ) {
2 109 if ( value_was_from_args && ( flags & XSCON_FLAG_UNDEF_TOLERANT ) && !SvOK(val) ) {
1 1 if ( value_was_from_args && ( flags & XSCON_FLAG_UNDEF_TOLERANT ) && !SvOK(val) ) {
1200 114 110 if ( !has_value && flags & XSCON_FLAG_HAS_DEFAULT ) {
9 105 if ( !has_value && flags & XSCON_FLAG_HAS_DEFAULT ) {
1212 119 105 if ( has_value && ( flags & XSCON_FLAG_HAS_TYPE_CONSTRAINT ) ) {
15 104 if ( has_value && ( flags & XSCON_FLAG_HAS_TYPE_CONSTRAINT ) ) {
1217 7 8 if ( failed ) {
1218 3 4 if ( flags & XSCON_FLAG_HAS_TYPE_COERCION && param->coercion_cv ) {
3 0 if ( flags & XSCON_FLAG_HAS_TYPE_COERCION && param->coercion_cv ) {
1223 0 3 PUSHMARK(SP);
1224 0 3 EXTEND(SP, 1);
1229 3 0 SV* tmpval = count ? POPs : &PL_sv_undef;
1231 3 0 FREETMPS;
1235 2 1 if ( passed_this_time ) {
1248 114 105 if ( has_value ) {
1249 105 9 if ( value_was_from_args && ( flags & XSCON_FLAG_CLONE_ON_WRITE ) ) {
2 103 if ( value_was_from_args && ( flags & XSCON_FLAG_CLONE_ON_WRITE ) ) {
1250 1 1 if ( param->cloner_cv ) {
1255 0 1 PUSHMARK(SP);
1256 0 1 EXTEND(SP, 3);
1263 1 0 SV* tmpval = count ? POPs : val;
1265 1 0 FREETMPS;
1268 0 1 if ( passed_this_time ) {
1277 1 0 if ( weakrefs == NULL ) weakrefs = newAV();
1285 1 112 if ( ( flags & XSCON_FLAG_HAS_SLOT_INITIALIZER ) && param->slot_initializer_cv ) {
1 0 if ( ( flags & XSCON_FLAG_HAS_SLOT_INITIALIZER ) && param->slot_initializer_cv ) {
1289 0 1 PUSHMARK(SP);
1290 0 1 EXTEND(SP, 2);
1296 0 1 FREETMPS;
1303 104 9 if ( value_was_from_args && ( flags & XSCON_FLAG_HAS_TRIGGER ) ) {
4 100 if ( value_was_from_args && ( flags & XSCON_FLAG_HAS_TRIGGER ) ) {
1307 8 105 if ( SvROK(val) && flags & XSCON_FLAG_WEAKEN ) {
1 7 if ( SvROK(val) && flags & XSCON_FLAG_WEAKEN ) {
1308 1 0 if ( weakrefs == NULL ) weakrefs = newAV();
1312 14 91 else if ( flags & XSCON_FLAG_REQUIRED ) {
1313 0 14 if ( flags & XSCON_FLAG_HAS_INIT_ARG && strcmp(keyname, init_arg) != 0 ) {
0 0 if ( flags & XSCON_FLAG_HAS_INIT_ARG && strcmp(keyname, init_arg) != 0 ) {
1322 2 57 if ( weakrefs ) HANDLE_WEAKREFS( weakrefs );
1 0 if ( weakrefs ) HANDLE_WEAKREFS( weakrefs );
1 0 if ( weakrefs ) HANDLE_WEAKREFS( weakrefs );
1 0 if ( weakrefs ) HANDLE_WEAKREFS( weakrefs );
1 2 if ( weakrefs ) HANDLE_WEAKREFS( weakrefs );
1339 2 58 if (hv_exists(args_hv, "__no_BUILD__", 12)) {
1341 2 0 if ( SvOK(val) && SvTRUE(val) ) {
1 1 if ( SvOK(val) && SvTRUE(val) ) {
1347 57 2 if ( strcmp(klass, sig->package) == 0 ) {
1348 48 9 if ( sig->num_build_methods <= 0 )
1350 14 9 for (i = 0; i < sig->num_build_methods; i++) {
1352 0 14 if (!cv)
1356 0 14 PUSHMARK(SP);
1357 0 14 EXTEND(SP, 2);
1362 2 12 FREETMPS;
1381 0 2 if ( !buildall || !SvOK(*buildall) ) {
0 0 if ( !buildall || !SvOK(*buildall) ) {
1384 0 2 PUSHMARK(SP);
1385 0 2 EXTEND(SP, 2);
1391 0 2 FREETMPS;
1396 2 0 if (!buildall || !SvOK(*buildall)) {
0 2 if (!buildall || !SvOK(*buildall)) {
1400 0 2 if (!SvROK(*buildall)) {
1409 4 2 for (i = 0; i < len; i++) {
1417 0 4 PUSHMARK(SP);
1418 0 4 EXTEND(SP, 2);
1424 0 4 FREETMPS;
1439 0 2 if ( strcmp(klass, sig->package) == 0 ) {
1440 0 0 if ( sig->num_demolish_methods <= 0 )
1442 0 0 for (i = 0; i < sig->num_demolish_methods; i++) {
1444 0 0 if (!cv)
1448 0 0 PUSHMARK(SP);
1449 0 0 EXTEND(SP, 2);
1452 0 0 for (j = 0; j <= n; j++) {
1454 0 0 XPUSHs(svp ? *svp : &PL_sv_undef);
0 0 XPUSHs(svp ? *svp : &PL_sv_undef);
1457 0 0 (void)call_sv((SV *)cv, use_eval ? ( G_VOID | G_EVAL ) : G_VOID);
1458 0 0 FREETMPS;
1478 1 1 if ( !demolishall || !SvOK(*demolishall) ) {
0 1 if ( !demolishall || !SvOK(*demolishall) ) {
1481 0 1 PUSHMARK(SP);
1482 0 1 EXTEND(SP, 2);
1488 0 1 FREETMPS;
1494 0 2 if (!SvOK(*demolishall)) {
1498 0 2 if (!SvROK(*demolishall)) {
1507 4 2 for (i = 0; i < len; i++) {
1515 0 4 PUSHMARK(SP);
1516 0 4 EXTEND(SP, 2);
1519 6 4 for (j = 0; j <= n; j++) {
1521 0 6 XPUSHs(svp ? *svp : &PL_sv_undef);
6 0 XPUSHs(svp ? *svp : &PL_sv_undef);
1524 0 4 (void)call_sv(demolish, use_eval ? ( G_VOID | G_EVAL ) : G_VOID);
1526 0 4 FREETMPS;
1538 0 7 if ( ! sig->strict_params ) {
1549 12 7 while ((he = hv_iternext(argshv))) {
1555 37 7 for (i = 0; i < sig->num_allow; i++) {
1556 10 27 if (k_len == strlen(sig->allow[i]) && memcmp(k_str, sig->allow[i], k_len) == 0) {
5 5 if (k_len == strlen(sig->allow[i]) && memcmp(k_str, sig->allow[i], k_len) == 0) {
1562 7 5 if (!found) {
1568 6 1 if ( badattrs_len > 0 ) {
1570 5 1 if ( badattrs_len == 1 ) {
1644 33 47 if (sig->is_placeholder) xscon_constructor_get_metadata(NULL, sig);
1647 0 80 klassname = SvROK(klass) ? sv_reftype(SvRV(klass), 1) : SvPV_nolen_const(klass);
1651 1 79 if ( sig->foreignbuildall ) {
1652 0 1 if ( sig->foreignbuildargs_cv ) {
1655 0 0 for (i = 0; i < items; i++) {
1664 0 0 if ( !args || !IsHashRef(args)) {
0 0 if ( !args || !IsHashRef(args)) {
0 0 if ( !args || !IsHashRef(args)) {
0 0 if ( !args || !IsHashRef(args)) {
1674 1 0 if ( !hv_exists((HV*)SvRV(args), "__no_BUILD__", 12) ) {
1687 1 0 if ( need_to_remove_no_build ) {
1692 2 77 else if ( sig->foreignconstructor_cv ) {
1695 7 2 for (i = 0; i < items; i++) {
1723 17 42 if ( sig->strict_params ) {
1724 0 17 if ( used < HvUSEDKEYS((HV*)SvRV(args)) ) {
7 10 if ( used < HvUSEDKEYS((HV*)SvRV(args)) ) {
1741 0 1 if (sig->is_placeholder) xscon_constructor_get_metadata(NULL, sig);
1745 0 1 if (!stash) croak("Not a blessed object?");
1746 1 0 klassname = HvNAME(stash);
1 0 klassname = HvNAME(stash);
0 1 klassname = HvNAME(stash);
0 0 klassname = HvNAME(stash);
1 0 klassname = HvNAME(stash);
0 1 klassname = HvNAME(stash);
1776 0 1 if (sig->is_placeholder) xscon_destructor_get_metadata(sig->package, sig);
1778 1 0 const char* klassname = SvROK(object) ? sv_reftype(SvRV(object), 1) : SvPV_nolen_const(object);
1791 1 0 if (sig->is_placeholder) xscon_destructor_get_metadata(sig->package, sig);
1793 1 0 const char* klassname = SvROK(object) ? sv_reftype(SvRV(object), 1) : SvPV_nolen_const(object);
1796 2 1 for (i = 1; i < items; i++) {
1829 2 3 if ( sig->has_default && !hv_exists(object_hv, sig->slot, slotlen) ) {
2 0 if ( sig->has_default && !hv_exists(object_hv, sig->slot, slotlen) ) {
1831 2 0 if ( sig->has_check && !xscon_check_type(sig->slot, newSVsv(val), sig->check_flags, sig->check_cv) ) {
1 1 if ( sig->has_check && !xscon_check_type(sig->slot, newSVsv(val), sig->check_flags, sig->check_cv) ) {
1832 0 1 if ( sig->has_coercion ) {
1836 0 0 PUSHMARK(SP);
1837 0 0 EXTEND(SP, 1);
1842 0 0 SV* tmpval = count ? POPs : &PL_sv_undef;
1844 0 0 FREETMPS;
1847 0 0 if ( xscon_check_type(sig->slot, newSVsv(newval), sig->check_flags, sig->check_cv) ) {
1862 4 0 SV* val = svp ? newSVsv(*svp) : &PL_sv_undef;
1864 3 1 if ( sig->should_clone && sig->cloner_cv == NULL ) {
3 0 if ( sig->should_clone && sig->cloner_cv == NULL ) {
1868 0 0 HANDLE_WEAKREFS( weakrefs );
0 0 HANDLE_WEAKREFS( weakrefs );
0 0 HANDLE_WEAKREFS( weakrefs );
0 3 HANDLE_WEAKREFS( weakrefs );
1873 0 1 else if ( sig->should_clone ) {
1878 0 0 PUSHMARK(SP);
1879 0 0 EXTEND(SP, 3);
1886 0 0 SV* tmpval = count ? POPs : val;
1888 0 0 FREETMPS;
1892 0 0 if ( sig->has_check ) {
1896 0 0 if ( passed_this_time ) {
1923 8 8 for ( i = 0; i < nargs; i++ ) {
1932 0 8 if ( sig->is_accessor ) {
1936 0 0 PUSHMARK(SP);
1937 0 0 XPUSHs(object);
1941 0 0 if (SvTRUE(ERRSV)) croak(NULL);
0 0 if (SvTRUE(ERRSV)) croak(NULL);
1944 0 0 handler = count ? POPs : &PL_sv_undef;
1945 0 0 if ( handler != &PL_sv_undef ) {
1951 0 0 FREETMPS;
1958 6 2 handler = svp ? *svp : &PL_sv_undef;
1959 6 2 if ( handler != &PL_sv_undef ) {
1965 6 2 if ( !IsObject(handler) ) {
2 4 if ( !IsObject(handler) ) {
1966 2 2 if ( sig->is_try ) {
1971 1 1 croak(
1982 0 4 PUSHMARK(SP);
1983 0 4 XPUSHs(handler);
1986 2 2 if ( sig->has_curried ) {
1988 6 2 for (i = 0; i < n; i++) {
1990 0 6 XPUSHs( svp ? *svp : &PL_sv_undef );
6 0 XPUSHs( svp ? *svp : &PL_sv_undef );
1995 8 4 for (i = 0; i < nargs; i++) {
1997 0 8 XPUSHs( svp ? *svp : &PL_sv_undef );
8 0 XPUSHs( svp ? *svp : &PL_sv_undef );
2005 4 0 if (inc) SvREFCNT_dec(handler);
2017 0 37 if (cv == NULL)
2021 0 37 if (cv2 == NULL)
2025 0 37 if (cv3 == NULL)
2031 62 37 for (p = full; (p = strstr(p, "::")); p += 2) {
2035 37 0 if (last) {
2060 0 1 if (cv == NULL)
2064 0 1 if (cv2 == NULL)
2068 0 1 if (cv3 == NULL)
2074 2 1 for (p = full; (p = strstr(p, "::")); p += 2) {
2078 1 0 if (last) {
2102 0 3 if (cv == NULL)
2112 3 0 if (!curried || !SvROK(curried) || SvTYPE(SvRV(curried)) != SVt_PVAV) {
1 2 if (!curried || !SvROK(curried) || SvTYPE(SvRV(curried)) != SVt_PVAV) {
0 1 if (!curried || !SvROK(curried) || SvTYPE(SvRV(curried)) != SVt_PVAV) {
2131 0 3 if (cv == NULL)
2142 3 0 if (check && IsCodeRef(check)) {
3 0 if (check && IsCodeRef(check)) {
3 0 if (check && IsCodeRef(check)) {
3 0 if (check && IsCodeRef(check)) {
2151 3 0 if (coercion && IsCodeRef(coercion)) {
0 3 if (coercion && IsCodeRef(coercion)) {
0 0 if (coercion && IsCodeRef(coercion)) {
0 0 if (coercion && IsCodeRef(coercion)) {
2161 3 0 if (items >= 9) {
2165 3 0 if (cloner && IsCodeRef(cloner)) {
0 3 if (cloner && IsCodeRef(cloner)) {
0 0 if (cloner && IsCodeRef(cloner)) {
0 0 if (cloner && IsCodeRef(cloner)) {
2169 3 0 else if (cloner && SvTRUE(cloner)) {
1 2 else if (cloner && SvTRUE(cloner)) {
2188 1 0 AV *weakrefs = newAV();
2195 0 0 HANDLE_WEAKREFS( weakrefs );
0 0 HANDLE_WEAKREFS( weakrefs );
0 0 HANDLE_WEAKREFS( weakrefs );
0 1 HANDLE_WEAKREFS( weakrefs );
2198 0 1 EXTEND(SP,1);