MCPcopy Create free account
hub / github.com/beefytech/Beef / Merge

Method Merge

IDEHelper/Backend/BeMCContext.cpp:669–793  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

667}
668
669BeVTrackingList* BeVTrackingContext::Merge(BeVTrackingList* prevDestEntry, BeVTrackingList* mergeFrom)
670{
671 if (prevDestEntry == NULL)
672 return mergeFrom;
673 if (mergeFrom->mSize == 0)
674 return prevDestEntry;
675 if (prevDestEntry->mSize == 0)
676 return mergeFrom;
677
678 int newSize = prevDestEntry->mSize;
679 auto prevItr = prevDestEntry->begin();
680 auto prevEnd = prevDestEntry->end();
681 auto mergeFromItr = mergeFrom->begin();
682 auto mergeFromEnd = mergeFrom->end();
683 while ((prevItr != prevEnd) && (mergeFromItr != mergeFromEnd))
684 {
685 int prevIdx = *prevItr;
686 int mergeIdx = *mergeFromItr;
687 bool done = false;
688
689 while (mergeIdx < prevIdx)
690 {
691 newSize++;
692 ++mergeFromItr;
693 if (mergeFromItr == mergeFromEnd)
694 {
695 done = true;
696 break;
697 }
698 mergeIdx = *mergeFromItr;
699 }
700 if (done)
701 break;
702
703 while (prevIdx < mergeIdx)
704 {
705 ++prevItr;
706 if (prevItr == prevEnd)
707 {
708 done = true;
709 break;
710 }
711 prevIdx = *prevItr;
712 }
713 if (done)
714 break;
715 if (prevIdx == mergeIdx)
716 {
717 ++prevItr;
718 ++mergeFromItr;
719 }
720 }
721 while (mergeFromItr != mergeFromEnd)
722 {
723 newSize++;
724 ++mergeFromItr;
725 }
726

Callers 3

DetectLoopsMethod · 0.80
GenerateLivenessMethod · 0.80
InitializedPassHelperMethod · 0.80

Calls 3

beginMethod · 0.45
endMethod · 0.45
AllocBytesMethod · 0.45

Tested by

no test coverage detected