Lines Matching refs:cache
66 intern_fde (Dwarf_CFI *cache, const Dwarf_FDE *entry) in intern_fde() argument
69 struct dwarf_cie *cie = __libdw_find_cie (cache, entry->CIE_pointer); in intern_fde()
82 if (unlikely (read_encoded_value (cache, cie->fde_encoding, in intern_fde()
84 || unlikely (read_encoded_value (cache, cie->fde_encoding & 0x0f, in intern_fde()
122 struct dwarf_fde **tres = tsearch (fde, &cache->fde_tree, &compare_fde); in intern_fde()
143 __libdw_fde_by_offset (Dwarf_CFI *cache, Dwarf_Off offset) in __libdw_fde_by_offset() argument
147 int result = INTUSE(dwarf_next_cfi) (cache->e_ident, in __libdw_fde_by_offset()
148 &cache->data->d, CFI_IS_EH (cache), in __libdw_fde_by_offset()
162 struct dwarf_fde *fde = intern_fde (cache, &entry.fde); in __libdw_fde_by_offset()
167 if (cache->next_offset == offset) in __libdw_fde_by_offset()
168 cache->next_offset = next_offset; in __libdw_fde_by_offset()
175 binary_search_fde (Dwarf_CFI *cache, Dwarf_Addr address) in binary_search_fde() argument
177 const size_t size = 2 * encoded_value_size (&cache->data->d, cache->e_ident, in binary_search_fde()
178 cache->search_table_encoding, in binary_search_fde()
186 .d = { .d_buf = (void *) cache->search_table, in binary_search_fde()
187 .d_size = cache->search_table_len } in binary_search_fde()
192 .e_ident = cache->e_ident, in binary_search_fde()
193 .datarel = cache->search_table_vaddr, in binary_search_fde()
194 .frame_vaddr = cache->search_table_vaddr, in binary_search_fde()
198 size_t l = 0, u = cache->search_table_entries; in binary_search_fde()
205 const uint8_t *p = &cache->search_table[idx * size]; in binary_search_fde()
208 cache->search_table_encoding, &p, in binary_search_fde()
219 cache->search_table_encoding, &p, in binary_search_fde()
226 if (l < cache->search_table_entries) in binary_search_fde()
231 (&dummy_cfi, cache->search_table_encoding, &p, in binary_search_fde()
238 return fde - cache->frame_vaddr; in binary_search_fde()
247 __libdw_find_fde (Dwarf_CFI *cache, Dwarf_Addr address) in __libdw_find_fde() argument
252 struct dwarf_fde **found = tfind (&fde_key, &cache->fde_tree, &compare_fde); in __libdw_find_fde()
257 if (cache->search_table != NULL) in __libdw_find_fde()
259 Dwarf_Off offset = binary_search_fde (cache, address); in __libdw_find_fde()
262 struct dwarf_fde *fde = __libdw_fde_by_offset (cache, offset); in __libdw_find_fde()
281 Dwarf_Off last_offset = cache->next_offset; in __libdw_find_fde()
283 int result = INTUSE(dwarf_next_cfi) (cache->e_ident, in __libdw_find_fde()
284 &cache->data->d, CFI_IS_EH (cache), in __libdw_find_fde()
285 last_offset, &cache->next_offset, in __libdw_find_fde()
291 if (cache->next_offset == last_offset) in __libdw_find_fde()
302 __libdw_intern_cie (cache, last_offset, &entry.cie); in __libdw_find_fde()
307 struct dwarf_fde *fde = intern_fde (cache, &entry.fde); in __libdw_find_fde()