Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions codegraph-kernel/src/resolve/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -783,6 +783,9 @@ pub struct KernelResolver {
/// is_generated_file per path — the >256-pool scans run its ~25
/// regexes once per candidate; pools share few unique paths.
gen_path_memo: HashMap<String, bool>,
/// local_declaration_scope, by candidate id — its own map so the key
/// needs no "local:"-prefixed format! alloc.
local_decl_scope_memo: HashMap<String, Option<(i64, i64)>>,
language_type_scope_memo: HashMap<String, Rc<language_type_scope::LanguageTypeScope>>,
scala_package_object_membership_memo: HashMap<String, Option<(String, i64, i64)>>,
cpp_default_declaration_memo: HashMap<String, declarations_upstream::CppDefaultDeclarationIndex>,
Expand Down Expand Up @@ -996,6 +999,7 @@ impl KernelResolver {
bare_name_memo: None,
bare_receiver_memo: HashMap::new(),
gen_path_memo: HashMap::new(),
local_decl_scope_memo: HashMap::new(),
language_type_scope_memo: HashMap::new(),
scala_package_object_membership_memo: HashMap::new(),
cpp_default_declaration_memo: HashMap::new(),
Expand Down
8 changes: 5 additions & 3 deletions codegraph-kernel/src/resolve/resolver_upstream.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,8 +177,10 @@ impl KernelResolver {
{
return Ok(None);
}
let key = format!("local:{}", n.id);
if let Some(hit) = self.lexical_scope_memo.get(&key) {
// Own memo keyed on n.id — the shared lexical_scope_memo needed a
// "local:"-prefixed format! key (a String alloc per call) only for
// namespacing.
if let Some(hit) = self.local_decl_scope_memo.get(n.id.as_str()) {
return Ok(*hit);
}
let scope = self
Expand All @@ -194,7 +196,7 @@ impl KernelResolver {
})
.min_by_key(|f| f.end_line - f.start_line)
.map(|f| (f.start_line, f.end_line));
self.lexical_scope_memo.insert(key, scope);
self.local_decl_scope_memo.insert(n.id.clone(), scope);
Ok(scope)
}

Expand Down
Loading