use ev_active instead of explicit casts

This commit is contained in:
Marc Alexander Lehmann 2008-05-02 08:13:16 +00:00
parent 6f82a15086
commit 6557056ac0
2 changed files with 28 additions and 24 deletions

View File

@ -3,7 +3,7 @@ Revision history for libev, a high-performance and full-featured event loop.
- use 1-based heaps, simplifies code, reduces codesize, makes
for better cache-efficiency and increases memory requirements
by up to two pointers/loop.
- fix a potential aliasing issue.
- fix a potential aliasing issue in ev_timer_again.
3.31 Wed Apr 16 20:45:04 CEST 2008
- added last minute fix for ev_poll.c by Brandon Black.

50
ev.c
View File

@ -774,12 +774,12 @@ upheap (WT *heap, int k)
break;
heap [k] = heap [p];
((W)heap [k])->active = k;
ev_active (heap [k]) = k;
k = p;
}
heap [k] = w;
((W)heap [k])->active = k;
ev_active (heap [k]) = k;
}
/* away from the root */
@ -802,13 +802,13 @@ downheap (WT *heap, int N, int k)
break;
heap [k] = heap [c];
((W)heap [k])->active = k;
ev_active (heap [k]) = k;
k = c;
}
heap [k] = w;
((W)heap [k])->active = k;
ev_active (heap [k]) = k;
}
void inline_size
@ -1897,7 +1897,7 @@ ev_timer_start (EV_P_ ev_timer *w)
timers [timercnt] = (WT)w;
upheap (timers, timercnt);
/*assert (("internal timer heap corruption", timers [((W)w)->active] == w));*/
/*assert (("internal timer heap corruption", timers [ev_active (w)] == w));*/
}
void noinline
@ -1907,10 +1907,10 @@ ev_timer_stop (EV_P_ ev_timer *w)
if (expect_false (!ev_is_active (w)))
return;
assert (("internal timer heap corruption", timers [((W)w)->active] == (WT)w));
{
int active = ((W)w)->active;
int active = ev_active (w);
assert (("internal timer heap corruption", timers [active] == (WT)w));
if (expect_true (active < timercnt))
{
@ -1934,7 +1934,7 @@ ev_timer_again (EV_P_ ev_timer *w)
if (w->repeat)
{
ev_at (w) = mn_now + w->repeat;
adjustheap (timers, timercnt, ((W)w)->active);
adjustheap (timers, timercnt, ev_active (w));
}
else
ev_timer_stop (EV_A_ w);
@ -1969,7 +1969,7 @@ ev_periodic_start (EV_P_ ev_periodic *w)
periodics [periodiccnt] = (WT)w;
upheap (periodics, periodiccnt);
/*assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w));*/
/*assert (("internal periodic heap corruption", periodics [ev_active (w)] == w));*/
}
void noinline
@ -1979,10 +1979,10 @@ ev_periodic_stop (EV_P_ ev_periodic *w)
if (expect_false (!ev_is_active (w)))
return;
assert (("internal periodic heap corruption", periodics [((W)w)->active] == (WT)w));
{
int active = ((W)w)->active;
int active = ev_active (w);
assert (("internal periodic heap corruption", periodics [active] == (WT)w));
if (expect_true (active < periodiccnt))
{
@ -2370,10 +2370,10 @@ ev_idle_stop (EV_P_ ev_idle *w)
return;
{
int active = ((W)w)->active;
int active = ev_active (w);
idles [ABSPRI (w)][active - 1] = idles [ABSPRI (w)][--idlecnt [ABSPRI (w)]];
((W)idles [ABSPRI (w)][active - 1])->active = active;
ev_active (idles [ABSPRI (w)][active - 1]) = active;
ev_stop (EV_A_ (W)w);
--idleall;
@ -2400,9 +2400,10 @@ ev_prepare_stop (EV_P_ ev_prepare *w)
return;
{
int active = ((W)w)->active;
int active = ev_active (w);
prepares [active - 1] = prepares [--preparecnt];
((W)prepares [active - 1])->active = active;
ev_active (prepares [active - 1]) = active;
}
ev_stop (EV_A_ (W)w);
@ -2427,9 +2428,10 @@ ev_check_stop (EV_P_ ev_check *w)
return;
{
int active = ((W)w)->active;
int active = ev_active (w);
checks [active - 1] = checks [--checkcnt];
((W)checks [active - 1])->active = active;
ev_active (checks [active - 1]) = active;
}
ev_stop (EV_A_ (W)w);
@ -2535,9 +2537,10 @@ ev_fork_stop (EV_P_ ev_fork *w)
return;
{
int active = ((W)w)->active;
int active = ev_active (w);
forks [active - 1] = forks [--forkcnt];
((W)forks [active - 1])->active = active;
ev_active (forks [active - 1]) = active;
}
ev_stop (EV_A_ (W)w);
@ -2566,9 +2569,10 @@ ev_async_stop (EV_P_ ev_async *w)
return;
{
int active = ((W)w)->active;
int active = ev_active (w);
asyncs [active - 1] = asyncs [--asynccnt];
((W)asyncs [active - 1])->active = active;
ev_active (asyncs [active - 1]) = active;
}
ev_stop (EV_A_ (W)w);