Patch 8.1.0130
Problem: ":profdel func" does not work if func was called already.
(Dominique Pelle)
Solution: Reset uf_profiling and add a flag to indicate initialization was
done.
Files: src/structs.h, src/userfunc.c
*** ../vim-8.1.0129/src/structs.h 2018-06-23 19:22:45.614486258 +0200
--- src/structs.h 2018-06-30 18:12:48.678664711 +0200
***************
*** 1345,1350 ****
--- 1345,1351 ----
garray_T uf_lines; /* function lines */
#ifdef FEAT_PROFILE
int uf_profiling; /* TRUE when func is being profiled */
+ int uf_prof_initialized;
/* profiling the function as a whole */
int uf_tm_count; /* nr of calls */
proftime_T uf_tm_total; /* time spent in function + children */
*** ../vim-8.1.0129/src/userfunc.c 2018-05-22 18:31:30.001365739 +0200
--- src/userfunc.c 2018-06-30 18:20:15.704075693 +0200
***************
*** 293,302 ****
fp->uf_scoped = NULL;
#ifdef FEAT_PROFILE
- fp->uf_tml_count = NULL;
- fp->uf_tml_total = NULL;
- fp->uf_tml_self = NULL;
- fp->uf_profiling = FALSE;
if (prof_def_func())
func_do_profile(fp);
#endif
--- 293,298 ----
***************
*** 706,711 ****
--- 702,708 ----
#ifdef FEAT_PROFILE
proftime_T wait_start;
proftime_T call_start;
+ int started_profiling = FALSE;
#endif
/* If depth of calling is getting too high, don't execute the function */
***************
*** 921,927 ****
--- 918,927 ----
if (do_profiling == PROF_YES)
{
if (!fp->uf_profiling && has_profiling(FALSE, fp->uf_name, NULL))
+ {
+ started_profiling = TRUE;
func_do_profile(fp);
+ }
if (fp->uf_profiling
|| (fc->caller != NULL && fc->caller->func->uf_profiling))
{
***************
*** 965,970 ****
--- 965,973 ----
profile_add(&fc->caller->func->uf_tm_children, &call_start);
profile_add(&fc->caller->func->uf_tml_children, &call_start);
}
+ if (started_profiling)
+ // make a ":profdel func" stop profiling the function
+ fp->uf_profiling = FALSE;
}
#endif
***************
*** 2522,2544 ****
{
int len = fp->uf_lines.ga_len;
! if (len == 0)
! len = 1; /* avoid getting error for allocating zero bytes */
! fp->uf_tm_count = 0;
! profile_zero(&fp->uf_tm_self);
! profile_zero(&fp->uf_tm_total);
! if (fp->uf_tml_count == NULL)
! fp->uf_tml_count = (int *)alloc_clear((unsigned) (sizeof(int) * len));
! if (fp->uf_tml_total == NULL)
! fp->uf_tml_total = (proftime_T *)alloc_clear((unsigned)
! (sizeof(proftime_T) * len));
! if (fp->uf_tml_self == NULL)
! fp->uf_tml_self = (proftime_T *)alloc_clear((unsigned)
! (sizeof(proftime_T) * len));
! fp->uf_tml_idx = -1;
! if (fp->uf_tml_count == NULL || fp->uf_tml_total == NULL
! || fp->uf_tml_self == NULL)
! return; /* out of memory */
fp->uf_profiling = TRUE;
}
--- 2525,2552 ----
{
int len = fp->uf_lines.ga_len;
! if (!fp->uf_prof_initialized)
! {
! if (len == 0)
! len = 1; /* avoid getting error for allocating zero bytes */
! fp->uf_tm_count = 0;
! profile_zero(&fp->uf_tm_self);
! profile_zero(&fp->uf_tm_total);
! if (fp->uf_tml_count == NULL)
! fp->uf_tml_count = (int *)alloc_clear(
! (unsigned)(sizeof(int) * len));
! if (fp->uf_tml_total == NULL)
! fp->uf_tml_total = (proftime_T *)alloc_clear(
! (unsigned)(sizeof(proftime_T) * len));
! if (fp->uf_tml_self == NULL)
! fp->uf_tml_self = (proftime_T *)alloc_clear(
! (unsigned)(sizeof(proftime_T) * len));
! fp->uf_tml_idx = -1;
! if (fp->uf_tml_count == NULL || fp->uf_tml_total == NULL
! || fp->uf_tml_self == NULL)
! return; /* out of memory */
! fp->uf_prof_initialized = TRUE;
! }
fp->uf_profiling = TRUE;
}
***************
*** 2568,2574 ****
{
--todo;
fp = HI2UF(hi);
! if (fp->uf_profiling)
{
if (sorttab != NULL)
sorttab[st_len++] = fp;
--- 2576,2582 ----
{
--todo;
fp = HI2UF(hi);
! if (fp->uf_prof_initialized)
{
if (sorttab != NULL)
sorttab[st_len++] = fp;
*** ../vim-8.1.0129/src/version.c 2018-06-30 17:09:23.039956879 +0200
--- src/version.c 2018-06-30 18:12:14.990860555 +0200
***************
*** 791,792 ****
--- 791,794 ----
{ /* Add new patch number below this line */
+ /**/
+ 130,
/**/
--
hundred-and-one symptoms of being an internet addict:
149. You find your computer sexier than your girlfriend
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.