Bug 979894. Add unwind information for pixman arm functions. r=jseward

This isn't technically correct because these functions will never call
functions that throw exceptions, however it lets the profiler unwind them.
The unwinding will also probably be wrong during prologue/epilogue. The right
solution is probably to use cfi.
This commit is contained in:
Jeff Muizelaar 2014-03-10 12:31:58 -04:00
Родитель 4489adec63
Коммит 3b0419d87e
3 изменённых файлов: 25 добавлений и 0 удалений

Просмотреть файл

@ -954,6 +954,7 @@ generate_composite_function \
*/ */
.macro pixman_composite_over_n_8_0565_init .macro pixman_composite_over_n_8_0565_init
add DUMMY, sp, #ARGS_STACK_OFFSET add DUMMY, sp, #ARGS_STACK_OFFSET
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d11[0]}, [DUMMY] vld1.32 {d11[0]}, [DUMMY]
vdup.8 d8, d11[0] vdup.8 d8, d11[0]
@ -981,6 +982,7 @@ generate_composite_function \
.macro pixman_composite_over_8888_n_0565_init .macro pixman_composite_over_8888_n_0565_init
add DUMMY, sp, #(ARGS_STACK_OFFSET + 8) add DUMMY, sp, #(ARGS_STACK_OFFSET + 8)
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d24[0]}, [DUMMY] vld1.32 {d24[0]}, [DUMMY]
vdup.8 d24, d24[3] vdup.8 d24, d24[3]
@ -1447,6 +1449,7 @@ generate_composite_function \
.macro pixman_composite_over_n_8_8888_init .macro pixman_composite_over_n_8_8888_init
add DUMMY, sp, #ARGS_STACK_OFFSET add DUMMY, sp, #ARGS_STACK_OFFSET
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d11[0]}, [DUMMY] vld1.32 {d11[0]}, [DUMMY]
vdup.8 d8, d11[0] vdup.8 d8, d11[0]
@ -1518,6 +1521,7 @@ generate_composite_function \
.macro pixman_composite_over_n_8_8_init .macro pixman_composite_over_n_8_8_init
add DUMMY, sp, #ARGS_STACK_OFFSET add DUMMY, sp, #ARGS_STACK_OFFSET
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d8[0]}, [DUMMY] vld1.32 {d8[0]}, [DUMMY]
vdup.8 d8, d8[3] vdup.8 d8, d8[3]
@ -1619,6 +1623,7 @@ generate_composite_function \
.macro pixman_composite_over_n_8888_8888_ca_init .macro pixman_composite_over_n_8888_8888_ca_init
add DUMMY, sp, #ARGS_STACK_OFFSET add DUMMY, sp, #ARGS_STACK_OFFSET
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d11[0]}, [DUMMY] vld1.32 {d11[0]}, [DUMMY]
vdup.8 d8, d11[0] vdup.8 d8, d11[0]
@ -1788,6 +1793,7 @@ generate_composite_function \
.macro pixman_composite_over_n_8888_0565_ca_init .macro pixman_composite_over_n_8888_0565_ca_init
add DUMMY, sp, #ARGS_STACK_OFFSET add DUMMY, sp, #ARGS_STACK_OFFSET
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d11[0]}, [DUMMY] vld1.32 {d11[0]}, [DUMMY]
vdup.8 d8, d11[0] vdup.8 d8, d11[0]
@ -1901,6 +1907,7 @@ generate_composite_function \
.macro pixman_composite_add_n_8_8_init .macro pixman_composite_add_n_8_8_init
add DUMMY, sp, #ARGS_STACK_OFFSET add DUMMY, sp, #ARGS_STACK_OFFSET
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d11[0]}, [DUMMY] vld1.32 {d11[0]}, [DUMMY]
vdup.8 d11, d11[3] vdup.8 d11, d11[3]
@ -2207,6 +2214,7 @@ generate_composite_function_single_scanline \
.macro pixman_composite_over_8888_n_8888_init .macro pixman_composite_over_8888_n_8888_init
add DUMMY, sp, #48 add DUMMY, sp, #48
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d15[0]}, [DUMMY] vld1.32 {d15[0]}, [DUMMY]
vdup.8 d15, d15[3] vdup.8 d15, d15[3]
@ -2579,6 +2587,7 @@ generate_composite_function \
.macro pixman_composite_over_0565_n_0565_init .macro pixman_composite_over_0565_n_0565_init
add DUMMY, sp, #(ARGS_STACK_OFFSET + 8) add DUMMY, sp, #(ARGS_STACK_OFFSET + 8)
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
vld1.32 {d15[0]}, [DUMMY] vld1.32 {d15[0]}, [DUMMY]
vdup.8 d15, d15[3] vdup.8 d15, d15[3]
@ -3132,13 +3141,16 @@ pixman_asm_function fname
TMP4 .req r9 TMP4 .req r9
STRIDE .req r2 STRIDE .req r2
.fnstart
mov ip, sp mov ip, sp
.save {r4, r5, r6, r7, r8, r9}
push {r4, r5, r6, r7, r8, r9} push {r4, r5, r6, r7, r8, r9}
mov PF_OFFS, #prefetch_distance mov PF_OFFS, #prefetch_distance
ldmia ip, {WB, X, UX, WIDTH} ldmia ip, {WB, X, UX, WIDTH}
mul PF_OFFS, PF_OFFS, UX mul PF_OFFS, PF_OFFS, UX
.if ((flags) & BILINEAR_FLAG_USE_ALL_NEON_REGS) != 0 .if ((flags) & BILINEAR_FLAG_USE_ALL_NEON_REGS) != 0
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
.endif .endif
@ -3232,6 +3244,7 @@ pixman_asm_function fname
.endif .endif
pop {r4, r5, r6, r7, r8, r9} pop {r4, r5, r6, r7, r8, r9}
bx lr bx lr
.fnend
.unreq OUT .unreq OUT
.unreq TOP .unreq TOP

Просмотреть файл

@ -639,6 +639,8 @@ local skip1
.type fname, %function .type fname, %function
#endif #endif
fname: fname:
.fnstart
.save {r4-r12, lr}
push {r4-r12, lr} /* save all registers */ push {r4-r12, lr} /* save all registers */
/* /*
@ -816,6 +818,7 @@ fname:
init init
.if regs_shortage .if regs_shortage
.save {r0, r1}
push {r0, r1} push {r0, r1}
.endif .endif
subs H, H, #1 subs H, H, #1
@ -901,6 +904,7 @@ fname:
.endif .endif
cleanup cleanup
pop {r4-r12, pc} /* exit */ pop {r4-r12, pc} /* exit */
.fnend
.purgem fetch_src_pixblock .purgem fetch_src_pixblock
.purgem pixld_src .purgem pixld_src
@ -953,6 +957,7 @@ fname:
.type fname, %function .type fname, %function
#endif #endif
fname: fname:
.fnstart
.set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE .set PREFETCH_TYPE_CURRENT, PREFETCH_TYPE_NONE
/* /*
* Make some macro arguments globally visible and accessible * Make some macro arguments globally visible and accessible
@ -987,6 +992,7 @@ fname:
.endm .endm
ldr UNIT_X, [sp] ldr UNIT_X, [sp]
.save {r4-r8, lr}
push {r4-r8, lr} push {r4-r8, lr}
ldr SRC_WIDTH_FIXED, [sp, #(24 + 4)] ldr SRC_WIDTH_FIXED, [sp, #(24 + 4)]
.if mask_bpp != 0 .if mask_bpp != 0
@ -1102,6 +1108,7 @@ fname:
.purgem fetch_src_pixblock .purgem fetch_src_pixblock
.purgem pixld_src .purgem pixld_src
.fnend
.endfunc .endfunc
.endm .endm
@ -1128,6 +1135,7 @@ fname:
*/ */
.macro default_init_need_all_regs .macro default_init_need_all_regs
.vsave {d8-d15}
vpush {d8-d15} vpush {d8-d15}
.endm .endm

Просмотреть файл

@ -680,12 +680,15 @@
ORIG_W .req r14 /* width (pixels) */ ORIG_W .req r14 /* width (pixels) */
fname: fname:
.fnstart
.save {r4-r11, lr}
push {r4-r11, lr} /* save all registers */ push {r4-r11, lr} /* save all registers */
subs Y, Y, #1 subs Y, Y, #1
blo 199f blo 199f
#ifdef DEBUG_PARAMS #ifdef DEBUG_PARAMS
.pad #9*4
sub sp, sp, #9*4 sub sp, sp, #9*4
#endif #endif
@ -857,6 +860,7 @@ fname:
#endif #endif
199: 199:
pop {r4-r11, pc} /* exit */ pop {r4-r11, pc} /* exit */
.fnend
.ltorg .ltorg