Browse Source

- argl, same bug as with check etc. watchers in timers and periodics

- get rid of some asserts, keep
  a) asserts that catch caller mistakes ("croak")
  b) asserts that help gcc immensely optimising the code...
master
Marc Alexander Lehmann 14 years ago
parent
commit
0f27a2bedb
  1. 44
      ev.c

44
ev.c

@ -854,7 +854,7 @@ ev_backend (EV_P)
return backend;
}
static void
static void noinline
loop_init (EV_P_ unsigned int flags)
{
if (!backend)
@ -902,7 +902,7 @@ loop_init (EV_P_ unsigned int flags)
}
}
static void
static void noinline
loop_destroy (EV_P)
{
int i;
@ -939,7 +939,7 @@ loop_destroy (EV_P)
backend = 0;
}
static void
void inline_size
loop_fork (EV_P)
{
#if EV_USE_PORT
@ -1099,7 +1099,7 @@ call_pending (EV_P)
if (expect_true (p->w))
{
assert (("non-pending watcher on pending list", p->w->pending));
/*assert (("non-pending watcher on pending list", p->w->pending));*/
p->w->pending = 0;
EV_CB_INVOKE (p->w, p->events);
@ -1114,7 +1114,7 @@ timers_reify (EV_P)
{
ev_timer *w = timers [0];
assert (("inactive timer on timer heap detected", ev_is_active (w)));
/*assert (("inactive timer on timer heap detected", ev_is_active (w)));*/
/* first reschedule or stop timer */
if (w->repeat)
@ -1142,7 +1142,7 @@ periodics_reify (EV_P)
{
ev_periodic *w = periodics [0];
assert (("inactive timer on periodic heap detected", ev_is_active (w)));
/*assert (("inactive timer on periodic heap detected", ev_is_active (w)));*/
/* first reschedule or stop timer */
if (w->reschedule_cb)
@ -1484,7 +1484,7 @@ ev_timer_start (EV_P_ ev_timer *w)
timers [timercnt - 1] = w;
upheap ((WT *)timers, timercnt - 1);
assert (("internal timer heap corruption", timers [((W)w)->active - 1] == w));
/*assert (("internal timer heap corruption", timers [((W)w)->active - 1] == w));*/
}
void
@ -1496,11 +1496,15 @@ ev_timer_stop (EV_P_ ev_timer *w)
assert (("internal timer heap corruption", timers [((W)w)->active - 1] == w));
if (expect_true (((W)w)->active < timercnt--))
{
timers [((W)w)->active - 1] = timers [timercnt];
adjustheap ((WT *)timers, timercnt, ((W)w)->active - 1);
}
{
int active = ((W)w)->active;
if (expect_true (--active < --timercnt))
{
timers [active] = timers [timercnt];
adjustheap ((WT *)timers, timercnt, active);
}
}
((WT)w)->at -= mn_now;
@ -1548,7 +1552,7 @@ ev_periodic_start (EV_P_ ev_periodic *w)
periodics [periodiccnt - 1] = w;
upheap ((WT *)periodics, periodiccnt - 1);
assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w));
/*assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w));*/
}
void
@ -1560,11 +1564,15 @@ ev_periodic_stop (EV_P_ ev_periodic *w)
assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w));
if (expect_true (((W)w)->active < periodiccnt--))
{
periodics [((W)w)->active - 1] = periodics [periodiccnt];
adjustheap ((WT *)periodics, periodiccnt, ((W)w)->active - 1);
}
{
int active = ((W)w)->active;
if (expect_true (--active < --periodiccnt))
{
periodics [active] = periodics [periodiccnt];
adjustheap ((WT *)periodics, periodiccnt, active);
}
}
ev_stop (EV_A_ (W)w);
}

Loading…
Cancel
Save