Commit c96fc081 by Ian Lance Taylor

cmd/go: look for tool build ID before hashing entire file

    
    Also fix the key used to store the ID.
    
    This is a significant speedup in cmd/go run time.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194257

From-SVN: r275559
parent 5447e8e2
5c3f52ffbae7a9bb59bce63cd2cffdd8af8f4a92 68038b4fdf1456482af986cb05dcf3121bd43ffc
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -291,14 +291,19 @@ func (b *Builder) gccgoToolID(name, language string) (string, error) { ...@@ -291,14 +291,19 @@ func (b *Builder) gccgoToolID(name, language string) (string, error) {
exe = lp exe = lp
} }
} }
if _, err := os.Stat(exe); err != nil { id, err = buildid.ReadFile(exe)
return "", fmt.Errorf("%s: can not find compiler %q: %v; output %q", name, exe, err, out) if err != nil {
return "", err
}
// If we can't find a build ID, use a hash.
if id == "" {
id = b.fileHash(exe)
} }
id = b.fileHash(exe)
} }
b.id.Lock() b.id.Lock()
b.toolIDCache[name] = id b.toolIDCache[key] = id
b.id.Unlock() b.id.Unlock()
return id, nil return id, nil
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment