Lines Matching refs:cache

512 flush_rs_cache (struct dwarf_rs_cache *cache)  in flush_rs_cache()  argument
516 cache->lru_head = DWARF_UNW_CACHE_SIZE - 1; in flush_rs_cache()
517 cache->lru_tail = 0; in flush_rs_cache()
522 cache->buckets[i].lru_chain = (i - 1); in flush_rs_cache()
523 cache->buckets[i].coll_chain = -1; in flush_rs_cache()
524 cache->buckets[i].ip = 0; in flush_rs_cache()
525 cache->buckets[i].valid = 0; in flush_rs_cache()
528 cache->hash[i] = -1; in flush_rs_cache()
534 struct dwarf_rs_cache *cache = &as->global_cache; in get_rs_cache() local
543 lock_acquire (&cache->lock, *saved_maskp); in get_rs_cache()
546 if (atomic_read (&as->cache_generation) != atomic_read (&cache->generation)) in get_rs_cache()
548 flush_rs_cache (cache); in get_rs_cache()
549 cache->generation = as->cache_generation; in get_rs_cache()
552 return cache; in get_rs_cache()
556 put_rs_cache (unw_addr_space_t as, struct dwarf_rs_cache *cache, in put_rs_cache() argument
563 lock_release (&cache->lock, *saved_maskp); in put_rs_cache()
584 rs_lookup (struct dwarf_rs_cache *cache, struct dwarf_cursor *c) in rs_lookup() argument
586 dwarf_reg_state_t *rs = cache->buckets + c->hint; in rs_lookup()
595 index = cache->hash[hash (ip)]; in rs_lookup()
599 rs = cache->buckets + index; in rs_lookup()
605 c->hint = cache->buckets[c->prev_rs].hint = in rs_lookup()
606 (rs - cache->buckets); in rs_lookup()
611 rs = cache->buckets + rs->coll_chain; in rs_lookup()
616 rs_new (struct dwarf_rs_cache *cache, struct dwarf_cursor * c) in rs_new() argument
622 head = cache->lru_head; in rs_new()
623 rs = cache->buckets + head; in rs_new()
624 cache->lru_head = rs->lru_chain; in rs_new()
627 cache->buckets[cache->lru_tail].lru_chain = head; in rs_new()
628 cache->lru_tail = head; in rs_new()
634 tmp = cache->buckets + cache->hash[index]; in rs_new()
643 cache->hash[index] = tmp->coll_chain; in rs_new()
651 tmp = cache->buckets + tmp->coll_chain; in rs_new()
657 rs->coll_chain = cache->hash[index]; in rs_new()
658 cache->hash[index] = rs - cache->buckets; in rs_new()
868 struct dwarf_rs_cache *cache; in dwarf_find_save_locs() local
875 cache = get_rs_cache(c->as, &saved_mask); in dwarf_find_save_locs()
876 rs = rs_lookup(cache, c); in dwarf_find_save_locs()
888 put_rs_cache (c->as, cache, &saved_mask); in dwarf_find_save_locs()
893 rs = rs_new (cache, c); in dwarf_find_save_locs()
895 cache->buckets[c->prev_rs].hint = rs - cache->buckets; in dwarf_find_save_locs()
898 c->prev_rs = rs - cache->buckets; in dwarf_find_save_locs()
904 put_rs_cache (c->as, cache, &saved_mask); in dwarf_find_save_locs()