blob: 8bf475967adfebc65f9ac3a8f2d5af2485a93d6d [file] [log] [blame]
// Copyright 2018 syzkaller project authors. All rights reserved.
// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
package proggen
import (
"github.com/google/syzkaller/pkg/log"
"github.com/google/syzkaller/prog"
"github.com/google/syzkaller/tools/syz-trace2syz/parser"
)
type returnCache map[string]prog.Arg
func newRCache() returnCache {
return make(map[string]prog.Arg)
}
func returnCacheKey(syzType prog.Type, traceType parser.IrType) string {
a, ok := syzType.(*prog.ResourceType)
if !ok {
log.Fatalf("caching non resource type")
}
return a.Desc.Kind[0] + "-" + traceType.String()
}
func (r returnCache) cache(syzType prog.Type, traceType parser.IrType, arg prog.Arg) {
log.Logf(2, "caching resource: %v", returnCacheKey(syzType, traceType))
r[returnCacheKey(syzType, traceType)] = arg
}
func (r returnCache) get(syzType prog.Type, traceType parser.IrType) prog.Arg {
result := r[returnCacheKey(syzType, traceType)]
log.Logf(2, "fetching resource: %s, val: %s", returnCacheKey(syzType, traceType), result)
return result
}