summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ev.c95
1 files changed, 48 insertions, 47 deletions
diff --git a/ev.c b/ev.c
index 9e172b7..5dbd724 100644
--- a/ev.c
+++ b/ev.c
@@ -164,7 +164,7 @@ extern "C" {
#if __GNUC__ >= 3
# define expect(expr,value) __builtin_expect ((expr),(value))
-# define inline inline
+# define inline static inline
#else
# define expect(expr,value) (expr)
# define inline static
@@ -368,7 +368,7 @@ ev_feed_event (EV_P_ void *w, int revents)
{
W w_ = (W)w;
- if (w_->pending)
+ if (expect_false (w_->pending))
{
pendings [ABSPRI (w_)][w_->pending - 1].events |= revents;
return;
@@ -412,7 +412,7 @@ ev_feed_fd_event (EV_P_ int fd, int revents)
/*****************************************************************************/
-static void
+inline void
fd_reify (EV_P)
{
int i;
@@ -449,7 +449,7 @@ fd_reify (EV_P)
static void
fd_change (EV_P_ int fd)
{
- if (anfds [fd].reify)
+ if (expect_false (anfds [fd].reify))
return;
anfds [fd].reify = 1;
@@ -471,7 +471,7 @@ fd_kill (EV_P_ int fd)
}
}
-static int
+inline int
fd_valid (int fd)
{
#ifdef _WIN32
@@ -650,7 +650,7 @@ sigcb (EV_P_ struct ev_io *iow, int revents)
ev_feed_signal_event (EV_A_ signum + 1);
}
-inline void
+static void
fd_intern (int fd)
{
#ifdef _WIN32
@@ -1014,7 +1014,7 @@ call_pending (EV_P)
}
}
-static void
+inline void
timers_reify (EV_P)
{
while (timercnt && ((WT)timers [0])->at <= mn_now)
@@ -1042,7 +1042,7 @@ timers_reify (EV_P)
}
#if EV_PERIODICS
-static void
+inline void
periodics_reify (EV_P)
{
while (periodiccnt && ((WT)periodics [0])->at <= ev_rt_now)
@@ -1111,7 +1111,7 @@ time_update_monotonic (EV_P)
}
}
-static void
+inline void
time_update (EV_P)
{
int i;
@@ -1232,7 +1232,7 @@ ev_loop (EV_P_ int flags)
}
#endif
- if (block < 0.) block = 0.;
+ if (expect_false (block < 0.)) block = 0.;
}
method_poll (EV_A_ block);
@@ -1251,12 +1251,12 @@ ev_loop (EV_P_ int flags)
queue_events (EV_A_ (W *)idles, idlecnt, EV_IDLE);
/* queue check watchers, to be executed first */
- if (checkcnt)
+ if (expect_false (checkcnt))
queue_events (EV_A_ (W *)checks, checkcnt, EV_CHECK);
call_pending (EV_A);
- if (loop_done)
+ if (expect_false (loop_done))
break;
}
@@ -1328,7 +1328,7 @@ ev_io_start (EV_P_ struct ev_io *w)
{
int fd = w->fd;
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
assert (("ev_io_start called with negative fd", fd >= 0));
@@ -1344,7 +1344,7 @@ void
ev_io_stop (EV_P_ struct ev_io *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
assert (("ev_io_start called with illegal fd (must stay constant after start!)", w->fd >= 0 && w->fd < anfdmax));
@@ -1358,7 +1358,7 @@ ev_io_stop (EV_P_ struct ev_io *w)
void
ev_timer_start (EV_P_ struct ev_timer *w)
{
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
((WT)w)->at += mn_now;
@@ -1377,12 +1377,12 @@ void
ev_timer_stop (EV_P_ struct ev_timer *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
assert (("internal timer heap corruption", timers [((W)w)->active - 1] == w));
- if (((W)w)->active < timercnt--)
+ if (expect_true (((W)w)->active < timercnt--))
{
timers [((W)w)->active - 1] = timers [timercnt];
adjustheap ((WT *)timers, timercnt, ((W)w)->active - 1);
@@ -1417,7 +1417,7 @@ ev_timer_again (EV_P_ struct ev_timer *w)
void
ev_periodic_start (EV_P_ struct ev_periodic *w)
{
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
if (w->reschedule_cb)
@@ -1441,12 +1441,12 @@ void
ev_periodic_stop (EV_P_ struct ev_periodic *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
assert (("internal periodic heap corruption", periodics [((W)w)->active - 1] == w));
- if (((W)w)->active < periodiccnt--)
+ if (expect_true (((W)w)->active < periodiccnt--))
{
periodics [((W)w)->active - 1] = periodics [periodiccnt];
adjustheap ((WT *)periodics, periodiccnt, ((W)w)->active - 1);
@@ -1467,7 +1467,7 @@ ev_periodic_again (EV_P_ struct ev_periodic *w)
void
ev_idle_start (EV_P_ struct ev_idle *w)
{
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
ev_start (EV_A_ (W)w, ++idlecnt);
@@ -1479,7 +1479,7 @@ void
ev_idle_stop (EV_P_ struct ev_idle *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
idles [((W)w)->active - 1] = idles [--idlecnt];
@@ -1489,7 +1489,7 @@ ev_idle_stop (EV_P_ struct ev_idle *w)
void
ev_prepare_start (EV_P_ struct ev_prepare *w)
{
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
ev_start (EV_A_ (W)w, ++preparecnt);
@@ -1501,7 +1501,7 @@ void
ev_prepare_stop (EV_P_ struct ev_prepare *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
prepares [((W)w)->active - 1] = prepares [--preparecnt];
@@ -1511,7 +1511,7 @@ ev_prepare_stop (EV_P_ struct ev_prepare *w)
void
ev_check_start (EV_P_ struct ev_check *w)
{
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
ev_start (EV_A_ (W)w, ++checkcnt);
@@ -1523,7 +1523,7 @@ void
ev_check_stop (EV_P_ struct ev_check *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
checks [((W)w)->active - 1] = checks [--checkcnt];
@@ -1540,7 +1540,7 @@ ev_signal_start (EV_P_ struct ev_signal *w)
#if EV_MULTIPLICITY
assert (("signal watchers are only supported in the default loop", loop == ev_default_loop_ptr));
#endif
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
assert (("ev_signal_start called with illegal signal number", w->signum > 0));
@@ -1567,7 +1567,7 @@ void
ev_signal_stop (EV_P_ struct ev_signal *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
wlist_del ((WL *)&signals [w->signum - 1].head, (WL)w);
@@ -1583,7 +1583,7 @@ ev_child_start (EV_P_ struct ev_child *w)
#if EV_MULTIPLICITY
assert (("child watchers are only supported in the default loop", loop == ev_default_loop_ptr));
#endif
- if (ev_is_active (w))
+ if (expect_false (ev_is_active (w)))
return;
ev_start (EV_A_ (W)w, 1);
@@ -1594,7 +1594,7 @@ void
ev_child_stop (EV_P_ struct ev_child *w)
{
ev_clear_pending (EV_A_ (W)w);
- if (!ev_is_active (w))
+ if (expect_false (!ev_is_active (w)))
return;
wlist_del ((WL *)&childs [w->pid & (PID_HASHSIZE - 1)], (WL)w);
@@ -1641,26 +1641,27 @@ ev_once (EV_P_ int fd, int events, ev_tstamp timeout, void (*cb)(int revents, vo
{
struct ev_once *once = (struct ev_once *)ev_malloc (sizeof (struct ev_once));
- if (!once)
- cb (EV_ERROR | EV_READ | EV_WRITE | EV_TIMEOUT, arg);
- else
+ if (expect_false (!once))
{
- once->cb = cb;
- once->arg = arg;
+ cb (EV_ERROR | EV_READ | EV_WRITE | EV_TIMEOUT, arg);
+ return;
+ }
- ev_init (&once->io, once_cb_io);
- if (fd >= 0)
- {
- ev_io_set (&once->io, fd, events);
- ev_io_start (EV_A_ &once->io);
- }
+ once->cb = cb;
+ once->arg = arg;
- ev_init (&once->to, once_cb_to);
- if (timeout >= 0.)
- {
- ev_timer_set (&once->to, timeout, 0.);
- ev_timer_start (EV_A_ &once->to);
- }
+ ev_init (&once->io, once_cb_io);
+ if (fd >= 0)
+ {
+ ev_io_set (&once->io, fd, events);
+ ev_io_start (EV_A_ &once->io);
+ }
+
+ ev_init (&once->to, once_cb_to);
+ if (timeout >= 0.)
+ {
+ ev_timer_set (&once->to, timeout, 0.);
+ ev_timer_start (EV_A_ &once->to);
}
}