aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/codesearch/codesearch.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2026-01-21 15:48:25 +0100
committerDmitry Vyukov <dvyukov@google.com>2026-01-22 11:23:54 +0000
commit623df388782dcfe70f4f147cb24197e535f9c89b (patch)
treee815bc3ae2e0c315ceccf2cf22d887fea17363b9 /pkg/codesearch/codesearch.go
parentc1de3220482e317729f83e4e7d32fc30d46ec1e7 (diff)
pkg/codesearch: reduce memory consumption a bit more
Use uint32 instead of int for line numbers (2G lines should be enough for everyone). Reorder fields to remove unnecessary paddings.
Diffstat (limited to 'pkg/codesearch/codesearch.go')
-rw-r--r--pkg/codesearch/codesearch.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/pkg/codesearch/codesearch.go b/pkg/codesearch/codesearch.go
index 08018a403..33a87e712 100644
--- a/pkg/codesearch/codesearch.go
+++ b/pkg/codesearch/codesearch.go
@@ -266,6 +266,7 @@ func (index *Index) FindReferences(contextFile, name, srcPrefix string, contextL
if srcPrefix != "" {
srcPrefix = filepath.Clean(srcPrefix)
}
+ contextLines = min(contextLines, 10000)
totalCount := 0
var results []ReferenceInfo
for _, def := range index.db.Definitions {
@@ -289,8 +290,8 @@ func (index *Index) FindReferences(contextFile, name, srcPrefix string, contextL
if contextLines > 0 {
lines := LineRange{
File: def.Body.File,
- StartLine: max(def.Body.StartLine, ref.Line-contextLines),
- EndLine: min(def.Body.EndLine, ref.Line+contextLines),
+ StartLine: max(def.Body.StartLine, uint32(max(0, int(ref.Line)-contextLines))),
+ EndLine: min(def.Body.EndLine, ref.Line+uint32(contextLines)),
}
var err error
snippet, err = index.formatSource(lines, true)
@@ -303,7 +304,7 @@ func (index *Index) FindReferences(contextFile, name, srcPrefix string, contextL
ReferencingEntityName: def.Name,
ReferenceKind: ref.Kind.String(),
SourceFile: def.Body.File,
- SourceLine: ref.Line,
+ SourceLine: int(ref.Line),
SourceSnippet: snippet,
})
}
@@ -342,7 +343,7 @@ func (index *Index) formatSource(lines LineRange, includeLines bool) (string, er
if !osutil.IsExist(file) {
continue
}
- return formatSourceFile(file, lines.StartLine, lines.EndLine, includeLines)
+ return formatSourceFile(file, int(lines.StartLine), int(lines.EndLine), includeLines)
}
return "", fmt.Errorf("codesearch: can't find %q file in any of %v", lines.File, index.srcDirs)
}