mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-28 10:07:37 +01:00
Performance: inline keystone functions
This commit is contained in:
parent
7b2e5e7548
commit
333a6bb711
1 changed files with 6 additions and 7 deletions
|
@ -76,7 +76,9 @@ static uintptr_t fetchw_here(uintptr_t addr) {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
dwarf_loc_t of_eh_elf_loc(uintptr_t eh_elf_loc, uint8_t flags, int flag_id) {
|
inline dwarf_loc_t of_eh_elf_loc(
|
||||||
|
uintptr_t eh_elf_loc, uint8_t flags, int flag_id)
|
||||||
|
{
|
||||||
if((flags & (1 << flag_id)) == 0)
|
if((flags & (1 << flag_id)) == 0)
|
||||||
return DWARF_NULL_LOC;
|
return DWARF_NULL_LOC;
|
||||||
return DWARF_LOC(eh_elf_loc, DWARF_LOC_TYPE_VAL);
|
return DWARF_LOC(eh_elf_loc, DWARF_LOC_TYPE_VAL);
|
||||||
|
@ -84,15 +86,12 @@ dwarf_loc_t of_eh_elf_loc(uintptr_t eh_elf_loc, uint8_t flags, int flag_id) {
|
||||||
|
|
||||||
/** Sets `dest_reg` to `of_eh_elf_loc` if the provided register is not null.
|
/** Sets `dest_reg` to `of_eh_elf_loc` if the provided register is not null.
|
||||||
* Else, leave the `dest_reg` as-is. */
|
* Else, leave the `dest_reg` as-is. */
|
||||||
int set_dwarf_loc_ifdef(
|
inline void set_dwarf_loc_ifdef(
|
||||||
dwarf_loc_t* dest_reg, uintptr_t eh_elf_loc,
|
dwarf_loc_t* dest_reg, uintptr_t eh_elf_loc,
|
||||||
uint8_t flags, int flag_id)
|
uint8_t flags, int flag_id)
|
||||||
{
|
{
|
||||||
if((flags & (1 << flag_id)) != 0) {
|
if((flags & (1u << flag_id)) != 0)
|
||||||
*dest_reg = of_eh_elf_loc(eh_elf_loc, flags, flag_id);
|
*dest_reg = of_eh_elf_loc(eh_elf_loc, flags, flag_id);
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int eh_elf_step_cursor(struct cursor *cursor) {
|
int eh_elf_step_cursor(struct cursor *cursor) {
|
||||||
|
@ -155,7 +154,7 @@ int eh_elf_step_cursor(struct cursor *cursor) {
|
||||||
return -4;
|
return -4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((eh_elf_context.flags & (1 << UNWF_ERROR))) != 0) {
|
if(((eh_elf_context.flags & (1u << UNWF_ERROR))) != 0) {
|
||||||
// Error, somehow
|
// Error, somehow
|
||||||
Debug(3, "eh_elf unwinding FAILED (fl=%02x), IP=0x%016lx\n",
|
Debug(3, "eh_elf unwinding FAILED (fl=%02x), IP=0x%016lx\n",
|
||||||
eh_elf_context.flags, ip);
|
eh_elf_context.flags, ip);
|
||||||
|
|
Loading…
Reference in a new issue