Skip to content

Commit ab8fb89

Browse files
cmagliefacchinm
authored andcommitted
UniqueSourceFileQueue do not drop already processed files anymore
1 parent df7fbb6 commit ab8fb89

File tree

1 file changed

+17
-15
lines changed

1 file changed

+17
-15
lines changed

legacy/builder/container_find_includes.go

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -464,31 +464,33 @@ func (f *SourceFile) DepfilePath(ctx *types.Context) *paths.Path {
464464
return buildRoot(ctx, f.Origin).Join(f.RelativePath.String() + ".d")
465465
}
466466

467-
type UniqueSourceFileQueue []SourceFile
467+
type UniqueSourceFileQueue struct {
468+
queue []SourceFile
469+
curr int
470+
}
468471

469-
func (queue UniqueSourceFileQueue) Len() int {
470-
return len(queue)
472+
func (q *UniqueSourceFileQueue) Len() int {
473+
return len(q.queue) - q.curr
471474
}
472475

473-
func (queue *UniqueSourceFileQueue) Push(value SourceFile) {
474-
if !queue.Contains(value) {
475-
*queue = append(*queue, value)
476+
func (q *UniqueSourceFileQueue) Push(value SourceFile) {
477+
if !q.Contains(value) {
478+
q.queue = append(q.queue, value)
476479
}
477480
}
478481

479-
func (queue *UniqueSourceFileQueue) Pop() SourceFile {
480-
old := *queue
481-
x := old[0]
482-
*queue = old[1:]
483-
return x
482+
func (q *UniqueSourceFileQueue) Pop() SourceFile {
483+
res := q.queue[q.curr]
484+
q.curr++
485+
return res
484486
}
485487

486-
func (queue *UniqueSourceFileQueue) Empty() bool {
487-
return queue.Len() == 0
488+
func (q *UniqueSourceFileQueue) Empty() bool {
489+
return q.Len() == 0
488490
}
489491

490-
func (queue *UniqueSourceFileQueue) Contains(target SourceFile) bool {
491-
for _, elem := range *queue {
492+
func (q *UniqueSourceFileQueue) Contains(target SourceFile) bool {
493+
for _, elem := range q.queue {
492494
if elem.Origin == target.Origin && elem.RelativePath.EqualsTo(target.RelativePath) {
493495
return true
494496
}

0 commit comments

Comments
 (0)