ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev.c
(Generate patch)

Comparing libev/ev.c (file contents):
Revision 1.178 by root, Tue Dec 11 18:36:11 2007 UTC vs.
Revision 1.179 by root, Tue Dec 11 21:04:40 2007 UTC

476 pendings [pri][w_->pending - 1].w = w_; 476 pendings [pri][w_->pending - 1].w = w_;
477 pendings [pri][w_->pending - 1].events = revents; 477 pendings [pri][w_->pending - 1].events = revents;
478 } 478 }
479} 479}
480 480
481void inline_size 481void inline_speed
482queue_events (EV_P_ W *events, int eventcnt, int type) 482queue_events (EV_P_ W *events, int eventcnt, int type)
483{ 483{
484 int i; 484 int i;
485 485
486 for (i = 0; i < eventcnt; ++i) 486 for (i = 0; i < eventcnt; ++i)
638void inline_speed 638void inline_speed
639upheap (WT *heap, int k) 639upheap (WT *heap, int k)
640{ 640{
641 WT w = heap [k]; 641 WT w = heap [k];
642 642
643 while (k && heap [k >> 1]->at > w->at) 643 while (k)
644 { 644 {
645 int p = (k - 1) >> 1;
646
647 if (heap [p]->at <= w->at)
648 break;
649
645 heap [k] = heap [k >> 1]; 650 heap [k] = heap [p];
646 ((W)heap [k])->active = k + 1; 651 ((W)heap [k])->active = k + 1;
647 k >>= 1; 652 k = p;
648 } 653 }
649 654
650 heap [k] = w; 655 heap [k] = w;
651 ((W)heap [k])->active = k + 1; 656 ((W)heap [k])->active = k + 1;
652 657
655void inline_speed 660void inline_speed
656downheap (WT *heap, int N, int k) 661downheap (WT *heap, int N, int k)
657{ 662{
658 WT w = heap [k]; 663 WT w = heap [k];
659 664
660 while (k < (N >> 1)) 665 for (;;)
661 { 666 {
662 int j = k << 1; 667 int c = (k << 1) + 1;
663 668
664 if (j + 1 < N && heap [j]->at > heap [j + 1]->at) 669 if (c >= N)
665 ++j;
666
667 if (w->at <= heap [j]->at)
668 break; 670 break;
669 671
672 c += c + 1 < N && heap [c]->at > heap [c + 1]->at
673 ? 1 : 0;
674
675 if (w->at <= heap [c]->at)
676 break;
677
670 heap [k] = heap [j]; 678 heap [k] = heap [c];
671 ((W)heap [k])->active = k + 1; 679 ((W)heap [k])->active = k + 1;
680
672 k = j; 681 k = c;
673 } 682 }
674 683
675 heap [k] = w; 684 heap [k] = w;
676 ((W)heap [k])->active = k + 1; 685 ((W)heap [k])->active = k + 1;
677} 686}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines