зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
4489adec63
Коммит
3b0419d87e
|
@ -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
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче