mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-26 09:07:38 +01:00
Remove IA64_UNW_SCRIPT_CACHE macro. Move script cache info into
separate ia64_script_cache structure. (unw.cache_generation): New member. (unw.global_cache): Ditto. (ia64_per_thread_cache): New macro. (ia64_script_cache_init): Ditto. (ia64_script_cache_init): Add declaration. (Logical change 1.23)
This commit is contained in:
parent
fb2c7eb56d
commit
126ca10566
1 changed files with 7 additions and 17 deletions
|
@ -24,13 +24,12 @@ License. */
|
||||||
#ifndef unwind_i_h
|
#ifndef unwind_i_h
|
||||||
#define unwind_i_h
|
#define unwind_i_h
|
||||||
|
|
||||||
#define IA64_UNW_SCRIPT_CACHE
|
|
||||||
|
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#include <libunwind-ia64.h>
|
#include <libunwind-ia64.h>
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include "mempool.h"
|
#include "mempool.h"
|
||||||
|
|
||||||
#define struct_offset(str,fld) ((char *)&((str *)NULL)->fld - (char *) 0)
|
#define struct_offset(str,fld) ((char *)&((str *)NULL)->fld - (char *) 0)
|
||||||
|
@ -151,15 +150,11 @@ struct ia64_cursor
|
||||||
unw_word_t eh_args[4]; /* exception handler arguments */
|
unw_word_t eh_args[4]; /* exception handler arguments */
|
||||||
unw_word_t sigcontext_loc; /* location of sigcontext or NULL */
|
unw_word_t sigcontext_loc; /* location of sigcontext or NULL */
|
||||||
|
|
||||||
#ifdef IA64_UNW_SCRIPT_CACHE
|
|
||||||
short hint;
|
short hint;
|
||||||
short prev_script;
|
short prev_script;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef IA64_UNW_SCRIPT_CACHE
|
#include "script.h"
|
||||||
# include "script.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Bits 0 to 2 of an location are used to encode its type:
|
/* Bits 0 to 2 of an location are used to encode its type:
|
||||||
|
|
||||||
|
@ -441,16 +436,8 @@ struct ia64_global_unwind_state
|
||||||
struct mempool state_record_pool;
|
struct mempool state_record_pool;
|
||||||
struct mempool labeled_state_pool;
|
struct mempool labeled_state_pool;
|
||||||
|
|
||||||
#ifdef IA64_UNW_SCRIPT_CACHE
|
u_int32_t cache_generation;
|
||||||
unsigned short lru_head; /* index of lead-recently used script */
|
struct ia64_script_cache global_cache;
|
||||||
unsigned short lru_tail; /* index of most-recently used script */
|
|
||||||
|
|
||||||
/* hash table that maps instruction pointer to script index: */
|
|
||||||
unsigned short hash[IA64_UNW_HASH_SIZE];
|
|
||||||
|
|
||||||
/* script cache: */
|
|
||||||
struct ia64_script cache[IA64_UNW_CACHE_SIZE];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
# if IA64_UNW_DEBUG
|
# if IA64_UNW_DEBUG
|
||||||
long debug_level;
|
long debug_level;
|
||||||
|
@ -497,6 +484,8 @@ struct ia64_global_unwind_state
|
||||||
#define ia64_create_state_record UNW_OBJ(create_state_record)
|
#define ia64_create_state_record UNW_OBJ(create_state_record)
|
||||||
#define ia64_free_state_record UNW_OBJ(free_state_record)
|
#define ia64_free_state_record UNW_OBJ(free_state_record)
|
||||||
#define ia64_find_save_locs UNW_OBJ(find_save_locs)
|
#define ia64_find_save_locs UNW_OBJ(find_save_locs)
|
||||||
|
#define ia64_per_thread_cache UNW_OBJ(per_thread_cache)
|
||||||
|
#define ia64_script_cache_init UNW_OBJ(script_cache_init)
|
||||||
#define ia64_init UNW_OBJ(init)
|
#define ia64_init UNW_OBJ(init)
|
||||||
#define ia64_access_reg UNW_OBJ(access_reg)
|
#define ia64_access_reg UNW_OBJ(access_reg)
|
||||||
#define ia64_access_fpreg UNW_OBJ(access_fpreg)
|
#define ia64_access_fpreg UNW_OBJ(access_fpreg)
|
||||||
|
@ -510,6 +499,7 @@ extern int ia64_create_state_record (struct ia64_cursor *c,
|
||||||
struct ia64_state_record *sr);
|
struct ia64_state_record *sr);
|
||||||
extern int ia64_free_state_record (struct ia64_state_record *sr);
|
extern int ia64_free_state_record (struct ia64_state_record *sr);
|
||||||
extern int ia64_find_save_locs (struct ia64_cursor *c);
|
extern int ia64_find_save_locs (struct ia64_cursor *c);
|
||||||
|
extern void ia64_script_cache_init (struct ia64_script_cache *cache);
|
||||||
extern void ia64_init (void);
|
extern void ia64_init (void);
|
||||||
extern int ia64_access_reg (struct ia64_cursor *c, unw_regnum_t reg,
|
extern int ia64_access_reg (struct ia64_cursor *c, unw_regnum_t reg,
|
||||||
unw_word_t *valp, int write);
|
unw_word_t *valp, int write);
|
||||||
|
|
Loading…
Reference in a new issue