Branch Coverage

NYTProf.xs
Criterion Covered Total %
branch 998 2028 49.2


line true false branch
513 0 0 if (!logfh)
571 0 705 const char *argv0 = SvPV(sv, len);
573 0 705 assert(out != NULL);
603 11985 705 } while (++opt_p < opt_end);
608 385 320 if (compression_level) {
628 0 99080 if (NYTP_TAG_STRING != tag && NYTP_TAG_STRING_UTF8 != tag)
0 0 if (NYTP_TAG_STRING != tag && NYTP_TAG_STRING_UTF8 != tag)
633 57830 41250 if (sv) {
634 57830 0 SvGROW(sv, len+1); /* forces SVt_PV */
3225 54605 SvGROW(sv, len+1); /* forces SVt_PV */
641 99080 0 buf = SvPV_nolen(sv);
643 0 99080 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
0 99080 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
0 99080 SvCUR_set(sv, len);
0 0 SvCUR_set(sv, len);
646 0 99080 if (NYTP_TAG_STRING_UTF8 == tag)
649 0 99080 if (trace_level >= 19) {
652 0 0 if (buf[len2-1] == '\n') {
656 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),
673 1627743 42511 while (len--) {
686 150 60 if (memEQ(filename, prefix, prefix_len)
687 150 0 && isdigit((int)filename[prefix_len])) {
690 56 150 while (isdigit((int)*s))
692 150 0 if (s[0] == ')')
704 157 3887 if (filename_len < 6)
707 3753 134 if (filename[filename_len - 1] != ']' && filename[filename_len - 1] != ')')
3707 46 if (filename[filename_len - 1] != ']' && filename[filename_len - 1] != ')')
709 150 30 if (eval_prefix(filename, "(eval ", 6))
711 0 30 if (eval_prefix(filename, "(re_eval ", 9))
730 11848 30848 while(NULL != found) {
732 11373 475 if (found->key_len == key_len
733 11373 0 && memEQ(found->key, key, key_len)
739 290 185 if (NULL == found->next_entry) {
740 2 288 if (insert) {
765 1622 29226 if (insert) {
778 630 992 if (!hashtable->first_inserted)
798 0 0 if (verbosity)
800 0 0 if (!hashtable->table)
803 0 0 for (idx=0; idx < hashtable->size; ++idx) {
807 0 0 if (!found)
811 0 0 while (NULL != found) {
816 0 0 if (verbosity)
818 0 0 if (chain_len > max_chain_len)
834 580 1087 if (fid_info->key_abs) {
857 0 1667 if (file_name_copy)
869 516 1076 if (fid_info->key_abs) {
874 1460 132 if (len > 3 && memEQs(file_name + len - 3, 3, ".pm")) {
251 1209 if (len > 3 && memEQs(file_name + len - 3, 3, ".pm")) {
886 16 235 if (PerlLIO_lstat(pmc, &pmcstat) == 0) {
891 16 0 if (PerlLIO_lstat(file_name, &pmstat) < 0 ||
16 0 if (PerlLIO_lstat(file_name, &pmstat) < 0 ||
906 0 0 if (fid_flags & NYTP_FIDf_IS_EVAL) my_strlcat(buf, "eval,", len);
907 0 0 if (fid_flags & NYTP_FIDf_IS_FAKE) my_strlcat(buf, "fake,", len);
908 0 0 if (fid_flags & NYTP_FIDf_IS_AUTOSPLIT) my_strlcat(buf, "autosplit,", len);
909 0 0 if (fid_flags & NYTP_FIDf_IS_ALIAS) my_strlcat(buf, "alias,", len);
910 0 0 if (fid_flags & NYTP_FIDf_IS_PMC) my_strlcat(buf, "pmc,", len);
911 0 0 if (fid_flags & NYTP_FIDf_VIA_STMT) my_strlcat(buf, "viastmt,", len);
912 0 0 if (fid_flags & NYTP_FIDf_VIA_SUB) my_strlcat(buf, "viasub,", len);
913 0 0 if (fid_flags & NYTP_FIDf_HAS_SRC) my_strlcat(buf, "hassrc,", len);
914 0 0 if (fid_flags & NYTP_FIDf_SAVE_SRC) my_strlcat(buf, "savesrc,", len);
915 0 0 if (*buf) /* trim trailing comma */
925 75 705 while (e) {
926 75 0 if ( !(e->fid_flags & NYTP_FIDf_IS_ALIAS) )
945 0 32 base_start = (base_start) ? base_start+1 : file_name;
948 0 32 if (trace_level >= 3)
952 144 32 for ( ; e; e = (fid_hash_entry*)e->he.next_inserted) {
955 32 112 if (e->fid_flags & NYTP_FIDf_IS_AUTOSPLIT)
957 0 112 if (trace_level >= 4)
961 32 80 if (e->he.key_len < base_len)
965 48 32 if (memcmp(e_name, base_start, base_len) != 0)
968 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)
971 0 32 if (trace_level >= 3)
1014 40887 1624 if (1 != hash_op(&fidhash, file_name, file_name_len, (Hash_entry**)&found, (bool)(created_via ? 1 : 0))) {
1016 0 40887 if (trace_level >= 7) {
1017 0 0 if (found)
1021 11373 29514 return (found) ? found->he.id : 0;
1024 994 630 if (fidhash.prior_inserted)
1032 679 945 if ('(' == file_name[0]) { /* first char is '(' */
1033 661 18 if (']' == file_name[file_name_len-1]) { /* last char is ']' */
1039 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 */
1049 16 2 else if (filename_is_eval(file_name, file_name_len)) {
1063 947 677 if (!found->eval_fid) {
1065 0 947 if (tag) {
1070 0 0 if (trace_level >= 1)
1080 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 ")) {
1091 32 1592 if (found->fid_flags & NYTP_FIDf_IS_AUTOSPLIT
1092 32 0 && (parent_entry = find_autosplit_parent(aTHX_ file_name))
1106 0 32 if (trace_level >= 2)
1107 0 0 logwarn("Use fid %2u (after %2u:%-4u) %x e%u:%u %.*s %s\n",
1117 915 677 if (!found->eval_fid &&
132 783 if (!found->eval_fid &&
1118 16 116 !(file_name[0] == '-'
1119 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))) &&
1134 0 516 if (!getcwd(file_name_abs, sizeof(file_name_abs))) {
1148 516 0 if (strNE(file_name_abs, "/"))
1151 0 516 if (strnEQ(file_name, "./", 2)) {
1164 16 1576 if (fid_is_pmc(aTHX_ found))
1171 1356 236 if ( (src_av = GvAV(gv_fetchfile_flags(found->he.key, found->he.key_len, 0))) )
1172 1280 76 if (av_len(src_av) > -1)
1176 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 ||
1177 16 0 (found->he.key[1] == 'e' && found->he.key_len == 2)))
1183 915 677 if (found->eval_fid
1184 763 152 || (found->fid_flags & NYTP_FIDf_IS_EVAL)
1185 376 387 || (profile_opts & NYTP_OPTf_SAVESRC)
1186 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))
1193 0 1592 if (trace_level >= 2) {
1197 0 0 logwarn("New fid %2u (after %2u:%-4u) 0x%02x e%u:%u %.*s %s %s\n",
1213 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);
1221 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);
1278 1388076 0 for (i = startingblock; i >= 0; i--) {
1282 1388076 0 if (type_bit & cx_type_mask)
1342 0 1489841 if (!start_op) {
1343 0 0 if (trace_level >= trace)
1350 1489841 0 while ( o && (type = (o->op_type) ? o->op_type : (int)o->op_targ) ) {
1489841 0 while ( o && (type = (o->op_type) ? o->op_type : (int)o->op_targ) ) {
1489841 0 while ( o && (type = (o->op_type) ? o->op_type : (int)o->op_targ) ) {
1351 581005 908836 if (type == OP_NEXTSTATE ||
506480 74525 if (type == OP_NEXTSTATE ||
1357 0 1415316 if (trace_level >= trace)
1358 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",
1363 0 74525 if (trace_level >= trace)
1364 0 0 logwarn("\tstart_cop_of_context %s op '%s' isn't a cop, giving up\n",
1380 0 0 if (trace_level >= 3) {
1408 0 723259 if (trace_level >= 6)
1415 0 2111335 while (cxix < 0 && top_si->si_type != PERLSI_MAIN) {
0 0 while (cxix < 0 && top_si->si_type != PERLSI_MAIN) {
1416 0 0 if (trace_level >= 6)
1424 2111335 0 if (cxix < 0 || (cxix == 0 && !top_si->si_prev)) {
2470 2108865 if (cxix < 0 || (cxix == 0 && !top_si->si_prev)) {
2422 48 if (cxix < 0 || (cxix == 0 && !top_si->si_prev)) {
1426 0 2422 if (trace_level >= 5)
1431 0 2108913 if (trace_level >= 5)
1434 720837 1388076 if (callback(aTHX_ cx, &cx_type_mask))
1447 1415316 0 char *a_file = OutCopFILE(a);
1448 1415316 0 char *b_file = OutCopFILE(b);
1449 813724 601592 if (a_file == b_file)
1453 0 601592 if (strEQ(a_file, b_file))
1465 719253 1389660 if (CxTYPE(cx) == CXt_SUB) {
1466 719253 0 if (PL_debstash && CvSTASH(cx->blk_sub.cv) == PL_debstash)
0 719253 if (PL_debstash && CvSTASH(cx->blk_sub.cv) == PL_debstash)
1472 119245 600008 if (_cop_in_same_file(near_cop, PL_curcop_nytprof)) {
1475 24970 94275 if (!last_block_line)
1479 0 719253 if (trace_level >= 8) {
1481 0 0 logwarn("\tat %d: block %d sub %d for %s %s\n",
1484 0 0 if (trace_level >= 99)
1492 0 1389660 if (trace_level >= 6)
1496 619072 770588 if (last_block_line)
1500 74525 696063 if ((near_cop = start_cop_of_context(aTHX_ cx)) == NULL)
1504 1584 694479 if (!_cop_in_same_file(near_cop, PL_curcop_nytprof)) {
1506 1584 0 if ('(' == *OutCopFILE(PL_curcop_nytprof)) {
944 640 if ('(' == *OutCopFILE(PL_curcop_nytprof)) {
1512 0 640 if (trace_level >= 5)
1513 0 0 logwarn("at %d: %s in different file (%s, %s)\n",
0 0 logwarn("at %d: %s in different file (%s, %s)\n",
1520 0 694479 if (trace_level >= 5)
1534 0 555 if (!o || o == PL_op)
0 0 if (!o || o == PL_op)
1536 0 0 if (o->op_flags & OPf_KIDS) {
1538 0 0 for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid)) {
0 0 for (kid = cUNOPo->op_first; kid; kid = OpSIBLING(kid)) {
1542 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)
1546 0 0 if (new_cop)
1565 864442 10398 if (!is_profiling || !profile_stmts)
77 864365 if (!is_profiling || !profile_stmts)
1582 863728 637 if (last_executed_fid) {
1583 723375 140353 if (profile_blocks)
1591 0 863728 if (trace_level >= 5) /* previous fid:line and how much time we spent there */
1597 864301 64 if (!cop)
1599 555 863810 if ( (last_executed_line = CopLINE(cop)) == 0 ) {
1604 0 555 cop = (COP*)closest_cop(aTHX_ cop, OpSIBLING(cop));
1605 0 555 if (!cop)
1608 555 0 if (!last_executed_line) {
1612 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);
1613 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"));
1616 0 555 if (!is_preamble && op) {
0 0 if (!is_preamble && op) {
1618 0 0 logwarn("Unable to determine line number in %s (ssix%d)\n",
1620 0 0 if (trace_level > 5)
1627 864365 0 file = OutCopFILE(cop);
1628 637 863728 if (!last_executed_fid) { /* first time */
1629 0 637 if (trace_level >= 1) {
1630 0 0 logwarn("~ first statement profiled at line %d of %s, pid %ld\n",
1634 3873 860492 if (file != last_executed_fileptr) { /* cache (hit ratio ~50% e.g. for perlcritic) */
1639 0 864365 if (trace_level >= 7) /* show the fid:line we're about to execute */
1640 0 0 logwarn("\t@%d:%-4d... %s\n", last_executed_fid, last_executed_line,
1643 723984 140381 if (profile_blocks) {
1646 723259 725 if (op) {
1650 3591 720393 if (!last_block_line) last_block_line = last_executed_line;
1651 603795 120189 if (!last_sub_line) last_sub_line = last_executed_line;
1679 249095 2159 if (!is_profiling || !out || !profile_stmts)
249095 0 if (!is_profiling || !out || !profile_stmts)
0 249095 if (!is_profiling || !out || !profile_stmts)
1713 198447 50648 if (last_executed_line == prev_last_executed_line
1719 0 249095 if (trace_level >= 5) {
1720 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",
1722 0 0 OP_NAME_safe(prev_op), OP_NAME_safe(op),
0 0 OP_NAME_safe(prev_op), OP_NAME_safe(op),
1724 0 0 (op || is_multicall) ? "" : ", LEAVING PERL"
1738 11618 0 if (!option || !*option)
0 11618 if (!option || !*option)
1740 11618 0 if (!value || !*value)
0 11618 if (!value || !*value)
1743 1297 10321 if (strEQ(option, "file")) {
1746 0 10321 else if (strEQ(option, "log")) {
1748 0 0 if (!fp) {
1755 1281 9040 else if (strEQ(option, "start")) {
1756 76 1205 if (strEQ(value,"begin")) profile_start = NYTP_START_BEGIN;
1757 1205 0 else if (strEQ(value,"init")) profile_start = NYTP_START_INIT;
1758 0 0 else if (strEQ(value,"end")) profile_start = NYTP_START_END;
1759 0 0 else if (strEQ(value,"no")) profile_start = NYTP_START_NO;
1762 15 9025 else if (strEQ(option, "addpid")) {
1765 15 0 : profile_opts & ~NYTP_OPTf_ADDPID;
1767 0 9025 else if (strEQ(option, "addtimestamp")) {
1770 0 0 : profile_opts & ~NYTP_OPTf_ADDTIMESTAMP;
1772 9009 16 else if (strEQ(option, "optimize") || strEQ(option, "optimise")) {
0 9009 else if (strEQ(option, "optimize") || strEQ(option, "optimise")) {
1775 16 0 : profile_opts & ~NYTP_OPTf_OPTIMIZE;
1777 1280 7729 else if (strEQ(option, "savesrc")) {
1780 696 584 : profile_opts & ~NYTP_OPTf_SAVESRC;
1782 0 7729 else if (strEQ(option, "endatexit")) {
1783 0 0 if (atoi(value))
1786 0 7729 else if (strEQ(option, "libcexit")) {
1787 0 0 if (atoi(value))
1797 7729 56737 if (strEQ(option, opt_p->option_name)) {
1802 56737 0 } while (++opt_p < opt_end);
1803 0 7729 if (!found) {
1808 0 11618 if (trace_level)
1823 0 705 const char *mode = (strnEQ(filename, "/dev/", 4) ? "wb" : "wbx");
1833 663 42 if ((profile_opts & (NYTP_OPTf_ADDPID|NYTP_OPTf_ADDTIMESTAMP))
1834 0 663 || out /* already opened so assume we're forking and add the pid */
1836 0 42 if (strlen(filename) >= MAXPATHLEN-(20+20)) /* buffer overrun protection */
1839 0 42 if ((profile_opts & NYTP_OPTf_ADDPID) || out)
0 0 if ((profile_opts & NYTP_OPTf_ADDPID) || out)
1841 0 42 if ( profile_opts & NYTP_OPTf_ADDTIMESTAMP )
1851 0 705 if (!out) {
1854 0 0 if (fopen_errno==EEXIST && !(profile_opts & NYTP_OPTf_ADDPID))
0 0 if (fopen_errno==EEXIST && !(profile_opts & NYTP_OPTf_ADDPID))
1860 0 705 if (trace_level >= 1)
1872 36 675 if (!out)
1886 0 675 if ((result = NYTP_close(out, 0)))
1890 0 675 if (trace_level >= 1)
1900 865161 31 if (getpid() == last_pid)
1904 0 31 if (trace_level >= 1)
1911 31 0 if (sub_callers_hv)
1915 30 1 if (open_new_file) {
1921 0 30 if (result)
1928 4 27 if (profile_forkdepth == 0) { /* parent doesn't want children profiled */
1935 27 4 if (open_new_file)
2007 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"))
2016 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);
2020 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))) {
2023 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)) {
2027 496 0 (void) hv_store(GvHV(PL_DBsub), SvPV_nolen(fullnamesv), (I32)SvCUR(fullnamesv), DBsv, 0);
2044 0 0 sprintf(buf, "(seix %d%s%d, ac%u)",
2057 131055 0 if ((trace_level >= 6 || subr_entry->already_counted>1)
0 131055 if ((trace_level >= 6 || subr_entry->already_counted>1)
2059 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)
2061 0 0 logwarn("%2u << %s::%s done %s\n",
2064 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))
2065 0 0 ? SvPV_nolen(subr_entry->called_subnam_sv)
2069 65570 65485 if (subr_entry->caller_subnam_sv) {
2073 65570 65485 if (subr_entry->called_subnam_sv) {
2077 131055 0 if (subr_entry->prev_subr_entry_ix <= subr_entry_ix)
2102 65570 65485 if (subr_entry->called_subnam_sv && !SvOK(subr_entry->called_subnam_sv)) {
4 65566 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)) {
2103 0 4 if (trace_level)
2112 65489 65566 if (subr_entry->already_counted) {
2131 0 65566 if (subr_entry->hide_subr_call_time) {
2144 65566 0 subr_call_key_len = my_snprintf(subr_call_key, sizeof(subr_call_key), "%s::%s[%u:%d]",
65566 0 subr_call_key_len = my_snprintf(subr_call_key, sizeof(subr_call_key), "%s::%s[%u:%d]",
0 65566 subr_call_key_len = my_snprintf(subr_call_key, sizeof(subr_call_key), "%s::%s[%u:%d]",
2148 0 65566 if (subr_call_key_len >= sizeof(subr_call_key))
2157 1061778 65566 while (*p)
2161 65566 0 if (subr_entry->called_subnam_sv) {
2164 65566 0 p = SvPV(subr_entry->called_subnam_sv, len);
2172 0 65566 if (called_subname_pv_end >= called_subname_pv+sizeof(called_subname_pv))
2179 3139 62427 if (!SvROK(sv_tmp)) { /* autoviv hash ref - is first call of this called subname from anywhere */
2183 733 2406 if (subr_entry->called_is_xs) {
2189 127 606 if ( ('s' == *subr_entry->called_is_xs) /* "sop" (slowop) */
2190 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)
2199 685 48 if (!SvOK(sv))
685 0 if (!SvOK(sv))
685 0 if (!SvOK(sv))
2201 0 733 if (trace_level >= 2)
2209 4853 60713 if (!SvROK(sv_tmp)) { /* first call from this subname[fid:line] - autoviv array ref */
2214 4853 0 if (subr_entry->called_subpkg_pv) { /* note that a sub in this package was called */
2216 813 4040 if (SvTYPE(pf_sv) == SVt_NULL) { /* log when first created */
2218 0 813 if (trace_level >= 3)
2229 0 65566 if (trace_level >= 5) {
2242 65534 32 if (subr_entry->called_cv_depth <= 1) {
2244 65534 0 sv_setnv(incl_time_sv, SvNV(incl_time_sv)+incl_subr_ticks);
2250 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));
2252 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))
2256 65566 0 sv_setnv(excl_time_sv, SvNV(excl_time_sv)+excl_subr_ticks);
2258 60884 4682 if (opt_calls && out) {
60845 39 if (opt_calls && out) {
2273 81805 0 incr_sub_inclusive_time(aTHX_ subr_entry_ix_ptr(save_ix));
2284 0 109386 if (!subname_gv_ptr)
2294 36 1440 if (!SvROK(sv)) {
2297 0 36 if (sv == &PL_sv_yes) { /* unfound import, ignore */
2300 0 36 if (SvGMAGICAL(sv)) {
2302 0 0 if (SvROK(sv))
2304 0 0 sym = SvPOKp(sv) ? SvPVX(sv) : Nullch;
2307 32 4 sym = SvPV_nolen(sv);
2308 0 36 if (!sym)
2310 4 32 if (PL_op->op_private & HINT_STRICT_REFS)
2321 1440 0 if (SvTYPE(cv) == SVt_PVCV)
2331 103393 0 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
0 103393 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
0 0 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
103393 0 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
16 103377 if (!(isGV_with_GP(sv) && (cv = GvCVu((GV*)sv))))
2333 16 103377 if (!cv) /* would autoload in this situation */
2337 109366 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
109366 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
109366 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
109366 0 if (cv && !*subname_gv_ptr && CvGV(cv) && isGV_with_GP(CvGV(cv))) {
0 109366 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))) {
2352 1795 806 if (!si)
2355 148 2453 if (ix < 0) {
2357 48 100 if (si->si_type != PERLSI_MAIN)
2359 0 100 if (trace_level >= 9)
2367 0 2453 if (trace_level >= 9)
2372 2445 8 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
0 2445 if (CxTYPE(cx) == CXt_SUB || CxTYPE(cx) == CXt_FORMAT)
2374 546 1899 else if (CxTYPE(cx) == CXt_EVAL && !CxTRYBLOCK(cx))
369 177 else if (CxTYPE(cx) == CXt_EVAL && !CxTRYBLOCK(cx))
2376 1802 274 else if (ix == 0 && si->si_type == PERLSI_MAIN)
1687 115 else if (ix == 0 && si->si_type == PERLSI_MAIN)
2378 274 115 else if (ix > 0) /* more on this stack? */
2382 115 0 if (si->si_type != PERLSI_MAIN) {
2404 0 65570 if (subr_entry_ix <= prev_subr_entry_ix) {
2412 65570 0 subr_entry = subr_entry_ix_ptr(subr_entry_ix);
2416 63671 1899 caller_subr_entry = subr_entry_ix_ptr(prev_subr_entry_ix);
2418 63671 1899 ? caller_subr_entry->subr_prof_depth+1 : 1;
2429 2901 62669 if (op_type == OP_ENTERSUB || op_type == OP_GOTO) {
168 2733 if (op_type == OP_ENTERSUB || op_type == OP_GOTO) {
2432 62833 4 if (called_gv) {
2433 62833 0 char *p = HvNAME(GvSTASH(called_gv));
62833 0 char *p = HvNAME(GvSTASH(called_gv));
0 62833 char *p = HvNAME(GvSTASH(called_gv));
0 0 char *p = HvNAME(GvSTASH(called_gv));
62833 0 char *p = HvNAME(GvSTASH(called_gv));
0 62833 char *p = HvNAME(GvSTASH(called_gv));
2438 0 62833 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) {
2440 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) {
2461 0 2733 if (profile_slowops == 1) { /* 1 == put slowops into 1 package */
2468 362 2371 if (!slowop_name_cache)
2471 0 2733 if (!opname)
2475 557 2176 if(!SvOK(sv)) {
557 0 if(!SvOK(sv)) {
557 0 if(!SvOK(sv)) {
2480 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);
2484 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);
2492 0 2733 if (OP_ACCEPT == op_type)
2502 65570 0 file = OutCopFILE(prev_cop);
2505 1660 63910 : get_file_id(aTHX_ file, strlen(file), NYTP_FIDf_VIA_SUB);
2509 168 65402 if (clone_subr_entry) {
2519 65402 0 if (profile_findcaller /* user wants us to calculate each time */
2520 63607 1795 || !caller_subr_entry /* we don't have a caller struct */
2521 63607 0 || !caller_subr_entry->called_subpkg_pv /* we don't have caller details */
2522 63607 0 || !caller_subr_entry->called_subnam_sv
2523 0 63607 || !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)
2540 1687 108 if (caller_cv == PL_main_cv) {
2551 100 8 else if (caller_cv == 0) {
2562 0 8 if (!egv)
2565 8 0 if (gv && (stash_hv = GvSTASH(gv))) {
8 0 if (gv && (stash_hv = GvSTASH(gv))) {
2566 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);
2570 0 0 logwarn("Can't determine name of calling sub (GV %p, Stash %p, CV flags %d) at %s line %d\n",
2579 0 1795 found_caller_by = (profile_findcaller) ? "" : "(calculated)";
2583 0 63607 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");
2601 0 65570 if (trace_level >= 4) {
2602 0 0 logwarn("%2u >> %s at %u:%d from %s::%s %s %s\n",
2620 4583 60987 if (opt_calls >= 2 && out) {
4583 0 if (opt_calls >= 2 && out) {
2650 68858 7511 OPCODE op_type = (is_slowop || (opcode) PL_op->op_type == OP_GOTO) ? (opcode) PL_op->op_type : OP_ENTERSUB;
264 68594 OPCODE op_type = (is_slowop || (opcode) PL_op->op_type == OP_GOTO) ? (opcode) PL_op->op_type : OP_ENTERSUB;
2660 76369 0 if (!profile_subs /* not profiling subs */
2662 66812 9557 || !is_profiling
2665 63879 2933 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
63857 22 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
63857 0 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
63857 0 || (op_type==OP_ENTERSUB && (sub_sv == &PL_sv_yes || sub_sv == DB_CHECK_cv || sub_sv == DB_INIT_cv
2666 63263 594 || sub_sv == DB_END_cv || sub_sv == DB_fin_cv))
62669 594 || sub_sv == DB_END_cv || sub_sv == DB_fin_cv))
2668 200 65402 || (op_type==OP_GOTO &&
168 32 || (op_type==OP_GOTO &&
2669 168 0 ( !(SvROK(sub_sv) && SvTYPE(SvRV(sub_sv)) == SVt_PVCV)
2670 0 168 || subr_entry_ix == -1) /* goto out of sub whose entry wasn't profiled */
2679 76 65494 if (!profile_stmts) {
2684 0 65570 if (trace_level >= 99) {
2699 65402 168 if (op_type != OP_GOTO) {
2742 168 0 subr_entry_t *src = subr_entry_ix_ptr(subr_entry_ix);
2769 65517 0 subr_entry = subr_entry_ix_ptr(this_subr_entry_ix);
2772 0 65517 assert(subr_entry);
2773 0 65517 assert(subr_entry->caller_fid < fidhash.next_id);
2779 32 65485 if (subr_entry->already_counted) {
2780 0 32 if (trace_level >= 9)
2781 0 0 logwarn("%2u -- %s::%s already counted %s\n",
2784 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))
2785 0 0 ? SvPV_nolen(subr_entry->called_subnam_sv)
2788 0 32 assert(subr_entry->already_counted < 3);
2792 62800 2685 if (is_slowop) {
2799 168 62632 if (op_type == OP_GOTO) {
2801 16 152 is_xs = (CvISXSUB(called_cv)) ? "xsub" : NULL;
2804 16083 46549 if (op != next_op) { /* have entered a sub */
2815 0 46549 if (!called_cv && gv) { /* XXX no test case for this */
0 0 if (!called_cv && gv) { /* XXX no test case for this */
2816 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));
2818 0 0 if (trace_level >= 0)
2819 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",
2826 62800 0 if (called_cv && CvGV(called_cv)) {
62800 0 if (called_cv && CvGV(called_cv)) {
2829 62800 0 if (SvTYPE(gv) == SVt_PVGV && GvSTASH(gv)) {
62800 0 if (SvTYPE(gv) == SVt_PVGV && GvSTASH(gv)) {
2833 62800 0 stash_name = HvNAME(GvSTASH(gv));
62800 0 stash_name = HvNAME(GvSTASH(gv));
0 62800 stash_name = HvNAME(GvSTASH(gv));
0 0 stash_name = HvNAME(GvSTASH(gv));
62800 0 stash_name = HvNAME(GvSTASH(gv));
0 62800 stash_name = HvNAME(GvSTASH(gv));
2836 0 0 else if (trace_level >= 1) {
2837 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",
2840 0 0 if (trace_level >= 2) {
2848 0 62800 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)) {
2849 0 0 const char *what = (is_xs) ? is_xs : "sub";
2851 0 0 if (!called_cv) { /* should never get here as pp_entersub would have croaked */
2852 0 0 logwarn("unknown entersub %s '%s' (please report this as a bug)\n", what, SvPV_nolen(sub_sv));
2853 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);
2854 0 0 sv_setpvf(subr_entry->called_subnam_sv, "__UNKNOWN__[%s,%s])", what, SvPV_nolen(sub_sv));
2857 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));
2859 0 0 if (trace_level)
2860 0 0 logwarn("unknown entersub %s assumed to be anon called_cv '%s'\n",
2863 0 0 if (trace_level >= 9)
2868 530 62270 if (*SvPVX(subr_entry->called_subnam_sv) == 'B')
2872 62800 0 subr_entry->called_cv_depth = (called_cv) ? CvDEPTH(called_cv)+(is_xs?1:0) : 0;
2878 49250 16235 if (subr_entry->called_is_xs
2879 46260 2990 && subr_entry->called_subpkg_pv[0] == 'D'
2880 96 46164 && subr_entry->called_subpkg_pv[1] == 'B'
2881 96 0 && subr_entry->called_subpkg_pv[2] == '\0'
2884 96 0 char *p = SvPV(subr_entry->called_subnam_sv, len);
2886 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"))) {
2892 0 65485 if (!profile_subs)
2895 0 65485 if (trace_level >= 4) {
2896 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",
2900 0 0 subr_entry->called_subnam_sv ? SvPV_nolen(subr_entry->called_subnam_sv) : "(null)",
2902 0 0 subr_entry->caller_subnam_sv ? SvPV_nolen(subr_entry->caller_subnam_sv) : "(null)",
2911 49250 16235 if (subr_entry->called_is_xs) {
2960 0 24 if (PL_op->op_type == OP_EXEC)
2979 0 694 if (profile_usecputime) {
2984 0 694 if (trace_level)
2985 0 0 logwarn("~ enable_profile (previously %s) to %s\n",
0 0 logwarn("~ enable_profile (previously %s) to %s\n",
2987 0 0 (file && *file) ? file : PROF_output_file);
2991 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)) {
2997 678 16 if (!out) {
3003 338 356 if (opt_use_db_sub) /* set PL_DBsingle if required */
3024 694 37 if (is_profiling) {
3025 338 356 if (opt_use_db_sub)
3027 691 3 if (out)
3031 0 731 if (trace_level)
3032 0 0 logwarn("~ disable_profile (previously %s, pid %d, trace %" IVdf ")\n",
3051 0 679 if (trace_level >= 1)
3056 341 338 if (!profile_leave || opt_use_db_sub)
161 180 if (!profile_leave || opt_use_db_sub)
3063 0 679 if (trace_level >= 2) {
3069 0 679 if (HvKEYS(sub_callers_hv)) {
613 66 if (HvKEYS(sub_callers_hv)) {
3095 630 0 if (profile_clock == -1) { /* auto select */
3103 0 630 if (clock_gettime(profile_clock, &start_time) != 0) {
3104 0 0 if (trace_level)
3109 0 0 if (clock_gettime(profile_clock, &start_time) != 0)
3168 306 324 if (opt_use_db_sub) {
3173 630 0 if (profile_opts & NYTP_OPTf_OPTIMIZE)
3177 322 308 if (profile_opts & NYTP_OPTf_SAVESRC) {
3182 0 630 if (!opt_nameevals)
3184 0 630 if (!opt_nameanonsubs)
3187 0 630 if (opt_perldb) /* force a PL_perldb value - for testing only, not documented */
3192 0 630 if (trace_level)
3197 0 630 if (get_hv("DB::sub", 0) == NULL) {
3218 610 20 if (profile_stmts && !opt_use_db_sub) {
314 296 if (profile_stmts && !opt_use_db_sub) {
3224 166 148 if (profile_leave) {
3244 610 20 if (profile_slowops) {
3252 630 0 if (!sub_callers_hv)
3254 630 0 if (!pkg_fids_hv)
3259 628 2 if (!PL_checkav) PL_checkav = newAV();
3260 628 2 if (!PL_initav) PL_initav = newAV();
3261 628 2 if (!PL_endav) PL_endav = newAV();
3268 93 537 if (profile_start == NYTP_START_BEGIN) {
3274 0 630 if (PL_minus_c) {
3283 0 630 if (trace_level >= 1)
3299 0 4036584 unsigned int fid = (eval_line_num) ? eval_file_num : file_num;
3302 6762 4029822 if (!SvROK(line_time_rvav)) /* autoviv */
3315 25706 4010878 if (!SvROK(time_rvav)) { /* autoviv */
3321 0 25706 if (embed_fid_line) { /* used to optimize reporting */
3330 4010878 0 sv_setnv(time_sv, time + SvNV(time_sv));
3331 3033068 977810 if (count) {
3333 3033068 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));
3352 36393 0 char *colon = rninstr(sub_name, sub_name+(len > 0 ? len : -len), delim, delim+2);
3353 36393 0 if (!colon || colon == sub_name)
0 36393 if (!colon || colon == sub_name)
3373 0 36393 if (!pkg_len)
3376 29641 6752 if (!svp)
3385 36055 0 char *filename = SvPV_nolen(sv);
3390 36055 0 if (first && filename_len_p)
35559 496 if (first && filename_len_p)
3393 0 36055 if (!first++) /* start of first number, if colon was found */
3395 0 36055 if ('-' == *first) { /* first number is negative */
3401 36055 0 if (!last || !grok_number(first, last-first, first_line_p))
0 36055 if (!last || !grok_number(first, last-first, first_line_p))
3403 0 36055 if (first_is_neg) {
3409 0 36055 if ('-' == *++last) { /* skip past dash, is next char a minus? */
3414 35559 496 if (last_line_p)
3430 0 675 if (trace_level >= 1)
3439 35013 675 while (NULL != (file_lines_sv = hv_iternextsv(hv, &sub_name, &sub_name_len))) {
3441 35013 0 char *filename = SvPV(file_lines_sv, file_lines_len);
3460 34228 785 if (file_lines_len > 4
3461 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'
3462 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')
3466 35013 0 filename_len = (first) ? first - filename : 0;
3471 29553 5460 if (!pkg_filename_sv) /* we don't know package */
3475 1010 4450 if (SvOK(pkg_filename_sv)) {
1010 0 if (SvOK(pkg_filename_sv)) {
0 1010 if (SvOK(pkg_filename_sv)) {
3477 4450 0 char *cached_filename = SvPV(pkg_filename_sv, cached_len);
3483 3933 517 if (filename_len > 0
3484 93 3840 && filename_is_eval(cached_filename, cached_len)
3485 52 41 && !filename_is_eval(filename, filename_len)
3487 0 52 if (trace_level >= 3)
3497 0 4398 if (trace_level >= 3
3498 0 0 && strnNE(SvPV_nolen(pkg_filename_sv), filename, filename_len)
0 0 && strnNE(SvPV_nolen(pkg_filename_sv), filename, filename_len)
3499 0 0 && !filename_is_eval(filename, filename_len)
3502 0 0 logwarn("Package '%.*s' (of sub %.*s) not associated with '%.*s' because already associated with '%s'\n",
3513 268 742 if (!filename_len) {
3514 0 268 if (trace_level >= 3)
3526 0 742 if (trace_level >= 3)
3531 594 81 if (main_runtime_used) { /* Create fake entry for main::RUNTIME sub */
3538 88 506 if (!pkg_filename_sv) { /* no subs in main, so guess */
3541 1 505 else if (SvOK(pkg_filename_sv)) {
1 0 else if (SvOK(pkg_filename_sv)) {
0 1 else if (SvOK(pkg_filename_sv)) {
3550 0 675 if (trace_level >= 1)
3551 0 0 logwarn("~ writing sub line ranges of %ld subs\n", (long)HvKEYS(hv));
3557 35559 675 while (NULL != (file_lines_sv = hv_iternextsv(hv, &sub_name, &sub_name_len))) {
3559 35559 0 char *filename = SvPV_nolen(file_lines_sv);
3563 0 35559 if (!parse_DBsub_value(aTHX_ file_lines_sv, &filename_len, &first_line, &last_line, sub_name)) {
3568 786 34773 if (!filename_len) { /* no filename, so presumably a fake entry for xsub */
3571 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)) {
3572 657 0 filename = SvPV(pkg_filename_sv, filename_len);
3573 0 657 if (trace_level >= 2)
3580 29514 6045 if (!fid) {
3581 0 29514 if (trace_level >= 4)
3587 0 6045 if (trace_level >= 2)
3605 0 675 if (!sub_callers_hv)
3607 0 675 if (trace_level >= 1)
3608 0 0 logwarn("~ writing sub callers for %ld subs\n", (long)HvKEYS(sub_callers_hv));
3611 3116 675 while (NULL != (fid_line_rvhv = hv_iternextsv(sub_callers_hv, &called_subname, &called_subname_len))) {
3617 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) {
3631 5547 3116 while (NULL != (sv = hv_iternextsv(fid_lines_hv, &caller_subname, &caller_subname_len))) {
3641 0 5547 if (!fid_line_start) {
3645 0 5547 if (2 != sscanf(fid_line_start+1, "%u:%u", &fid, &line)) {
3653 0 5547 if (line > 2147483600) { /* ~2**31 */
3677 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) {
3679 0 0 if (trace_level) {
3686 0 5547 if (trace) {
3687 0 0 if (!fid && !line) {
0 0 if (!fid && !line) {
3699 0 675 if (negative_time_calls) {
3715 0 675 if (trace_level >= 1)
3718 1577 675 for (e = (fid_hash_entry*)fidhash.first_inserted; e; e = (fid_hash_entry*)e->he.next_inserted) {
3723 246 1331 if ( !(e->fid_flags & NYTP_FIDf_HAS_SRC) ) {
3726 26 220 if (src_av && av_len(src_av) > -1) /* sanity check */
0 26 if (src_av && av_len(src_av) > -1) /* sanity check */
3728 246 0 if (trace_level >= 3 || *hint)
0 246 if (trace_level >= 3 || *hint)
3733 0 1331 if (!src_av) { /* sanity check */
3741 320 1011 if ( !(e->fid_flags & NYTP_FIDf_SAVE_SRC) ) {
3747 0 1011 if (trace_level >= 3)
3750 28177 1011 for (line = 1; line <= lines; ++line) { /* lines start at 1 */
3753 27401 776 const char *src = (svp) ? SvPV(*svp, len) : "";
27401 0 const char *src = (svp) ? SvPV(*svp, len) : "";
3757 0 28177 if (trace_level >= 8) {
3758 0 0 logwarn("fid %d src line %d: %s%s", e->he.id, line, src,
3759 0 0 (len && src[len-1]=='\n') ? "" : "\n");
3765 0 675 if (trace_level >= 2)
3775 23708 0 char *start = SvPV(sv, len);
3849 7972 7788 if (!SvROK(sv)) { /* autoviv */
3874 0 16898 if (trace_level >= 1)
3875 0 0 logwarn(": %.*s = '%s'\n", (int) text_len, text, SvPV_nolen(value_sv));
3961 0 326178 if (trace_level >= 8)
3964 0 326178 if (state->statement_discount)
3988 1345528 0 ticks = va_arg(args, I32);
3989 1345528 0 file_num = va_arg(args, unsigned int);
3990 1345528 0 line_num = va_arg(args, unsigned int);
3995 0 1345528 if (!SvROK(fid_info_rvav)) { /* should never happen */
3996 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 */
4002 0 1345528 if (trace_level >= 8) {
4004 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))
4005 0 0 new_file_name = SvPV_nolen(*av_fetch((AV *)SvRV(fid_info_rvav), NYTP_FIDi_FILENAME, 1));
4015 1345528 0 if (tag == nytp_time_block) {
4016 1345528 0 unsigned int block_line_num = va_arg(args, unsigned int);
4017 0 1345528 unsigned int sub_line_num = va_arg(args, unsigned int);
4019 966 1344562 if (!state->fid_block_time_av)
4026 966 1344562 if (!state->fid_sub_time_av)
4033 0 1345528 if (trace_level >= 8)
4065 2422 0 file_num = va_arg(args, unsigned int);
4066 2422 0 eval_file_num = va_arg(args, unsigned int);
4067 2422 0 eval_line_num = va_arg(args, unsigned int);
4068 2422 0 fid_flags = va_arg(args, unsigned int);
4069 0 2422 file_size = va_arg(args, unsigned int);
4070 0 2422 file_mtime = va_arg(args, unsigned int);
4071 0 2422 filename_sv = va_arg(args, SV *);
4075 0 2422 if (trace_level >= 2) {
4078 0 0 if (eval_file_num || eval_line_num)
0 0 if (eval_file_num || eval_line_num)
4083 0 0 logwarn("Fid %2u is %s%s 0x%x(%s)\n",
4095 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 */
4098 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,
4104 1112 1310 if (eval_file_num) {
4108 0 1112 if (!SvROK(eval_fi)) { /* should never happen */
4110 0 0 logwarn("Eval '%s' (fid %d, flags:%s) has unknown invoking fid %d\n",
4122 576 536 if (!SvROK(has_evals)) /* autoviv */
4130 1112 1310 av_store(av, NYTP_FIDi_EVAL_FID, (eval_file_num) ? newSVuv(eval_file_num) : &PL_sv_no);
4131 1112 1310 av_store(av, NYTP_FIDi_EVAL_LINE, (eval_file_num) ? newSVuv(eval_line_num) : &PL_sv_no);
4155 32560 0 file_num = va_arg(args, unsigned int);
4156 32560 0 line_num = va_arg(args, unsigned int);
4157 32560 0 src = va_arg(args, SV *);
4162 1266 31294 if (!av_exists(state->fid_srclines_av, file_num)) {
4172 0 32560 if (trace_level >= 8) {
4173 0 0 logwarn("Fid %2u:%u src: %s\n", file_num, line_num, SvPV_nolen(src));
4195 7812 0 fid = va_arg(args, unsigned int);
4196 7812 0 first_line = va_arg(args, unsigned int);
4197 7812 0 last_line = va_arg(args, unsigned int);
4198 7812 0 subname_sv = va_arg(args, SV *);
4204 7812 0 subname_pv = SvPV(subname_sv, subname_len);
4205 0 7812 if (trace_level >= 2)
4210 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))) {
4215 0 0 if (!instr(subname_pv, "__ANON__[(eval"))
4222 0 0 if (fid > SvUV(*av_fetch(av, NYTP_SIi_FID, 1)))
0 0 if (fid > SvUV(*av_fetch(av, NYTP_SIi_FID, 1)))
4230 7812 0 if (!skip_subinfo_store) {
4264 7948 0 fid = va_arg(args, unsigned int);
4265 7948 0 line = va_arg(args, unsigned int);
4266 7948 0 count = va_arg(args, unsigned int);
4267 7948 0 incl_time = va_arg(args, NV);
4268 7948 0 excl_time = va_arg(args, NV);
4269 7948 0 reci_time = va_arg(args, NV);
4270 7948 0 rec_depth = va_arg(args, unsigned int);
4271 0 7948 called_subname_sv = va_arg(args, SV *);
4272 0 7948 caller_subname_sv = va_arg(args, SV *);
4279 0 7948 if (trace_level >= 6)
4280 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",
4290 4112 3836 if (!SvROK(sv)) /* autoviv */
4295 5910 2038 if (!SvROK(sv)) /* autoviv */
4301 6838 1110 if (fid) {
4307 6822 16 if (!SvROK(sv)) /* autoviv */
4309 0 16 else if (trace_level)
4313 0 0 logwarn("Merging extra sub caller info for %s called at %d:%d\n",
4318 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);
4320 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);
4322 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);
4328 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);
4330 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() */
4335 6822 16 if (!SvROK(sv)) /* autoviv */
4345 6058 780 if (!SvROK(fi)) /* autoviv */
4349 0 6838 AV *av2 = av_make(AvFILL(av)+1, AvARRAY(av));
4362 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));
4364 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));
4366 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));
4369 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))
4372 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));
4391 994 0 pid = va_arg(args, unsigned int);
4392 994 0 ppid = va_arg(args, unsigned int);
4393 994 0 start_time = va_arg(args, NV);
4401 0 994 if (trace_level)
4403 0 0 text, ppid, (IV)HvKEYS(state->live_pids_hv), start_time);
4422 994 0 pid = va_arg(args, unsigned int);
4423 994 0 end_time = va_arg(args, NV);
4430 0 994 if (!hv_delete(state->live_pids_hv, text, len, 0))
4433 0 994 if (trace_level)
4435 0 0 (IV)HvKEYS(state->live_pids_hv), state->profiler_end_time);
4460 8946 0 key = va_arg(args, char *);
4461 8946 0 key_len = va_arg(args, unsigned long);
4462 8946 0 key_utf8 = va_arg(args, unsigned int);
4464 8946 0 value = va_arg(args, char *);
4465 0 8946 value_len = va_arg(args, unsigned long);
4466 0 8946 value_utf8 = va_arg(args, unsigned int);
4470 0 8946 store_attrib_sv(aTHX_ state->attr_hv, key,
0 8946 store_attrib_sv(aTHX_ state->attr_hv, key,
4492 17892 0 key = va_arg(args, char *);
4493 17892 0 key_len = va_arg(args, unsigned long);
4494 17892 0 key_utf8 = va_arg(args, unsigned int);
4496 17892 0 value = va_arg(args, char *);
4497 0 17892 value_len = va_arg(args, unsigned long);
4498 0 17892 value_utf8 = va_arg(args, unsigned int);
4502 0 17892 value_sv = newSVpvn_flags(value, value_len, value_utf8 ? SVf_UTF8 : 0);
4503 0 17892 (void)hv_store(state->option_hv, key, key_utf8 ? -(I32)key_len : key_len, value_sv, 0);
4504 0 17892 if (trace_level >= 1)
4505 0 0 logwarn("! %.*s = '%s'\n", (int) key_len, key, SvPV_nolen(value_sv));
4550 0 591275 if (!arglist) {
4551 0 0 if (description)
4557 574667 16608 if (!state->cb[tag])
4560 0 16608 if (trace_level >= 9) {
4568 0 16608 PUSHMARK(SP);
4570 0 16608 XPUSHs(state->tag_names[tag]);
4572 47569 16608 while ((type = *arglist++)) {
4576 7204 5 unsigned int u = va_arg(args, unsigned int);
4579 0 7209 XPUSHs(cb_args[i++]);
4584 3 0 I32 i32 = va_arg(args, I32);
4587 0 3 XPUSHs(cb_args[i++]);
4592 14335 0 NV n = va_arg(args, NV);
4595 0 14335 XPUSHs(cb_args[i++]);
4600 7168 2 SV *sv = va_arg(args, SV *);
4603 0 7170 XPUSHs(cb_args[i++]);
4608 3 1 SV *sv = va_arg(args, SV *);
4610 0 4 XPUSHs(sv_2mortal(sv));
4615 18848 0 char *p = va_arg(args, char *);
4616 9425 9423 unsigned long len = va_arg(args, unsigned long);
4617 9425 9423 unsigned int utf8 = va_arg(args, unsigned int);
4620 0 18848 if (utf8)
4625 0 18848 XPUSHs(cb_args[i++]);
4634 0 16608 assert(i <= C_ARRAY_LENGTH(state->cb_args));
4711 0 1343 if (!NYTP_gets(in, &buffer, &buffer_len))
4713 0 1343 if (2 != sscanf(buffer, "NYTProf %d %d\n", &file_major, &file_minor))
4715 0 1343 if (file_major != NYTP_FILE_MAJOR_VERSION)
4719 0 1343 if (file_minor > NYTP_FILE_MINOR_VERSION)
4724 349 994 if (callbacks[nytp_version])
4732 1343 2371952 if (NYTP_read_unchecked(in, &c, sizeof(c)) != sizeof(c)) {
4733 1343 0 if (NYTP_eof(in))
4740 0 2371952 if (trace_level >= 9)
4762 1812610 0 if (c == NYTP_TAG_TIME_BLOCK) {
4810 2389 6858 if (callbacks[nytp_sub_entry])
4822 7165 20856 if (callbacks[nytp_sub_return])
4883 0 12087 if (NULL == end)
4887 0 12087 if ((NULL == (value = (char *)memchr(buffer, '=', end - buffer)))) {
4898 1343 10744 if (memEQs(buffer, key_end - buffer, "ticks_per_sec")) {
1343 0 if (memEQs(buffer, key_end - buffer, "ticks_per_sec")) {
4901 1343 9401 else if (memEQs(buffer, key_end - buffer, "nv_size")) {
1343 0 else if (memEQs(buffer, key_end - buffer, "nv_size")) {
4902 0 1343 if (sizeof(NV) != atoi(value))
4914 0 24174 if (NULL == end)
4918 0 24174 if ((NULL == (value = (char *)memchr(buffer, '=', end - buffer)))) {
4934 0 2098 if (!end)
4938 582 1516 if (callbacks[nytp_comment])
4942 0 2098 if (trace_level >= 1)
4950 233 522 if (callbacks[nytp_start_deflate]) {
5004 0 994 if (HvKEYS(state.live_pids_hv)) {
0 994 if (HvKEYS(state.live_pids_hv)) {
5006 0 0 (IV)HvKEYS(state.live_pids_hv),
5018 212 782 if (state.statement_discount) /* discard unused statement_discount */
5032 994 0 if (state.profiler_end_time
5033 0 994 && state.total_stmts_duration > state.profiler_duration * 1.1
5054 0 994 if (show_summary_stats)
5075 966 28 if (state.fid_block_time_av) {
5080 966 28 if (state.fid_sub_time_av) {
5100 348 1 if (SvTYPE(cb) == SVt_PVHV) {
5107 0 348 if (svp) {
5108 0 0 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 0 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
5112 1 0 } else if (SvTYPE(cb) == SVt_PVCV) {
5126 6282 349 while (--i) {
5127 5584 698 if (callback_info[i].args) {
5137 6264 18 if (cb_hv) {
5141 1044 5220 if (svp) {
5142 0 1044 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
0 0 if (!SvROK(*svp) && SvTYPE(SvRV(*svp)) != SVt_PVCV)
5151 3839 349 for (i = 0; i < C_ARRAY_LENGTH(state.cb_args); i++)
5235 60660 1348 } while (++constant < end);
5247 0 32435 XSRETURN_IV(trace_level);
5258 46097 17 if (!action)
5259 0 46097 XSRETURN(0);
5260 16 1 if (SvROK(action) && SvTYPE(SvRV(action))==SVt_PVCV) {
16 0 if (SvROK(action) && SvTYPE(SvRV(action))==SVt_PVCV) {
5262 0 16 PUSHMARK(SP);
5265 1 0 else if (strEQ(SvPV_nolen(action),"eval"))
0 1 else if (strEQ(SvPV_nolen(action),"eval"))
5266 0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
0 0 eval_pv(SvPV_nolen(arg), TRUE);
5267 1 0 else if (strEQ(SvPV_nolen(action),"die"))
1 0 else if (strEQ(SvPV_nolen(action),"die"))
5269 0 0 logwarn("example_xsub: unknown action '%s'\n", SvPV_nolen(action));
5281 0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
0 0 eval_pv("Devel::NYTProf::Test::example_xsub()", 1);
5301 0 0 if (!last_pid)
5310 0 0 EXTEND(SP, 4);
5326 260480 0 if (opt_use_db_sub)
5348 64 0 if (!RETVAL) {
5371 537 0 if (profile_start == NYTP_START_INIT) {
5374 0 0 else if (profile_start == NYTP_START_END) {
5376 0 0 if (trace_level >= 1)
5378 0 0 if (!PL_endav)
5384 0 537 if (trace_level >= 1)
5400 0 630 if (!PL_checkav) PL_checkav = newAV();
5401 0 630 if (!PL_endav) PL_endav = newAV();
5402 0 630 av_push((ix == 1 ? PL_checkav : PL_endav), SvREFCNT_inc(finish_profile_cv));
5407 0 630 if (trace_level >= 1)
5408 0 0 logwarn("~ %s done\n", ix == 1 ? "CHECK" : "END");
5424 0 1343 if (trace_level)
5427 0 1343 if (in == NULL) {
5430 1343 0 if (cb && SvROK(cb)) {
349 994 if (cb && SvROK(cb)) {
5438 0 1343 if ((result = NYTP_close(in, 0)))