Branch Coverage

NYTProf.xs
Criterion Covered Total %
branch 998 1940 51.4


line true false branch
517 0 0 if (!logfh)
575 0 705 const char *argv0 = SvPV(sv, len);
577 0 705 assert(out != NULL);
607 11985 705 } while (++opt_p < opt_end);
612 385 320 if (compression_level) {
632 0 99134 if (NYTP_TAG_STRING != tag && NYTP_TAG_STRING_UTF8 != tag)
0 0 if (NYTP_TAG_STRING != tag && NYTP_TAG_STRING_UTF8 != tag)
637 57884 41250 if (sv) {
638 57884 0 SvGROW(sv, len+1); /* forces SVt_PV */
3221 54663 SvGROW(sv, len+1); /* forces SVt_PV */
645 99134 0 buf = SvPV_nolen(sv);
647 0 99134 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
0 99134 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
0 99134 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
650 0 99134 if (NYTP_TAG_STRING_UTF8 == tag)
653 0 99134 if (trace_level >= 19) {
656 0 0 if (buf[len2-1] == '\n') {
660 0 0 logwarn(" read string '%.*s%s'%s\n", (int)len2, SvPV_nolen(sv),
0 0 logwarn(" read string '%.*s%s'%s\n", (int)len2, SvPV_nolen(sv),
677 1627911 42511 while (len--) {
690 184 30 if (memEQ(filename, prefix, prefix_len)
691 184 0 && isdigit((int)filename[prefix_len])) {
694 56 184 while (isdigit((int)*s))
696 184 0 if (s[0] == ')')
708 157 3904 if (filename_len < 6)
711 3736 168 if (filename[filename_len - 1] != ']' && filename[filename_len - 1] != ')')
3705 31 if (filename[filename_len - 1] != ']' && filename[filename_len - 1] != ')')
713 184 15 if (eval_prefix(filename, "(eval ", 6))
715 0 15 if (eval_prefix(filename, "(re_eval ", 9))
734 11720 30976 while(NULL != found) {
736 11373 347 if (found->key_len == key_len
737 11373 0 && memEQ(found->key, key, key_len)
743 162 185 if (NULL == found->next_entry) {
744 2 160 if (insert) {
769 1622 29354 if (insert) {
782 630 992 if (!hashtable->first_inserted)
802 0 0 if (verbosity)
804 0 0 if (!hashtable->table)
807 0 0 for (idx=0; idx < hashtable->size; ++idx) {
811 0 0 if (!found)
815 0 0 while (NULL != found) {
820 0 0 if (verbosity)
822 0 0 if (chain_len > max_chain_len)
838 580 1087 if (fid_info->key_abs) {
861 0 1667 if (file_name_copy)
873 516 1076 if (fid_info->key_abs) {
878 1460 132 if (len > 3 && memEQs(file_name + len - 3, 3, ".pm")) {
251 1209 if (len > 3 && memEQs(file_name + len - 3, 3, ".pm")) {
890 16 235 if (PerlLIO_lstat(pmc, &pmcstat) == 0) {
895 16 0 if (PerlLIO_lstat(file_name, &pmstat) < 0 ||
16 0 if (PerlLIO_lstat(file_name, &pmstat) < 0 ||
910 0 0 if (fid_flags & NYTP_FIDf_IS_EVAL) my_strlcat(buf, "eval,", len);
911 0 0 if (fid_flags & NYTP_FIDf_IS_FAKE) my_strlcat(buf, "fake,", len);
912 0 0 if (fid_flags & NYTP_FIDf_IS_AUTOSPLIT) my_strlcat(buf, "autosplit,", len);
913 0 0 if (fid_flags & NYTP_FIDf_IS_ALIAS) my_strlcat(buf, "alias,", len);
914 0 0 if (fid_flags & NYTP_FIDf_IS_PMC) my_strlcat(buf, "pmc,", len);
915 0 0 if (fid_flags & NYTP_FIDf_VIA_STMT) my_strlcat(buf, "viastmt,", len);
916 0 0 if (fid_flags & NYTP_FIDf_VIA_SUB) my_strlcat(buf, "viasub,", len);
917 0 0 if (fid_flags & NYTP_FIDf_HAS_SRC) my_strlcat(buf, "hassrc,", len);
918 0 0 if (fid_flags & NYTP_FIDf_SAVE_SRC) my_strlcat(buf, "savesrc,", len);
919 0 0 if (*buf) /* trim trailing comma */
929 75 705 while (e) {
930 75 0 if ( !(e->fid_flags & NYTP_FIDf_IS_ALIAS) )
949 0 32 base_start = (base_start) ? base_start+1 : file_name;
952 0 32 if (trace_level >= 3)
956 144 32 for ( ; e; e = (fid_hash_entry*)e->he.next_inserted) {
959 32 112 if (e->fid_flags & NYTP_FIDf_IS_AUTOSPLIT)
961 0 112 if (trace_level >= 4)
965 32 80 if (e->he.key_len < base_len)
969 48 32 if (memcmp(e_name, base_start, base_len) != 0)
972 32 0 if (e->he.key_len > base_len && *(e_name-1) != *sep)
0 32 if (e->he.key_len > base_len && *(e_name-1) != *sep)
975 0 32 if (trace_level >= 3)
1018 40887 1624 if (1 != hash_op(&fidhash, file_name, file_name_len, (Hash_entry**)&found, (bool)(created_via ? 1 : 0))) {
1020 0 40887 if (trace_level >= 7) {
1021 0 0 if (found)
1025 11373 29514 return (found) ? found->he.id : 0;
1028 994 630 if (fidhash.prior_inserted)
1036 679 945 if ('(' == file_name[0]) { /* first char is '(' */
1037 661 18 if (']' == file_name[file_name_len-1]) { /* last char is ']' */
1043 661 0 if (!start || !end || start > end) { /* should never happen */
661 0 if (!start || !end || start > end) { /* should never happen */
0 661 if (!start || !end || start > end) { /* should never happen */
1053 16 2 else if (filename_is_eval(file_name, file_name_len)) {
1067 947 677 if (!found->eval_fid) {
1069 0 947 if (tag) {
1074 0 0 if (trace_level >= 1)
1084 48 1576 if ( ')' == file_name[file_name_len-1] && strstr(file_name, " (autosplit ")) {
32 16 if ( ')' == file_name[file_name_len-1] && strstr(file_name, " (autosplit ")) {
1095 32 1592 if (found->fid_flags & NYTP_FIDf_IS_AUTOSPLIT
1096 32 0 && (parent_entry = find_autosplit_parent(aTHX_ file_name))
1110 0 32 if (trace_level >= 2)
1111 0 0 logwarn("Use fid %2u (after %2u:%-4u) %x e%u:%u %.*s %s\n",
1121 915 677 if (!found->eval_fid &&
132 783 if (!found->eval_fid &&
1122 16 116 !(file_name[0] == '-'
1123 16 0 && (file_name_len==1 || (file_name[1]=='e' && file_name_len==2))) &&
0 16 && (file_name_len==1 || (file_name[1]=='e' && file_name_len==2))) &&
516 267 && (file_name_len==1 || (file_name[1]=='e' && file_name_len==2))) &&
1138 0 516 if (!getcwd(file_name_abs, sizeof(file_name_abs))) {
1152 516 0 if (strNE(file_name_abs, "/"))
1155 0 516 if (strnEQ(file_name, "./", 2)) {
1168 16 1576 if (fid_is_pmc(aTHX_ found))
1175 1356 236 if ( (src_av = GvAV(gv_fetchfile_flags(found->he.key, found->he.key_len, 0))) )
1176 1280 76 if (av_len(src_av) > -1)
1180 132 1460 if (found->he.key[0] == '-' && (found->he.key_len == 1 ||
16 116 if (found->he.key[0] == '-' && (found->he.key_len == 1 ||
16 0 if (found->he.key[0] == '-' && (found->he.key_len == 1 ||
1181 16 0 (found->he.key[1] == 'e' && found->he.key_len == 2)))
1187 915 677 if (found->eval_fid
1188 763 152 || (found->fid_flags & NYTP_FIDf_IS_EVAL)
1189 376 387 || (profile_opts & NYTP_OPTf_SAVESRC)
1190 264 112 || (found->he.key_len > 10 && found->he.key[9] == 'x' && strnEQ(found->he.key, "/loader/0x", 10))
0 264 || (found->he.key_len > 10 && found->he.key[9] == 'x' && strnEQ(found->he.key, "/loader/0x", 10))
0 0 || (found->he.key_len > 10 && found->he.key[9] == 'x' && strnEQ(found->he.key, "/loader/0x", 10))
1197 0 1592 if (trace_level >= 2) {
1201 0 0 logwarn("New fid %2u (after %2u:%-4u) 0x%02x e%u:%u %.*s %s %s\n",
1217 5563 5531 UV uv = (!svp || !SvOK(*svp)) ? default_uv : SvUV(*svp);
0 5563 UV uv = (!svp || !SvOK(*svp)) ? default_uv : SvUV(*svp);
0 0 UV uv = (!svp || !SvOK(*svp)) ? default_uv : SvUV(*svp);
0 0 UV uv = (!svp || !SvOK(*svp)) ? default_uv : SvUV(*svp);
0 5563 UV uv = (!svp || !SvOK(*svp)) ? default_uv : SvUV(*svp);
1225 11110 5531 NV nv = (!svp || !SvOK(*svp)) ? default_nv : SvNV(*svp);
0 11110 NV nv = (!svp || !SvOK(*svp)) ? default_nv : SvNV(*svp);
0 0 NV nv = (!svp || !SvOK(*svp)) ? default_nv : SvNV(*svp);
0 0 NV nv = (!svp || !SvOK(*svp)) ? default_nv : SvNV(*svp);
11110 0 NV nv = (!svp || !SvOK(*svp)) ? default_nv : SvNV(*svp);
1282 1371648 0 for (i = startingblock; i >= 0; i--) {
1286 1371648 0 if (type_bit & cx_type_mask)
1346 0 1465325 if (!start_op) {
1347 0 0 if (trace_level >= trace)
1354 1465325 0 while ( o && (type = (o->op_type) ? o->op_type : (int)o->op_targ) ) {
1465325 0 while ( o && (type = (o->op_type) ? o->op_type : (int)o->op_targ) ) {
1465325 0 while ( o && (type = (o->op_type) ? o->op_type : (int)o->op_targ) ) {
1355 572479 892846 if (type == OP_NEXTSTATE ||
506224 66255 if (type == OP_NEXTSTATE ||
1361 0 1399070 if (trace_level >= trace)
1362 0 0 logwarn("\tstart_cop_of_context %s is %s line %d of %s\n",
0 0 logwarn("\tstart_cop_of_context %s is %s line %d of %s\n",
1367 0 66255 if (trace_level >= trace)
1368 0 0 logwarn("\tstart_cop_of_context %s op '%s' isn't a cop, giving up\n",
1384 0 0 if (trace_level >= 3) {
1412 0 715171 if (trace_level >= 6)
1419 0 2086819 while (cxix < 0 && top_si->si_type != PERLSI_MAIN) {
0 0 while (cxix < 0 && top_si->si_type != PERLSI_MAIN) {
1420 0 0 if (trace_level >= 6)
1428 2086819 0 if (cxix < 0 || (cxix == 0 && !top_si->si_prev)) {
2470 2084349 if (cxix < 0 || (cxix == 0 && !top_si->si_prev)) {
2422 48 if (cxix < 0 || (cxix == 0 && !top_si->si_prev)) {
1430 0 2422 if (trace_level >= 5)
1435 0 2084397 if (trace_level >= 5)
1438 712749 1371648 if (callback(aTHX_ cx, &cx_type_mask))
1451 1399070 0 char *a_file = OutCopFILE(a);
1452 1399070 0 char *b_file = OutCopFILE(b);
1453 797478 601592 if (a_file == b_file)
1457 0 601592 if (strEQ(a_file, b_file))
1469 711165 1373232 if (CxTYPE(cx) == CXt_SUB) {
1470 711165 0 if (PL_debstash && CvSTASH(cx->blk_sub.cv) == PL_debstash)
0 711165 if (PL_debstash && CvSTASH(cx->blk_sub.cv) == PL_debstash)
1476 111157 600008 if (_cop_in_same_file(near_cop, PL_curcop_nytprof)) {
1479 25040 86117 if (!last_block_line)
1483 0 711165 if (trace_level >= 8) {
1485 0 0 logwarn("\tat %d: block %d sub %d for %s %s\n",
1488 0 0 if (trace_level >= 99)
1496 0 1373232 if (trace_level >= 6)
1500 619072 754160 if (last_block_line)
1504 66255 687905 if ((near_cop = start_cop_of_context(aTHX_ cx)) == NULL)
1508 1584 686321 if (!_cop_in_same_file(near_cop, PL_curcop_nytprof)) {
1510 1584 0 if ('(' == *OutCopFILE(PL_curcop_nytprof)) {
944 640 if ('(' == *OutCopFILE(PL_curcop_nytprof)) {
1516 0 640 if (trace_level >= 5)
1517 0 0 logwarn("at %d: %s in different file (%s, %s)\n",
0 0 logwarn("at %d: %s in different file (%s, %s)\n",
1524 0 686321 if (trace_level >= 5)
1538 0 555 if (!o || o == PL_op)
0 0 if (!o || o == PL_op)
1540 0 0 if (o->op_flags & OPf_KIDS) {
1542 0 0 for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid)) {
0 0 for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid)) {
1546 0 0 if (kid->op_type == OP_NULL && kid->op_targ == OP_NEXTSTATE)
0 0 if (kid->op_type == OP_NULL && kid->op_targ == OP_NEXTSTATE)
1550 0 0 if (new_cop)
1569 856354 10398 if (!is_profiling || !profile_stmts)
77 856277 if (!is_profiling || !profile_stmts)
1586 855640 637 if (last_executed_fid) {
1587 715287 140353 if (profile_blocks)
1595 0 855640 if (trace_level >= 5) /* previous fid:line and how much time we spent there */
1601 856213 64 if (!cop)
1603 555 855722 if ( (last_executed_line = CopLINE(cop)) == 0 ) {
1608 0 555 cop = (COP*)closest_cop(aTHX_ cop, OpSIBLING(cop));
1609 0 555 if (!cop)
1612 555 0 if (!last_executed_line) {
1616 555 0 char *pkg_name = CopSTASHPV(cop);
555 0 char *pkg_name = CopSTASHPV(cop);
555 0 char *pkg_name = CopSTASHPV(cop);
0 555 char *pkg_name = CopSTASHPV(cop);
0 0 char *pkg_name = CopSTASHPV(cop);
555 0 char *pkg_name = CopSTASHPV(cop);
0 555 char *pkg_name = CopSTASHPV(cop);
1617 555 0 int is_preamble = (PL_scopestack_ix <= 7 && strEQ(pkg_name,"main"));
555 0 int is_preamble = (PL_scopestack_ix <= 7 && strEQ(pkg_name,"main"));
1620 0 555 if (!is_preamble && op) {
0 0 if (!is_preamble && op) {
1622 0 0 logwarn("Unable to determine line number in %s (ssix%d)\n",
1624 0 0 if (trace_level > 5)
1631 856277 0 file = OutCopFILE(cop);
1632 637 855640 if (!last_executed_fid) { /* first time */
1633 0 637 if (trace_level >= 1) {
1634 0 0 logwarn("~ first statement profiled at line %d of %s, pid %ld\n",
1638 3873 852404 if (file != last_executed_fileptr) { /* cache (hit ratio ~50% e.g. for perlcritic) */
1643 0 856277 if (trace_level >= 7) /* show the fid:line we're about to execute */
1644 0 0 logwarn("\t@%d:%-4d... %s\n", last_executed_fid, last_executed_line,
1647 715896 140381 if (profile_blocks) {
1650 715171 725 if (op) {
1654 3591 712305 if (!last_block_line) last_block_line = last_executed_line;
1655 603795 112101 if (!last_sub_line) last_sub_line = last_executed_line;
1683 240935 2159 if (!is_profiling || !out || !profile_stmts)
240935 0 if (!is_profiling || !out || !profile_stmts)
0 240935 if (!is_profiling || !out || !profile_stmts)
1717 190243 50692 if (last_executed_line == prev_last_executed_line
1723 0 240935 if (trace_level >= 5) {
1724 0 0 logwarn("\tleft %u:%u via %s back to %s at %u:%u (b%u s%u) - discounting next statement%s\n",
0 0 logwarn("\tleft %u:%u via %s back to %s at %u:%u (b%u s%u) - discounting next statement%s\n",
0 0 logwarn("\tleft %u:%u via %s back to %s at %u:%u (b%u s%u) - discounting next statement%s\n",
1726 0 0 OP_NAME_safe(prev_op), OP_NAME_safe(op),
0 0 OP_NAME_safe(prev_op), OP_NAME_safe(op),
1728 0 0 (op || is_multicall) ? "" : ", LEAVING PERL"
1742 11618 0 if (!option || !*option)
0 11618 if (!option || !*option)
1744 11618 0 if (!value || !*value)
0 11618 if (!value || !*value)
1747 1297 10321 if (strEQ(option, "file")) {
1750 0 10321 else if (strEQ(option, "log")) {
1752 0 0 if (!fp) {
1759 1281 9040 else if (strEQ(option, "start")) {
1760 76 1205 if (strEQ(value,"begin")) profile_start = NYTP_START_BEGIN;
1761 1205 0 else if (strEQ(value,"init")) profile_start = NYTP_START_INIT;
1762 0 0 else if (strEQ(value,"end")) profile_start = NYTP_START_END;
1763 0 0 else if (strEQ(value,"no")) profile_start = NYTP_START_NO;
1766 15 9025 else if (strEQ(option, "addpid")) {
1769 15 0 : profile_opts & ~NYTP_OPTf_ADDPID;
1771 0 9025 else if (strEQ(option, "addtimestamp")) {
1774 0 0 : profile_opts & ~NYTP_OPTf_ADDTIMESTAMP;
1776 9009 16 else if (strEQ(option, "optimize") || strEQ(option, "optimise")) {
0 9009 else if (strEQ(option, "optimize") || strEQ(option, "optimise")) {
1779 16 0 : profile_opts & ~NYTP_OPTf_OPTIMIZE;
1781 1280 7729 else if (strEQ(option, "savesrc")) {
1784 696 584 : profile_opts & ~NYTP_OPTf_SAVESRC;
1786 0 7729 else if (strEQ(option, "endatexit")) {
1787 0 0 if (atoi(value))
1790 0 7729 else if (strEQ(option, "libcexit")) {
1791 0 0 if (atoi(value))
1801 7729 56737 if (strEQ(option, opt_p->option_name)) {
1806 56737 0 } while (++opt_p < opt_end);
1807 0 7729 if (!found) {
1812 0 11618 if (trace_level)
1827 0 705 const char *mode = (strnEQ(filename, "/dev/", 4) ? "wb" : "wbx");
1837 663 42 if ((profile_opts & (NYTP_OPTf_ADDPID|NYTP_OPTf_ADDTIMESTAMP))
1838 0 663 || out /* already opened so assume we're forking and add the pid */
1840 0 42 if (strlen(filename) >= MAXPATHLEN-(20+20)) /* buffer overrun protection */
1843 0 42 if ((profile_opts & NYTP_OPTf_ADDPID) || out)
0 0 if ((profile_opts & NYTP_OPTf_ADDPID) || out)
1845 0 42 if ( profile_opts & NYTP_OPTf_ADDTIMESTAMP )
1855 0 705 if (!out) {
1858 0 0 if (fopen_errno==EEXIST && !(profile_opts & NYTP_OPTf_ADDPID))
0 0 if (fopen_errno==EEXIST && !(profile_opts & NYTP_OPTf_ADDPID))
1864 0 705 if (trace_level >= 1)
1876 36 675 if (!out)
1890 0 675 if ((result = NYTP_close(out, 0)))
1894 0 675 if (trace_level >= 1)
1904 857073 31 if (getpid() == last_pid)
1908 0 31 if (trace_level >= 1)
1915 31 0 if (sub_callers_hv)
1919 30 1 if (open_new_file) {
1925 0 30 if (result)
1932 4 27 if (profile_forkdepth == 0) { /* parent doesn't want children profiled */
1939 27 4 if (open_new_file)
2011 530 0 if (!subname || *subname != 'B' || strNE(subname,"BEGIN"))
530 0 if (!subname || *subname != 'B' || strNE(subname,"BEGIN"))
32 498 if (!subname || *subname != 'B' || strNE(subname,"BEGIN"))
2020 0 498 SvCUR_set(fullnamesv, total_len);
0 0 SvCUR_set(fullnamesv, total_len);
0 498 SvCUR_set(fullnamesv, total_len);
0 0 SvCUR_set(fullnamesv, total_len);
0 0 SvCUR_set(fullnamesv, total_len);
0 498 SvCUR_set(fullnamesv, total_len);
0 0 SvCUR_set(fullnamesv, total_len);
2024 496 2 if (DBsv && parse_DBsub_value(aTHX_ DBsv, NULL, &line, NULL, SvPVX(fullnamesv))) {
496 0 if (DBsv && parse_DBsub_value(aTHX_ DBsv, NULL, &line, NULL, SvPVX(fullnamesv))) {
2027 496 0 if (hv_fetch(GvHV(PL_DBsub), SvPV_nolen(fullnamesv), (I32)SvCUR(fullnamesv), 0)) {
36 460 if (hv_fetch(GvHV(PL_DBsub), SvPV_nolen(fullnamesv), (I32)SvCUR(fullnamesv), 0)) {
2031 496 0 (void) hv_store(GvHV(PL_DBsub), SvPV_nolen(fullnamesv), (I32)SvCUR(fullnamesv), DBsv, 0);
2048 0 0 sprintf(buf, "(seix %d%s%d, ac%u)",
2061 131103 0 if ((trace_level >= 6 || subr_entry->already_counted>1)
0 131103 if ((trace_level >= 6 || subr_entry->already_counted>1)
2063 0 0 && !(subr_entry->prev_subr_entry_ix == subr_entry_ix && subr_entry->already_counted==1)
0 0 && !(subr_entry->prev_subr_entry_ix == subr_entry_ix && subr_entry->already_counted==1)
2065 0 0 logwarn("%2u << %s::%s done %s\n",
2068 0 0 (subr_entry->called_subnam_sv && SvOK(subr_entry->called_subnam_sv))
0 0 (subr_entry->called_subnam_sv && SvOK(subr_entry->called_subnam_sv))
0 0 (subr_entry->called_subnam_sv && SvOK(subr_entry->called_subnam_sv))
2069 0 0 ? SvPV_nolen(subr_entry->called_subnam_sv)
2073 65594 65509 if (subr_entry->caller_subnam_sv) {
2077 65594 65509 if (subr_entry->called_subnam_sv) {
2081 131103 0 if (subr_entry->prev_subr_entry_ix <= subr_entry_ix)
2106 65594 65509 if (subr_entry->called_subnam_sv && !SvOK(subr_entry->called_subnam_sv)) {
4 65590 if (subr_entry->called_subnam_sv && !SvOK(subr_entry->called_subnam_sv)) {
4 0 if (subr_entry->called_subnam_sv && !SvOK(subr_entry->called_subnam_sv)) {
4 0 if (subr_entry->called_subnam_sv && !SvOK(subr_entry->called_subnam_sv)) {
2107 0 4 if (trace_level)
2116 65513 65590 if (subr_entry->already_counted) {
2135 0 65590 if (subr_entry->hide_subr_call_time) {
2148 65590 0 subr_call_key_len = my_snprintf(subr_call_key, sizeof(subr_call_key), "%s::%s[%u:%d]",
65590 0 subr_call_key_len = my_snprintf(subr_call_key, sizeof(subr_call_key), "%s::%s[%u:%d]",
0 65590 subr_call_key_len = my_snprintf(subr_call_key, sizeof(subr_call_key), "%s::%s[%u:%d]",
2152 0 65590 if (subr_call_key_len >= sizeof(subr_call_key))
2161 1061994 65590 while (*p)
2165 65590 0 if (subr_entry->called_subnam_sv) {
2168 65590 0 p = SvPV(subr_entry->called_subnam_sv, len);
2176 0 65590 if (called_subname_pv_end >= called_subname_pv+sizeof(called_subname_pv))
2183 3139 62451 if (!SvROK(sv_tmp)) { /* autoviv hash ref - is first call of this called subname from anywhere */
2187 733 2406 if (subr_entry->called_is_xs) {
2193 127 606 if ( ('s' == *subr_entry->called_is_xs) /* "sop" (slowop) */
2194 127 0 || (subr_entry->called_cv && SvTYPE(subr_entry->called_cv) == SVt_PVCV)
127 0 || (subr_entry->called_cv && SvTYPE(subr_entry->called_cv) == SVt_PVCV)
2203 685 48 if (!SvOK(sv))
685 0 if (!SvOK(sv))
685 0 if (!SvOK(sv))
2205 0 733 if (trace_level >= 2)
2213 4853 60737 if (!SvROK(sv_tmp)) { /* first call from this subname[fid:line] - autoviv array ref */
2218 4853 0 if (subr_entry->called_subpkg_pv) { /* note that a sub in this package was called */
2220 813 4040 if (SvTYPE(pf_sv) == SVt_NULL) { /* log when first created */
2222 0 813 if (trace_level >= 3)
2233 0 65590 if (trace_level >= 5) {
2246 65558 32 if (subr_entry->called_cv_depth <= 1) {
2248 65558 0 sv_setnv(incl_time_sv, SvNV(incl_time_sv)+incl_subr_ticks);
2254 16 16 sv_setnv(reci_time_sv, (SvOK(reci_time_sv)) ? SvNV(reci_time_sv)+(incl_subr_ticks/ticks_per_sec) : (incl_subr_ticks/ticks_per_sec));
16 0 sv_setnv(reci_time_sv, (SvOK(reci_time_sv)) ? SvNV(reci_time_sv)+(incl_subr_ticks/ticks_per_sec) : (incl_subr_ticks/ticks_per_sec));
0 16 sv_setnv(reci_time_sv, (SvOK(reci_time_sv)) ? SvNV(reci_time_sv)+(incl_subr_ticks/ticks_per_sec) : (incl_subr_ticks/ticks_per_sec));
16 0 sv_setnv(reci_time_sv, (SvOK(reci_time_sv)) ? SvNV(reci_time_sv)+(incl_subr_ticks/ticks_per_sec) : (incl_subr_ticks/ticks_per_sec));
2256 16 16 if (!SvOK(max_depth_sv) || subr_entry->called_cv_depth-1 > SvIV(max_depth_sv))
16 0 if (!SvOK(max_depth_sv) || subr_entry->called_cv_depth-1 > SvIV(max_depth_sv))
0 16 if (!SvOK(max_depth_sv) || subr_entry->called_cv_depth-1 > SvIV(max_depth_sv))
16 0 if (!SvOK(max_depth_sv) || subr_entry->called_cv_depth-1 > SvIV(max_depth_sv))
0 16 if (!SvOK(max_depth_sv) || subr_entry->called_cv_depth-1 > SvIV(max_depth_sv))
2260 65590 0 sv_setnv(excl_time_sv, SvNV(excl_time_sv)+excl_subr_ticks);
2262 60938 4652 if (opt_calls && out) {
60899 39 if (opt_calls && out) {
2277 81853 0 incr_sub_inclusive_time(aTHX_ subr_entry_ix_ptr(save_ix));
2288 0 109410 if (!subname_gv_ptr)
2298 36 1440 if (!SvROK(sv)) {
2301 0 36 if (sv == &PL_sv_yes) { /* unfound import, ignore */
2304 0 36 if (SvGMAGICAL(sv)) {
2306 0 0 if (SvROK(sv))
2308 0 0 sym = SvPOKp(sv) ? SvPVX(sv) : Nullch;
2311 32 4 sym = SvPV_nolen(sv);
2312 0 36 if (!sym)
2314 4 32 if (PL_op->op_private & HINT_STRICT_REFS)
2325 1440 0 if (SvTYPE(cv) == SVt_PVCV)
2335 103405 0 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
0 103405 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
0 0 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
103405 0 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
16 103389 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
2337 16 103389 if (!cv) /* would autoload in this situation */
2341 109390 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
109390 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
109390 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
109390 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
0 109390 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
0 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
2356 1795 806 if (!si)
2359 148 2453 if (ix < 0) {
2361 48 100 if (si->si_type != PERLSI_MAIN)
2363 0 100 if (trace_level >= 9)
2371 0 2453 if (trace_level >= 9)
2376 2445 8 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
0 2445 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
2378 546 1899 else if (CxTYPE(cx) == CXt_EVAL && !CxTRYBLOCK(cx))
369 177 else if (CxTYPE(cx) == CXt_EVAL && !CxTRYBLOCK(cx))
2380 1802 274 else if (ix == 0 && si->si_type == PERLSI_MAIN)
1687 115 else if (ix == 0 && si->si_type == PERLSI_MAIN)
2382 274 115 else if (ix > 0) /* more on this stack? */
2386 115 0 if (si->si_type != PERLSI_MAIN) {
2408 0 65594 if (subr_entry_ix <= prev_subr_entry_ix) {
2416 65594 0 subr_entry = subr_entry_ix_ptr(subr_entry_ix);
2420 63695 1899 caller_subr_entry = subr_entry_ix_ptr(prev_subr_entry_ix);
2422 63695 1899 ? caller_subr_entry->subr_prof_depth+1 : 1;
2433 2901 62693 if (op_type == OP_ENTERSUB || op_type == OP_GOTO) {
168 2733 if (op_type == OP_ENTERSUB || op_type == OP_GOTO) {
2436 62857 4 if (called_gv) {
2437 62857 0 char *p = HvNAME(GvSTASH(called_gv));
62857 0 char *p = HvNAME(GvSTASH(called_gv));
0 62857 char *p = HvNAME(GvSTASH(called_gv));
0 0 char *p = HvNAME(GvSTASH(called_gv));
62857 0 char *p = HvNAME(GvSTASH(called_gv));
0 62857 char *p = HvNAME(GvSTASH(called_gv));
2442 0 62857 if ('P'==*p++ && 'O'==*p++ && 'S'==*p++ && 'I'==*p++ && 'X'==*p++ && 0==*p) {
0 0 if ('P'==*p++ && 'O'==*p++ && 'S'==*p++ && 'I'==*p++ && 'X'==*p++ && 0==*p) {
0 0 if ('P'==*p++ && 'O'==*p++ && 'S'==*p++ && 'I'==*p++ && 'X'==*p++ && 0==*p) {
0 0 if ('P'==*p++ && 'O'==*p++ && 'S'==*p++ && 'I'==*p++ && 'X'==*p++ && 0==*p) {
0 0 if ('P'==*p++ && 'O'==*p++ && 'S'==*p++ && 'I'==*p++ && 'X'==*p++ && 0==*p) {
0 0 if ('P'==*p++ && 'O'==*p++ && 'S'==*p++ && 'I'==*p++ && 'X'==*p++ && 0==*p) {
2444 0 0 if ('_'==*s++ && 'e'==*s++ && 'x'==*s++ && 'i'==*s++ && 't'==*s++ && 0==*s) {
0 0 if ('_'==*s++ && 'e'==*s++ && 'x'==*s++ && 'i'==*s++ && 't'==*s++ && 0==*s) {
0 0 if ('_'==*s++ && 'e'==*s++ && 'x'==*s++ && 'i'==*s++ && 't'==*s++ && 0==*s) {
0 0 if ('_'==*s++ && 'e'==*s++ && 'x'==*s++ && 'i'==*s++ && 't'==*s++ && 0==*s) {
0 0 if ('_'==*s++ && 'e'==*s++ && 'x'==*s++ && 'i'==*s++ && 't'==*s++ && 0==*s) {
0 0 if ('_'==*s++ && 'e'==*s++ && 'x'==*s++ && 'i'==*s++ && 't'==*s++ && 0==*s) {
2465 0 2733 if (profile_slowops == 1) { /* 1 == put slowops into 1 package */
2472 362 2371 if (!slowop_name_cache)
2475 0 2733 if (!opname)
2479 557 2176 if(!SvOK(sv)) {
557 0 if(!SvOK(sv)) {
557 0 if(!SvOK(sv)) {
2484 0 557 SvCUR_set(sv, 5 + len);
0 0 SvCUR_set(sv, 5 + len);
0 557 SvCUR_set(sv, 5 + len);
0 0 SvCUR_set(sv, 5 + len);
0 0 SvCUR_set(sv, 5 + len);
0 557 SvCUR_set(sv, 5 + len);
0 0 SvCUR_set(sv, 5 + len);
2488 2733 0 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
2733 0 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
2733 0 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
0 2733 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
0 0 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
2733 0 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
0 2733 subr_entry->called_subpkg_pv = CopSTASHPV(PL_curcop);
2496 0 2733 if (OP_ACCEPT == op_type)
2506 65594 0 file = OutCopFILE(prev_cop);
2509 1660 63934 : get_file_id(aTHX_ file, strlen(file), NYTP_FIDf_VIA_SUB);
2513 168 65426 if (clone_subr_entry) {
2523 65426 0 if (profile_findcaller /* user wants us to calculate each time */
2524 63631 1795 || !caller_subr_entry /* we don't have a caller struct */
2525 63631 0 || !caller_subr_entry->called_subpkg_pv /* we don't have caller details */
2526 63631 0 || !caller_subr_entry->called_subnam_sv
2527 0 63631 || !SvOK(caller_subr_entry->called_subnam_sv)
0 0 || !SvOK(caller_subr_entry->called_subnam_sv)
0 0 || !SvOK(caller_subr_entry->called_subnam_sv)
2544 1687 108 if (caller_cv == PL_main_cv) {
2555 100 8 else if (caller_cv == 0) {
2566 0 8 if (!egv)
2569 8 0 if (gv && (stash_hv = GvSTASH(gv))) {
8 0 if (gv && (stash_hv = GvSTASH(gv))) {
2570 8 0 subr_entry->caller_subpkg_pv = HvNAME(stash_hv);
8 0 subr_entry->caller_subpkg_pv = HvNAME(stash_hv);
0 8 subr_entry->caller_subpkg_pv = HvNAME(stash_hv);
0 0 subr_entry->caller_subpkg_pv = HvNAME(stash_hv);
8 0 subr_entry->caller_subpkg_pv = HvNAME(stash_hv);
0 8 subr_entry->caller_subpkg_pv = HvNAME(stash_hv);
2574 0 0 logwarn("Can't determine name of calling sub (GV %p, Stash %p, CV flags %d) at %s line %d\n",
2583 0 1795 found_caller_by = (profile_findcaller) ? "" : "(calculated)";
2587 0 63631 int caller_is_op = caller_se->called_is_xs && strEQ(caller_se->called_is_xs,"sop");
0 0 int caller_is_op = caller_se->called_is_xs && strEQ(caller_se->called_is_xs,"sop");
2605 0 65594 if (trace_level >= 4) {
2606 0 0 logwarn("%2u >> %s at %u:%d from %s::%s %s %s\n",
2624 4625 60969 if (opt_calls >= 2 && out) {
4625 0 if (opt_calls >= 2 && out) {
2654 68882 7511 OPCODE op_type = (is_slowop || (opcode) PL_op->op_type == OP_GOTO) ? (opcode) PL_op->op_type : OP_ENTERSUB;
264 68618 OPCODE op_type = (is_slowop || (opcode) PL_op->op_type == OP_GOTO) ? (opcode) PL_op->op_type : OP_ENTERSUB;
2664 76393 0 if (!profile_subs /* not profiling subs */
2666 66836 9557 || !is_profiling
2669 63903 2933 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
63881 22 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
63881 0 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
63881 0 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
2670 63287 594 || sub_sv == DB_END_cv || sub_sv == DB_fin_cv))
62693 594 || sub_sv == DB_END_cv || sub_sv == DB_fin_cv))
2672 200 65426 || (op_type==OP_GOTO &&
168 32 || (op_type==OP_GOTO &&
2673 168 0 ( !(SvROK(sub_sv) && SvTYPE(SvRV(sub_sv)) == SVt_PVCV)
2674 0 168 || subr_entry_ix == -1) /* goto out of sub whose entry wasn't profiled */
2683 76 65518 if (!profile_stmts) {
2688 0 65594 if (trace_level >= 99) {
2703 65426 168 if (op_type != OP_GOTO) {
2746 168 0 subr_entry_t *src = subr_entry_ix_ptr(subr_entry_ix);
2773 65541 0 subr_entry = subr_entry_ix_ptr(this_subr_entry_ix);
2776 0 65541 assert(subr_entry);
2777 0 65541 assert(subr_entry->caller_fid < fidhash.next_id);
2783 32 65509 if (subr_entry->already_counted) {
2784 0 32 if (trace_level >= 9)
2785 0 0 logwarn("%2u -- %s::%s already counted %s\n",
2788 0 0 (subr_entry->called_subnam_sv && SvOK(subr_entry->called_subnam_sv))
0 0 (subr_entry->called_subnam_sv && SvOK(subr_entry->called_subnam_sv))
0 0 (subr_entry->called_subnam_sv && SvOK(subr_entry->called_subnam_sv))
2789 0 0 ? SvPV_nolen(subr_entry->called_subnam_sv)
2792 0 32 assert(subr_entry->already_counted < 3);
2796 62824 2685 if (is_slowop) {
2803 168 62656 if (op_type == OP_GOTO) {
2805 16 152 is_xs = (CvISXSUB(called_cv)) ? "xsub" : NULL;
2808 16107 46549 if (op != next_op) { /* have entered a sub */
2819 0 46549 if (!called_cv && gv) { /* XXX no test case for this */
0 0 if (!called_cv && gv) { /* XXX no test case for this */
2820 0 0 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
2822 0 0 if (trace_level >= 0)
2823 0 0 logwarn("Assuming called sub is named %s::%s at %s line %d (please report as a bug)\n",
0 0 logwarn("Assuming called sub is named %s::%s at %s line %d (please report as a bug)\n",
2830 62824 0 if (called_cv && CvGV(called_cv)) {
62824 0 if (called_cv && CvGV(called_cv)) {
2833 62824 0 if (SvTYPE(gv) == SVt_PVGV && GvSTASH(gv)) {
62824 0 if (SvTYPE(gv) == SVt_PVGV && GvSTASH(gv)) {
2837 62824 0 stash_name = HvNAME(GvSTASH(gv));
62824 0 stash_name = HvNAME(GvSTASH(gv));
0 62824 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
62824 0 stash_name = HvNAME(GvSTASH(gv));
0 62824 stash_name = HvNAME(GvSTASH(gv));
2840 0 0 else if (trace_level >= 1) {
2841 0 0 logwarn("NYTProf is confused about CV %p called as %s at %s line %d (please report as a bug)\n",
0 0 logwarn("NYTProf is confused about CV %p called as %s at %s line %d (please report as a bug)\n",
2844 0 0 if (trace_level >= 2) {
2852 0 62824 if (!SvOK(subr_entry->called_subnam_sv)) {
0 0 if (!SvOK(subr_entry->called_subnam_sv)) {
0 0 if (!SvOK(subr_entry->called_subnam_sv)) {
2853 0 0 const char *what = (is_xs) ? is_xs : "sub";
2855 0 0 if (!called_cv) { /* should never get here as pp_entersub would have croaked */
2856 0 0 logwarn("unknown entersub %s '%s' (please report this as a bug)\n", what, SvPV_nolen(sub_sv));
2857 0 0 stash_name = CopSTASHPV(PL_curcop);
0 0 stash_name = CopSTASHPV(PL_curcop);
0 0 stash_name = CopSTASHPV(PL_curcop);
0 0 stash_name = CopSTASHPV(PL_curcop);
0 0 stash_name = CopSTASHPV(PL_curcop);
0 0 stash_name = CopSTASHPV(PL_curcop);
0 0 stash_name = CopSTASHPV(PL_curcop);
2858 0 0 sv_setpvf(subr_entry->called_subnam_sv, "__UNKNOWN__[%s,%s])", what, SvPV_nolen(sub_sv));
2861 0 0 stash_name = HvNAME(CvSTASH(called_cv));
0 0 stash_name = HvNAME(CvSTASH(called_cv));
0 0 stash_name = HvNAME(CvSTASH(called_cv));
0 0 stash_name = HvNAME(CvSTASH(called_cv));
0 0 stash_name = HvNAME(CvSTASH(called_cv));
0 0 stash_name = HvNAME(CvSTASH(called_cv));
2863 0 0 if (trace_level)
2864 0 0 logwarn("unknown entersub %s assumed to be anon called_cv '%s'\n",
2867 0 0 if (trace_level >= 9)
2872 530 62294 if (*SvPVX(subr_entry->called_subnam_sv) == 'B')
2876 62824 0 subr_entry->called_cv_depth = (called_cv) ? CvDEPTH(called_cv)+(is_xs?1:0) : 0;
2882 49250 16259 if (subr_entry->called_is_xs
2883 46260 2990 && subr_entry->called_subpkg_pv[0] == 'D'
2884 96 46164 && subr_entry->called_subpkg_pv[1] == 'B'
2885 96 0 && subr_entry->called_subpkg_pv[2] == '\0'
2888 96 0 char *p = SvPV(subr_entry->called_subnam_sv, len);
2890 0 96 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
0 0 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
0 0 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
0 0 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
0 0 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
0 0 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
0 0 if(*p == '_' && (memEQs(p, len, "_CHECK") || memEQs(p, len, "_INIT") || memEQs(p, len, "_END"))) {
2896 0 65509 if (!profile_subs)
2899 0 65509 if (trace_level >= 4) {
2900 0 0 logwarn("%2u ->%4s %s::%s from %s::%s @%u:%u (d%d, oh %" NVff "t, sub %" NVff "s) #%lu\n",
0 0 logwarn("%2u ->%4s %s::%s from %s::%s @%u:%u (d%d, oh %" NVff "t, sub %" NVff "s) #%lu\n",
0 0 logwarn("%2u ->%4s %s::%s from %s::%s @%u:%u (d%d, oh %" NVff "t, sub %" NVff "s) #%lu\n",
2904 0 0 subr_entry->called_subnam_sv ? SvPV_nolen(subr_entry->called_subnam_sv) : "(null)",
2906 0 0 subr_entry->caller_subnam_sv ? SvPV_nolen(subr_entry->caller_subnam_sv) : "(null)",
2915 49250 16259 if (subr_entry->called_is_xs) {
2964 0 24 if (PL_op->op_type == OP_EXEC)
2983 0 694 if (profile_usecputime) {
2988 0 694 if (trace_level)
2989 0 0 logwarn("~ enable_profile (previously %s) to %s\n",
0 0 logwarn("~ enable_profile (previously %s) to %s\n",
2991 0 0 (file && *file) ? file : PROF_output_file);
2995 32 662 if (file && *file && strNE(file, PROF_output_file)) {
32 0 if (file && *file && strNE(file, PROF_output_file)) {
32 0 if (file && *file && strNE(file, PROF_output_file)) {
3001 678 16 if (!out) {
3007 338 356 if (opt_use_db_sub) /* set PL_DBsingle if required */
3028 694 37 if (is_profiling) {
3029 338 356 if (opt_use_db_sub)
3031 691 3 if (out)
3035 0 731 if (trace_level)
3036 0 0 logwarn("~ disable_profile (previously %s, pid %d, trace %" IVdf ")\n",
3055 0 679 if (trace_level >= 1)
3060 341 338 if (!profile_leave || opt_use_db_sub)
161 180 if (!profile_leave || opt_use_db_sub)
3067 0 679 if (trace_level >= 2) {
3073 0 679 if (HvKEYS(sub_callers_hv)) {
613 66 if (HvKEYS(sub_callers_hv)) {
3099 630 0 if (profile_clock == -1) { /* auto select */
3107 0 630 if (clock_gettime(profile_clock, &start_time) != 0) {
3108 0 0 if (trace_level)
3113 0 0 if (clock_gettime(profile_clock, &start_time) != 0)
3172 306 324 if (opt_use_db_sub) {
3177 630 0 if (profile_opts & NYTP_OPTf_OPTIMIZE)
3181 322 308 if (profile_opts & NYTP_OPTf_SAVESRC) {
3186 0 630 if (!opt_nameevals)
3188 0 630 if (!opt_nameanonsubs)
3191 0 630 if (opt_perldb) /* force a PL_perldb value - for testing only, not documented */
3196 0 630 if (trace_level)
3201 0 630 if (get_hv("DB::sub", 0) == NULL) {
3222 610 20 if (profile_stmts && !opt_use_db_sub) {
314 296 if (profile_stmts && !opt_use_db_sub) {
3228 166 148 if (profile_leave) {
3248 610 20 if (profile_slowops) {
3256 630 0 if (!sub_callers_hv)
3258 630 0 if (!pkg_fids_hv)
3263 628 2 if (!PL_checkav) PL_checkav = newAV();
3264 628 2 if (!PL_initav) PL_initav = newAV();
3265 628 2 if (!PL_endav) PL_endav = newAV();
3272 93 537 if (profile_start == NYTP_START_BEGIN) {
3278 0 630 if (PL_minus_c) {
3287 0 630 if (trace_level >= 1)
3303 0 4012320 unsigned int fid = (eval_line_num) ? eval_file_num : file_num;
3306 6762 4005558 if (!SvROK(line_time_rvav)) /* autoviv */
3319 25706 3986614 if (!SvROK(time_rvav)) { /* autoviv */
3325 0 25706 if (embed_fid_line) { /* used to optimize reporting */
3334 3986614 0 sv_setnv(time_sv, time + SvNV(time_sv));
3335 3033284 953330 if (count) {
3337 3033284 0 (count == 1) ? sv_inc(sv) : sv_setiv(sv, (IV)time + SvIV(sv));
0 0 (count == 1) ? sv_inc(sv) : sv_setiv(sv, (IV)time + SvIV(sv));
3356 36393 0 char *colon = rninstr(sub_name, sub_name+(len > 0 ? len : -len), delim, delim+2);
3357 36393 0 if (!colon || colon == sub_name)
0 36393 if (!colon || colon == sub_name)
3377 0 36393 if (!pkg_len)
3380 29641 6752 if (!svp)
3389 36055 0 char *filename = SvPV_nolen(sv);
3394 36055 0 if (first && filename_len_p)
35559 496 if (first && filename_len_p)
3397 0 36055 if (!first++) /* start of first number, if colon was found */
3399 0 36055 if ('-' == *first) { /* first number is negative */
3405 36055 0 if (!last || !grok_number(first, last-first, first_line_p))
0 36055 if (!last || !grok_number(first, last-first, first_line_p))
3407 0 36055 if (first_is_neg) {
3413 0 36055 if ('-' == *++last) { /* skip past dash, is next char a minus? */
3418 35559 496 if (last_line_p)
3434 0 675 if (trace_level >= 1)
3443 35013 675 while (NULL != (file_lines_sv = hv_iternextsv(hv, &sub_name, &sub_name_len))) {
3445 35013 0 char *filename = SvPV(file_lines_sv, file_lines_len);
3464 34228 785 if (file_lines_len > 4
3465 2628 31600 && filename[file_lines_len - 2] == '-' && filename[file_lines_len - 1] == '0'
517 2111 && filename[file_lines_len - 2] == '-' && filename[file_lines_len - 1] == '0'
3466 0 517 && filename[file_lines_len - 4] != ':' && filename[file_lines_len - 3] != '0')
0 0 && filename[file_lines_len - 4] != ':' && filename[file_lines_len - 3] != '0')
3470 35013 0 filename_len = (first) ? first - filename : 0;
3475 29553 5460 if (!pkg_filename_sv) /* we don't know package */
3479 1002 4458 if (SvOK(pkg_filename_sv)) {
1002 0 if (SvOK(pkg_filename_sv)) {
0 1002 if (SvOK(pkg_filename_sv)) {
3481 4458 0 char *cached_filename = SvPV(pkg_filename_sv, cached_len);
3487 3933 525 if (filename_len > 0
3488 110 3823 && filename_is_eval(cached_filename, cached_len)
3489 52 58 && !filename_is_eval(filename, filename_len)
3491 0 52 if (trace_level >= 3)
3501 0 4406 if (trace_level >= 3
3502 0 0 && strnNE(SvPV_nolen(pkg_filename_sv), filename, filename_len)
0 0 && strnNE(SvPV_nolen(pkg_filename_sv), filename, filename_len)
3503 0 0 && !filename_is_eval(filename, filename_len)
3506 0 0 logwarn("Package '%.*s' (of sub %.*s) not associated with '%.*s' because already associated with '%s'\n",
3517 260 742 if (!filename_len) {
3518 0 260 if (trace_level >= 3)
3530 0 742 if (trace_level >= 3)
3535 594 81 if (main_runtime_used) { /* Create fake entry for main::RUNTIME sub */
3542 88 506 if (!pkg_filename_sv) { /* no subs in main, so guess */
3545 1 505 else if (SvOK(pkg_filename_sv)) {
1 0 else if (SvOK(pkg_filename_sv)) {
0 1 else if (SvOK(pkg_filename_sv)) {
3554 0 675 if (trace_level >= 1)
3555 0 0 logwarn("~ writing sub line ranges of %ld subs\n", (long)HvKEYS(hv));
3561 35559 675 while (NULL != (file_lines_sv = hv_iternextsv(hv, &sub_name, &sub_name_len))) {
3563 35559 0 char *filename = SvPV_nolen(file_lines_sv);
3567 0 35559 if (!parse_DBsub_value(aTHX_ file_lines_sv, &filename_len, &first_line, &last_line, sub_name)) {
3572 786 34773 if (!filename_len) { /* no filename, so presumably a fake entry for xsub */
3575 786 0 if (pkg_filename_sv && SvOK(pkg_filename_sv)) {
129 657 if (pkg_filename_sv && SvOK(pkg_filename_sv)) {
129 0 if (pkg_filename_sv && SvOK(pkg_filename_sv)) {
0 129 if (pkg_filename_sv && SvOK(pkg_filename_sv)) {
3576 657 0 filename = SvPV(pkg_filename_sv, filename_len);
3577 0 657 if (trace_level >= 2)
3584 29514 6045 if (!fid) {
3585 0 29514 if (trace_level >= 4)
3591 0 6045 if (trace_level >= 2)
3609 0 675 if (!sub_callers_hv)
3611 0 675 if (trace_level >= 1)
3612 0 0 logwarn("~ writing sub callers for %ld subs\n", (long)HvKEYS(sub_callers_hv));
3615 3116 675 while (NULL != (fid_line_rvhv = hv_iternextsv(sub_callers_hv, &called_subname, &called_subname_len))) {
3621 3116 0 if (!SvROK(fid_line_rvhv) || SvTYPE(SvRV(fid_line_rvhv))!=SVt_PVHV) {
0 3116 if (!SvROK(fid_line_rvhv) || SvTYPE(SvRV(fid_line_rvhv))!=SVt_PVHV) {
3635 5547 3116 while (NULL != (sv = hv_iternextsv(fid_lines_hv, &caller_subname, &caller_subname_len))) {
3645 0 5547 if (!fid_line_start) {
3649 0 5547 if (2 != sscanf(fid_line_start+1, "%u:%u", &fid, &line)) {
3657 0 5547 if (line > 2147483600) { /* ~2**31 */
3681 5547 0 if (sc[NYTP_SCi_INCL_RTIME] < 0.0 || sc[NYTP_SCi_EXCL_RTIME] < 0.0) {
0 5547 if (sc[NYTP_SCi_INCL_RTIME] < 0.0 || sc[NYTP_SCi_EXCL_RTIME] < 0.0) {
3683 0 0 if (trace_level) {
3690 0 5547 if (trace) {
3691 0 0 if (!fid && !line) {
0 0 if (!fid && !line) {
3703 0 675 if (negative_time_calls) {
3719 0 675 if (trace_level >= 1)
3722 1577 675 for (e = (fid_hash_entry*)fidhash.first_inserted; e; e = (fid_hash_entry*)e->he.next_inserted) {
3727 246 1331 if ( !(e->fid_flags & NYTP_FIDf_HAS_SRC) ) {
3730 26 220 if (src_av && av_len(src_av) > -1) /* sanity check */
0 26 if (src_av && av_len(src_av) > -1) /* sanity check */
3732 246 0 if (trace_level >= 3 || *hint)
0 246 if (trace_level >= 3 || *hint)
3737 0 1331 if (!src_av) { /* sanity check */
3745 320 1011 if ( !(e->fid_flags & NYTP_FIDf_SAVE_SRC) ) {
3751 0 1011 if (trace_level >= 3)
3754 28177 1011 for (line = 1; line <= lines; ++line) { /* lines start at 1 */
3757 27401 776 const char *src = (svp) ? SvPV(*svp, len) : "";
27401 0 const char *src = (svp) ? SvPV(*svp, len) : "";
3761 0 28177 if (trace_level >= 8) {
3762 0 0 logwarn("fid %d src line %d: %s%s", e->he.id, line, src,
3763 0 0 (len && src[len-1]=='\n') ? "" : "\n");
3769 0 675 if (trace_level >= 2)
3779 23708 0 char *start = SvPV(sv, len);
3853 7972 7788 if (!SvROK(sv)) { /* autoviv */
3878 0 16898 if (trace_level >= 1)
3879 0 0 logwarn(": %.*s = '%s'\n", (int) text_len, text, SvPV_nolen(value_sv));
3965 0 318018 if (trace_level >= 8)
3968 0 318018 if (state->statement_discount)
3992 1337440 0 ticks = va_arg(args, I32);
3993 1337440 0 file_num = va_arg(args, unsigned int);
3994 1337440 0 line_num = va_arg(args, unsigned int);
3999 0 1337440 if (!SvROK(fid_info_rvav)) { /* should never happen */
4000 0 0 if (!SvOK(fid_info_rvav)) { /* only warn once */
0 0 if (!SvOK(fid_info_rvav)) { /* only warn once */
0 0 if (!SvOK(fid_info_rvav)) { /* only warn once */
4006 0 1337440 if (trace_level >= 8) {
4008 0 0 if (file_num != state->last_file_num && SvROK(fid_info_rvav))
0 0 if (file_num != state->last_file_num && SvROK(fid_info_rvav))
4009 0 0 new_file_name = SvPV_nolen(*av_fetch((AV *)SvRV(fid_info_rvav), NYTP_FIDi_FILENAME, 1));
4019 1337440 0 if (tag == nytp_time_block) {
4020 1337440 0 unsigned int block_line_num = va_arg(args, unsigned int);
4021 0 1337440 unsigned int sub_line_num = va_arg(args, unsigned int);
4023 966 1336474 if (!state->fid_block_time_av)
4030 966 1336474 if (!state->fid_sub_time_av)
4037 0 1337440 if (trace_level >= 8)
4069 2422 0 file_num = va_arg(args, unsigned int);
4070 2422 0 eval_file_num = va_arg(args, unsigned int);
4071 2422 0 eval_line_num = va_arg(args, unsigned int);
4072 2422 0 fid_flags = va_arg(args, unsigned int);
4073 0 2422 file_size = va_arg(args, unsigned int);
4074 0 2422 file_mtime = va_arg(args, unsigned int);
4075 0 2422 filename_sv = va_arg(args, SV *);
4079 0 2422 if (trace_level >= 2) {
4082 0 0 if (eval_file_num || eval_line_num)
0 0 if (eval_file_num || eval_line_num)
4087 0 0 logwarn("Fid %2u is %s%s 0x%x(%s)\n",
4099 2422 0 if (SvOK(*svp)) { /* should never happen, perhaps file is corrupt */
2422 0 if (SvOK(*svp)) { /* should never happen, perhaps file is corrupt */
0 2422 if (SvOK(*svp)) { /* should never happen, perhaps file is corrupt */
4102 0 0 logwarn("Fid %d redefined from %s to %s\n", file_num,
0 0 logwarn("Fid %d redefined from %s to %s\n", file_num,
4108 1112 1310 if (eval_file_num) {
4112 0 1112 if (!SvROK(eval_fi)) { /* should never happen */
4114 0 0 logwarn("Eval '%s' (fid %d, flags:%s) has unknown invoking fid %d\n",
4126 576 536 if (!SvROK(has_evals)) /* autoviv */
4134 1112 1310 av_store(av, NYTP_FIDi_EVAL_FID, (eval_file_num) ? newSVuv(eval_file_num) : &PL_sv_no);
4135 1112 1310 av_store(av, NYTP_FIDi_EVAL_LINE, (eval_file_num) ? newSVuv(eval_line_num) : &PL_sv_no);
4159 32560 0 file_num = va_arg(args, unsigned int);
4160 32560 0 line_num = va_arg(args, unsigned int);
4161 32560 0 src = va_arg(args, SV *);
4166 1266 31294 if (!av_exists(state->fid_srclines_av, file_num)) {
4176 0 32560 if (trace_level >= 8) {
4177 0 0 logwarn("Fid %2u:%u src: %s\n", file_num, line_num, SvPV_nolen(src));
4199 7812 0 fid = va_arg(args, unsigned int);
4200 7812 0 first_line = va_arg(args, unsigned int);
4201 7812 0 last_line = va_arg(args, unsigned int);
4202 7812 0 subname_sv = va_arg(args, SV *);
4208 7812 0 subname_pv = SvPV(subname_sv, subname_len);
4209 0 7812 if (trace_level >= 2)
4214 7812 0 if (SvOK(*av_fetch(av, NYTP_SIi_FID, 1))) {
7812 0 if (SvOK(*av_fetch(av, NYTP_SIi_FID, 1))) {
0 7812 if (SvOK(*av_fetch(av, NYTP_SIi_FID, 1))) {
4219 0 0 if (!instr(subname_pv, "__ANON__[(eval"))
4226 0 0 if (fid > SvUV(*av_fetch(av, NYTP_SIi_FID, 1)))
0 0 if (fid > SvUV(*av_fetch(av, NYTP_SIi_FID, 1)))
4234 7812 0 if (!skip_subinfo_store) {
4268 7948 0 fid = va_arg(args, unsigned int);
4269 7948 0 line = va_arg(args, unsigned int);
4270 7948 0 count = va_arg(args, unsigned int);
4271 7948 0 incl_time = va_arg(args, NV);
4272 7948 0 excl_time = va_arg(args, NV);
4273 7948 0 reci_time = va_arg(args, NV);
4274 7948 0 rec_depth = va_arg(args, unsigned int);
4275 0 7948 called_subname_sv = va_arg(args, SV *);
4276 0 7948 caller_subname_sv = va_arg(args, SV *);
4283 0 7948 if (trace_level >= 6)
4284 0 0 logwarn("Sub %s called by %s %u:%u: count %d, incl %" NVff ", excl %" NVff "\n",
0 0 logwarn("Sub %s called by %s %u:%u: count %d, incl %" NVff ", excl %" NVff "\n",
4294 4112 3836 if (!SvROK(sv)) /* autoviv */
4299 5910 2038 if (!SvROK(sv)) /* autoviv */
4305 6838 1110 if (fid) {
4311 6822 16 if (!SvROK(sv)) /* autoviv */
4313 0 16 else if (trace_level)
4317 0 0 logwarn("Merging extra sub caller info for %s called at %d:%d\n",
4322 6822 16 sv_setuv(sv, (SvOK(sv)) ? SvUV(sv) + count : count);
6822 0 sv_setuv(sv, (SvOK(sv)) ? SvUV(sv) + count : count);
0 6822 sv_setuv(sv, (SvOK(sv)) ? SvUV(sv) + count : count);
0 16 sv_setuv(sv, (SvOK(sv)) ? SvUV(sv) + count : count);
4324 6822 16 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + incl_time : incl_time);
6822 0 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + incl_time : incl_time);
0 6822 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + incl_time : incl_time);
16 0 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + incl_time : incl_time);
4326 6822 16 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + excl_time : excl_time);
6822 0 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + excl_time : excl_time);
0 6822 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + excl_time : excl_time);
16 0 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + excl_time : excl_time);
4332 6822 16 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + reci_time : reci_time);
6822 0 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + reci_time : reci_time);
0 6822 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + reci_time : reci_time);
16 0 sv_setnv(sv, (SvOK(sv)) ? SvNV(sv) + reci_time : reci_time);
4334 6822 16 if (!SvOK(sv) || SvUV(sv) < rec_depth) /* max() */
6822 0 if (!SvOK(sv) || SvUV(sv) < rec_depth) /* max() */
0 6822 if (!SvOK(sv) || SvUV(sv) < rec_depth) /* max() */
0 16 if (!SvOK(sv) || SvUV(sv) < rec_depth) /* max() */
0 16 if (!SvOK(sv) || SvUV(sv) < rec_depth) /* max() */
4339 6822 16 if (!SvROK(sv)) /* autoviv */
4349 6058 780 if (!SvROK(fi)) /* autoviv */
4353 0 6838 AV *av2 = av_make(AvFILL(av)+1, AvARRAY(av));
4366 0 7948 sv_setuv(sv, count + (SvOK(sv) ? SvUV(sv) : 0));
0 0 sv_setuv(sv, count + (SvOK(sv) ? SvUV(sv) : 0));
0 0 sv_setuv(sv, count + (SvOK(sv) ? SvUV(sv) : 0));
0 7948 sv_setuv(sv, count + (SvOK(sv) ? SvUV(sv) : 0));
4368 0 7948 sv_setnv(sv, incl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
0 0 sv_setnv(sv, incl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
0 0 sv_setnv(sv, incl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
7948 0 sv_setnv(sv, incl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
4370 0 7948 sv_setnv(sv, excl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
0 0 sv_setnv(sv, excl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
0 0 sv_setnv(sv, excl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
7948 0 sv_setnv(sv, excl_time + (SvOK(sv) ? SvNV(sv) : 0.0));
4373 0 7948 if (!SvOK(sv) || rec_depth > SvUV(sv))
0 0 if (!SvOK(sv) || rec_depth > SvUV(sv))
0 0 if (!SvOK(sv) || rec_depth > SvUV(sv))
0 7948 if (!SvOK(sv) || rec_depth > SvUV(sv))
16 7932 if (!SvOK(sv) || rec_depth > SvUV(sv))
4376 0 7948 sv_setnv(sv, reci_time + (SvOK(sv) ? SvNV(sv) : 0.0));
0 0 sv_setnv(sv, reci_time + (SvOK(sv) ? SvNV(sv) : 0.0));
0 0 sv_setnv(sv, reci_time + (SvOK(sv) ? SvNV(sv) : 0.0));
7948 0 sv_setnv(sv, reci_time + (SvOK(sv) ? SvNV(sv) : 0.0));
4395 994 0 pid = va_arg(args, unsigned int);
4396 994 0 ppid = va_arg(args, unsigned int);
4397 994 0 start_time = va_arg(args, NV);
4405 0 994 if (trace_level)
4407 0 0 text, ppid, (IV)HvKEYS(state->live_pids_hv), start_time);
4426 994 0 pid = va_arg(args, unsigned int);
4427 994 0 end_time = va_arg(args, NV);
4434 0 994 if (!hv_delete(state->live_pids_hv, text, len, 0))
4437 0 994 if (trace_level)
4439 0 0 (IV)HvKEYS(state->live_pids_hv), state->profiler_end_time);
4464 8946 0 key = va_arg(args, char *);
4465 8946 0 key_len = va_arg(args, unsigned long);
4466 8946 0 key_utf8 = va_arg(args, unsigned int);
4468 8946 0 value = va_arg(args, char *);
4469 0 8946 value_len = va_arg(args, unsigned long);
4470 0 8946 value_utf8 = va_arg(args, unsigned int);
4474 0 8946 store_attrib_sv(aTHX_ state->attr_hv, key,
0 8946 store_attrib_sv(aTHX_ state->attr_hv, key,
4496 17892 0 key = va_arg(args, char *);
4497 17892 0 key_len = va_arg(args, unsigned long);
4498 17892 0 key_utf8 = va_arg(args, unsigned int);
4500 17892 0 value = va_arg(args, char *);
4501 0 17892 value_len = va_arg(args, unsigned long);
4502 0 17892 value_utf8 = va_arg(args, unsigned int);
4506 0 17892 value_sv = newSVpvn_flags(value, value_len, value_utf8 ? SVf_UTF8 : 0);
4507 0 17892 (void)hv_store(state->option_hv, key, key_utf8 ? -(I32)key_len : key_len, value_sv, 0);
4508 0 17892 if (trace_level >= 1)
4509 0 0 logwarn("! %.*s = '%s'\n", (int) key_len, key, SvPV_nolen(value_sv));
4554 0 591275 if (!arglist) {
4555 0 0 if (description)
4561 574667 16608 if (!state->cb[tag])
4564 0 16608 if (trace_level >= 9) {
4572 0 16608 PUSHMARK(SP);
4574 0 16608 XPUSHs(state->tag_names[tag]);
4576 47569 16608 while ((type = *arglist++)) {
4580 7204 5 unsigned int u = va_arg(args, unsigned int);
4583 0 7209 XPUSHs(cb_args[i++]);
4588 3 0 I32 i32 = va_arg(args, I32);
4591 0 3 XPUSHs(cb_args[i++]);
4596 14335 0 NV n = va_arg(args, NV);
4599 0 14335 XPUSHs(cb_args[i++]);
4604 7168 2 SV *sv = va_arg(args, SV *);
4607 0 7170 XPUSHs(cb_args[i++]);
4612 3 1 SV *sv = va_arg(args, SV *);
4614 0 4 XPUSHs(sv_2mortal(sv));
4619 18848 0 char *p = va_arg(args, char *);
4620 9425 9423 unsigned long len = va_arg(args, unsigned long);
4621 9425 9423 unsigned int utf8 = va_arg(args, unsigned int);
4624 0 18848 if (utf8)
4629 0 18848 XPUSHs(cb_args[i++]);
4638 0 16608 assert(i <= C_ARRAY_LENGTH(state->cb_args));
4715 0 1343 if (!NYTP_gets(in, &buffer, &buffer_len))
4717 0 1343 if (2 != sscanf(buffer, "NYTProf %d %d\n", &file_major, &file_minor))
4719 0 1343 if (file_major != NYTP_FILE_MAJOR_VERSION)
4723 0 1343 if (file_minor > NYTP_FILE_MINOR_VERSION)
4728 349 994 if (callbacks[nytp_version])
4736 1343 2355800 if (NYTP_read_unchecked(in, &c, sizeof(c)) != sizeof(c)) {
4737 1343 0 if (NYTP_eof(in))
4744 0 2355800 if (trace_level >= 9)
4766 1804522 0 if (c == NYTP_TAG_TIME_BLOCK) {
4814 2389 6900 if (callbacks[nytp_sub_entry])
4826 7165 20910 if (callbacks[nytp_sub_return])
4887 0 12087 if (NULL == end)
4891 0 12087 if ((NULL == (value = (char *)memchr(buffer, '=', end - buffer)))) {
4902 1343 10744 if (memEQs(buffer, key_end - buffer, "ticks_per_sec")) {
1343 0 if (memEQs(buffer, key_end - buffer, "ticks_per_sec")) {
4905 1343 9401 else if (memEQs(buffer, key_end - buffer, "nv_size")) {
1343 0 else if (memEQs(buffer, key_end - buffer, "nv_size")) {
4906 0 1343 if (sizeof(NV) != atoi(value))
4918 0 24174 if (NULL == end)
4922 0 24174 if ((NULL == (value = (char *)memchr(buffer, '=', end - buffer)))) {
4938 0 2098 if (!end)
4942 582 1516 if (callbacks[nytp_comment])
4946 0 2098 if (trace_level >= 1)
4954 233 522 if (callbacks[nytp_start_deflate]) {
5008 0 994 if (HvKEYS(state.live_pids_hv)) {
0 994 if (HvKEYS(state.live_pids_hv)) {
5010 0 0 (IV)HvKEYS(state.live_pids_hv),
5022 212 782 if (state.statement_discount) /* discard unused statement_discount */
5036 994 0 if (state.profiler_end_time
5037 0 994 && state.total_stmts_duration > state.profiler_duration * 1.1
5058 0 994 if (show_summary_stats)
5079 966 28 if (state.fid_block_time_av) {
5084 966 28 if (state.fid_sub_time_av) {
5104 348 1 if (SvTYPE(cb) == SVt_PVHV) {
5111 0 348 if (svp) {
5112 0 0 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 0 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
5116 1 0 } else if (SvTYPE(cb) == SVt_PVCV) {
5130 6282 349 while (--i) {
5131 5584 698 if (callback_info[i].args) {
5141 6264 18 if (cb_hv) {
5145 1044 5220 if (svp) {
5146 0 1044 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 0 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
5155 3839 349 for (i = 0; i < C_ARRAY_LENGTH(state.cb_args); i++)
5239 60660 1348 } while (++constant < end);
5251 0 32441 XSRETURN_IV(trace_level);
5262 46097 17 if (!action)
5263 0 46097 XSRETURN(0);
5264 16 1 if (SvROK(action) && SvTYPE(SvRV(action))==SVt_PVCV) {
16 0 if (SvROK(action) && SvTYPE(SvRV(action))==SVt_PVCV) {
5266 0 16 PUSHMARK(SP);
5269 1 0 else if (strEQ(SvPV_nolen(action),"eval"))
0 1 else if (strEQ(SvPV_nolen(action),"eval"))
5270 0 0 eval_pv(SvPV_nolen(arg), TRUE);
5271 1 0 else if (strEQ(SvPV_nolen(action),"die"))
1 0 else if (strEQ(SvPV_nolen(action),"die"))
5273 0 0 logwarn("example_xsub: unknown action '%s'\n", SvPV_nolen(action));
5305 0 0 if (!last_pid)
5314 0 0 EXTEND(SP, 4);
5330 260288 0 if (opt_use_db_sub)
5352 64 0 if (!RETVAL) {
5375 537 0 if (profile_start == NYTP_START_INIT) {
5378 0 0 else if (profile_start == NYTP_START_END) {
5380 0 0 if (trace_level >= 1)
5382 0 0 if (!PL_endav)
5388 0 537 if (trace_level >= 1)
5404 0 630 if (!PL_checkav) PL_checkav = newAV();
5405 0 630 if (!PL_endav) PL_endav = newAV();
5406 0 630 av_push((ix == 1 ? PL_checkav : PL_endav), SvREFCNT_inc(finish_profile_cv));
5411 0 630 if (trace_level >= 1)
5412 0 0 logwarn("~ %s done\n", ix == 1 ? "CHECK" : "END");
5428 0 1343 if (trace_level)
5431 0 1343 if (in == NULL) {
5434 1343 0 if (cb && SvROK(cb)) {
349 994 if (cb && SvROK(cb)) {
5442 0 1343 if ((result = NYTP_close(in, 0)))