Source code

Revision control

Copy as Markdown

Other Tools

/* This Source Code Form subject to the terms of Mozilla Public
* License, v. 2.0 If a copy of the MPL was not distributed with
* this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
.set NGPREGS, 8
.set NFPREGS, 8
.text
.globl _NS_InvokeByIndex
.type _NS_InvokeByIndex, @function
/*
* _NS_InvokeByIndex(nsISupports* that, uint32_t methodIndex,
* uint32_t paramCount, nsXPTCVariant* params)
*/
_NS_InvokeByIndex:
.cfi_startproc
addi.d $sp, $sp, -32
.cfi_def_cfa_offset 32
st.d $s0, $sp, 16
.cfi_offset 23, -16
st.d $s1, $sp, 8
.cfi_offset 24, -24
st.d $s2, $sp, 0
.cfi_offset 25, -32
st.d $ra, $sp, 24
.cfi_offset 1, -8
move $s2, $a0
move $s1, $a1
move $s0, $sp
.cfi_def_cfa_register 23
/* 16-bytes alignment */
addi.d $a0, $a2, 1
li.d $t4, 0xfffffffffffffffe
and $a0, $a0, $t4
slli.d $a0, $a0, 3
sub.d $sp, $sp, $a0
move $a4, $sp
addi.d $sp, $sp, -8*(NFPREGS+NGPREGS)
move $a0, $sp
addi.d $a1, $sp, 8*NGPREGS
bl invoke_copy_to_stack
/* 1st argument is this */
move $a0, $s2
ld.d $a1, $sp, 8
ld.d $a2, $sp, 16
ld.d $a3, $sp, 24
ld.d $a4, $sp, 32
ld.d $a5, $sp, 40
ld.d $a6, $sp, 48
ld.d $a7, $sp, 56
fld.d $fa0, $sp, 64
fld.d $fa1, $sp, 72
fld.d $fa2, $sp, 80
fld.d $fa3, $sp, 88
fld.d $fa4, $sp, 96
fld.d $fa5, $sp, 104
fld.d $fa6, $sp, 112
fld.d $fa7, $sp, 120
addi.d $sp, $sp, 8*(NGPREGS+NFPREGS)
ld.d $s2, $s2, 0
slli.w $s1, $s1, 3
add.d $s2, $s2, $s1
ld.d $t3, $s2, 0
jirl $ra, $t3, 0
move $sp, $s0
.cfi_def_cfa_register 3
ld.d $s0, $sp, 16
.cfi_restore 23
ld.d $s1, $sp, 8
.cfi_restore 24
ld.d $s2, $sp, 0
.cfi_restore 25
ld.d $ra, $sp, 24
.cfi_restore 1
addi.d $sp, $sp, 32
.cfi_def_cfa_offset -32
jirl $zero, $ra, 0
.cfi_endproc
.size _NS_InvokeByIndex, .-_NS_InvokeByIndex
.section .note.GNU-stack, "", @progbits