@@ -464,31 +464,33 @@ func (f *SourceFile) DepfilePath(ctx *types.Context) *paths.Path {
464
464
return buildRoot (ctx , f .Origin ).Join (f .RelativePath .String () + ".d" )
465
465
}
466
466
467
- type UniqueSourceFileQueue []SourceFile
467
+ type UniqueSourceFileQueue struct {
468
+ queue []SourceFile
469
+ curr int
470
+ }
468
471
469
- func (queue UniqueSourceFileQueue ) Len () int {
470
- return len (queue )
472
+ func (q * UniqueSourceFileQueue ) Len () int {
473
+ return len (q . queue ) - q . curr
471
474
}
472
475
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 )
476
479
}
477
480
}
478
481
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
484
486
}
485
487
486
- func (queue * UniqueSourceFileQueue ) Empty () bool {
487
- return queue .Len () == 0
488
+ func (q * UniqueSourceFileQueue ) Empty () bool {
489
+ return q .Len () == 0
488
490
}
489
491
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 {
492
494
if elem .Origin == target .Origin && elem .RelativePath .EqualsTo (target .RelativePath ) {
493
495
return true
494
496
}
0 commit comments