}
}
-void inline_size
+void inline_speed
queue_events (EV_P_ W *events, int eventcnt, int type)
{
int i;
{
WT w = heap [k];
- while (k && heap [k >> 1]->at > w->at)
+ while (k)
{
- heap [k] = heap [k >> 1];
+ int p = (k - 1) >> 1;
+
+ if (heap [p]->at <= w->at)
+ break;
+
+ heap [k] = heap [p];
((W)heap [k])->active = k + 1;
- k >>= 1;
+ k = p;
}
heap [k] = w;
{
WT w = heap [k];
- while (k < (N >> 1))
+ for (;;)
{
- int j = k << 1;
+ int c = (k << 1) + 1;
+
+ if (c >= N)
+ break;
- if (j + 1 < N && heap [j]->at > heap [j + 1]->at)
- ++j;
+ c += c + 1 < N && heap [c]->at > heap [c + 1]->at
+ ? 1 : 0;
- if (w->at <= heap [j]->at)
+ if (w->at <= heap [c]->at)
break;
- heap [k] = heap [j];
+ heap [k] = heap [c];
((W)heap [k])->active = k + 1;
- k = j;
+
+ k = c;
}
heap [k] = w;