Skip to content

Commit cc73753

Browse files
authored
Fix library-cache-miss regression (#433)
* Fixed library-cache-miss regression * Changed 'includeCacheEntry' field to pointer type This allows a better memory management and avoids struct copy operations.
1 parent 3dcbb9b commit cc73753

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

Diff for: legacy/builder/container_find_includes.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ package builder
108108

109109
import (
110110
"encoding/json"
111+
"fmt"
111112
"os"
112113
"os/exec"
113114
"time"
@@ -196,19 +197,28 @@ type includeCacheEntry struct {
196197
Includepath *paths.Path
197198
}
198199

200+
func (entry *includeCacheEntry) String() string {
201+
return fmt.Sprintf("SourceFile: %s; Include: %s; IncludePath: %s",
202+
entry.Sourcefile, entry.Include, entry.Includepath)
203+
}
204+
205+
func (entry *includeCacheEntry) Equals(other *includeCacheEntry) bool {
206+
return entry.String() == other.String()
207+
}
208+
199209
type includeCache struct {
200210
// Are the cache contents valid so far?
201211
valid bool
202212
// Index into entries of the next entry to be processed. Unused
203213
// when the cache is invalid.
204214
next int
205-
entries []includeCacheEntry
215+
entries []*includeCacheEntry
206216
}
207217

208218
// Return the next cache entry. Should only be called when the cache is
209219
// valid and a next entry is available (the latter can be checked with
210220
// ExpectFile). Does not advance the cache.
211-
func (cache *includeCache) Next() includeCacheEntry {
221+
func (cache *includeCache) Next() *includeCacheEntry {
212222
return cache.entries[cache.next]
213223
}
214224

@@ -227,9 +237,9 @@ func (cache *includeCache) ExpectFile(sourcefile *paths.Path) {
227237
// invalidated, or was already invalid, an entry with the given values
228238
// is appended.
229239
func (cache *includeCache) ExpectEntry(sourcefile *paths.Path, include string, librarypath *paths.Path) {
230-
entry := includeCacheEntry{Sourcefile: sourcefile, Include: include, Includepath: librarypath}
240+
entry := &includeCacheEntry{Sourcefile: sourcefile, Include: include, Includepath: librarypath}
231241
if cache.valid {
232-
if cache.next < len(cache.entries) && cache.Next() == entry {
242+
if cache.next < len(cache.entries) && cache.Next().Equals(entry) {
233243
cache.next++
234244
} else {
235245
cache.valid = false

0 commit comments

Comments
 (0)