quick_entrypoints_x86.S revision 57b86d47b66322693a070185fadfb43cb9c12eab
157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers#include "asm_support.h"
257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers#if defined(__APPLE__)
457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    // Mac OS X mangles the functions with an underscore prefix
557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    #define art_deliver_exception_from_code _art_deliver_exception_from_code
657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    #define art_proxy_invoke_handler _art_proxy_invoke_handler
757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    #define artDeliverExceptionFromCode _artDeliverExceptionFromCode
857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers#endif
957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
1057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /* Deliver the given exception */
1157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .extern artDeliverExceptionFromCode
1257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /* Deliver an exception pending on a thread */
1357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .extern artDeliverPendingException
1457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
1557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /* Cache alignment for function entry */
1657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro ALIGN_FUNCTION_ENTRY
1757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .balign 16
1857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
1957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
2057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
2157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Macro that sets up the callee save frame to conform with
2257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Runtime::CreateCalleeSaveMethod(...)
2357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
2457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro SETUP_SAVE_ALL_CALLEE_SAVE_FRAME
2557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %edi  // Save callee saves (ebx is saved/restored by the upcall)
2657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %esi
2757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ebp
2857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    subl  $16, %esp  // Grow stack by 4 words, bottom word will hold Method*
2957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
3057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
3157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro RESTORE_CALLEE_SAVE_FRAME
3257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    addl $16, %esp  // Remove padding
3357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    popl %ebp  // Restore callee saves
3457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    popl %esi
3557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    popl %edi
3657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
3757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
3857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
3957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Macro that sets up the callee save frame to conform with
4057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Runtime::CreateCalleeSaveMethod(...)
4157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
4257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro SETUP_REF_AND_ARG_CALLEE_SAVE_FRAME
4357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %edi  // Save callee saves
4457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %esi
4557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ebp
4657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ebx  // Save args
4757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %edx
4857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ecx
4957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %eax  // Align stack, eax will be clobbered by Method*
5057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
5157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
5257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro RESTORE_REF_AND_ARG_CALLEE_SAVE_FRAME
5357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    addl $16, %esp  // Remove padding
5457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    popl %ebp  // Restore callee saves
5557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    popl %esi
5657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    popl %edi
5757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
5857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
5957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
6057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Macro that set calls through to artDeliverPendingExceptionFromCode, where the pending
6157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * exception is Thread::Current()->exception_.
6257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
6357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro DELIVER_PENDING_EXCEPTION
6457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    SETUP_SAVE_ALL_CALLEE_SAVE_FRAME         // save callee saves for throw
6557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    mov %esp, %ecx
6657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    // Outgoing argument set up
6757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    subl  $8, %esp                           // Alignment padding
6857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ecx                               // pass SP
6957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %fs:THREAD_SELF_OFFSET             // pass Thread::Current()
7057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    call artDeliverPendingExceptionFromCode  // artDeliverExceptionFromCode(Thread*, SP)
7157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
7257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
7357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
7457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro NO_ARG_RUNTIME_EXCEPTION c_name, cxx_name
7557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .global \c_name
7657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .extern \cxx_name
7757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    ALIGN_FUNCTION_ENTRY
7857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name:
7957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    SETUP_SAVE_ALL_CALLEE_SAVE_FRAME  // save all registers as basis for long jump context
8057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    mov %esp, %ecx
8157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    // Outgoing argument set up
8257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    subl  $8, %esp                // alignment padding
8357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %fs:THREAD_SELF_OFFSET  // pass Thread::Current()
8457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ecx                    // pass SP
8557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    call \cxx_name                // \cxx_name(Thread*, SP)
8657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3                          // unreached
8757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
8857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
8957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro ONE_ARG_RUNTIME_EXCEPTION c_name, cxx_name
9057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .global \c_name
9157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .extern \cxx_name
9257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    ALIGN_FUNCTION_ENTRY
9357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name:
9457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    SETUP_SAVE_ALL_CALLEE_SAVE_FRAME  // save all registers as basis for long jump context
9557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    mov %esp, %ecx
9657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    // Outgoing argument set up
9757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl $0                      // alignment padding
9857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ecx                    // pass SP
9957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %fs:THREAD_SELF_OFFSET  // pass Thread::Current()
10057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %eax                    // pass arg1
10157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    call \cxx_name                // \cxx_name(arg1, Thread*, SP)
10257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3                          // unreached
10357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
10457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
10557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro TWO_ARG_RUNTIME_EXCEPTION c_name, cxx_name
10657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .global \c_name
10757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .extern \cxx_name
10857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    ALIGN_FUNCTION_ENTRY
10957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name:
11057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    SETUP_SAVE_ALL_CALLEE_SAVE_FRAME  // save all registers as basis for long jump context
11157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    mov %esp, %edx
11257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    // Outgoing argument set up
11357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %edx                    // pass SP
11457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %fs:THREAD_SELF_OFFSET  // pass Thread::Current()
11557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %eax                    // pass arg1
11657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    pushl %ecx                    // pass arg2
11757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    call \cxx_name                // \cxx_name(arg1, Thread*, SP)
11857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3                          // unreached
11957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
12057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
12157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
12257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code, saves callee saves and then calls artThrowException
12357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * that will place a mock Method* at the bottom of the stack. Arg1 holds the exception.
12457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
12557b86d47b66322693a070185fadfb43cb9c12eabIan RogersONE_ARG_RUNTIME_EXCEPTION art_deliver_exception_from_code, artDeliverExceptionFromCode
12657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
12757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
12857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code to create and deliver a NullPointerException.
12957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
13057b86d47b66322693a070185fadfb43cb9c12eabIan RogersNO_ARG_RUNTIME_EXCEPTION art_throw_null_pointer_exception_from_code, artThrowNullPointerExceptionFromCode
13157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
13257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
13357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code to create and deliver an ArithmeticException.
13457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
13557b86d47b66322693a070185fadfb43cb9c12eabIan RogersNO_ARG_RUNTIME_EXCEPTION art_throw_div_zero_from_code, artThrowDivZeroFromCode
13657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
13757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
13857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code to create and deliver an ArrayIndexOutOfBoundsException. Arg1 holds
13957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * index, arg2 holds limit.
14057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
14157b86d47b66322693a070185fadfb43cb9c12eabIan RogersTWO_ARG_RUNTIME_EXCEPTION art_throw_array_bounds_from_code, artThrowArrayBoundsFromCode
14257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
14357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
14457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code to create and deliver a StackOverflowError.
14557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
14657b86d47b66322693a070185fadfb43cb9c12eabIan RogersNO_ARG_RUNTIME_EXCEPTION art_throw_stack_overflow_from_code, artThrowStackOverflowFromCode
14757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
14857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
14957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code to create and deliver a NoSuchMethodError.
15057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
15157b86d47b66322693a070185fadfb43cb9c12eabIan RogersONE_ARG_RUNTIME_EXCEPTION art_throw_no_such_method_from_code, artThrowNoSuchMethodFromCode
15257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
15357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
15457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * Called by managed code to create and deliver verification errors. Arg1 is kind, arg2 is ref.
15557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
15657b86d47b66322693a070185fadfb43cb9c12eabIan RogersTWO_ARG_RUNTIME_EXCEPTION art_throw_verification_error_from_code, artThrowVerificationErrorFromCode
15757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
15857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    /*
15957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * All generated callsites for interface invokes and invocation slow paths will load arguments
16057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * as usual - except instead of loading arg0/r0 with the target Method*, arg0/r0 will contain
16157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * the method_idx.  This wrapper will save arg1-arg3, load the caller's Method*, align the
16257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * stack and call the appropriate C helper.
16357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * NOTE: "this" is first visible argument of the target, and so can be found in arg1/r1.
16457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     *
16557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * The helper will attempt to locate the target and return a 64-bit result in r0/r1 consisting
16657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * of the target Method* in r0 and method->code_ in r1.
16757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     *
16857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * If unsuccessful, the helper will return NULL/NULL. There will bea pending exception in the
16957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * thread and we branch to another stub to deliver it.
17057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     *
17157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * On success this wrapper will restore arguments and *jump* to the target, leaving the lr
17257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     * pointing back to the original caller.
17357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers     */
17457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.macro INVOKE_TRAMPOLINE c_name, cxx_name
17557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .global \c_name
17657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .extern \cxx_name
17757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    ALIGN_FUNCTION_ENTRY
17857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers\c_name:
17957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
18057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers.endm
18157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
18257b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_interface_trampoline, artInvokeInterfaceTrampoline
18357b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_interface_trampoline_with_access_check, artInvokeInterfaceTrampolineWithAccessCheck
18457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
18557b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_static_trampoline_with_access_check, artInvokeStaticTrampolineWithAccessCheck
18657b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_direct_trampoline_with_access_check, artInvokeDirectTrampolineWithAccessCheck
18757b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_super_trampoline_with_access_check, artInvokeSuperTrampolineWithAccessCheck
18857b86d47b66322693a070185fadfb43cb9c12eabIan RogersINVOKE_TRAMPOLINE art_invoke_virtual_trampoline_with_access_check, artInvokeVirtualTrampolineWithAccessCheck
18957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
19057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    // TODO
19157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_proxy_invoke_handler
19257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_proxy_invoke_handler:
19357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
19457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
19557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_update_debugger
19657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_update_debugger:
19757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
19857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
19957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_test_suspend
20057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_test_suspend:
20157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
20257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
20357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_alloc_object_from_code
20457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_object_from_code:
20557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
20657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
20757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_alloc_object_from_code_with_access_check
20857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_object_from_code_with_access_check:
20957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
21057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
21157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_alloc_array_from_code
21257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_array_from_code:
21357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
21457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
21557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_alloc_array_from_code_with_access_check
21657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_alloc_array_from_code_with_access_check:
21757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
21857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
21957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_check_and_alloc_array_from_code
22057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_check_and_alloc_array_from_code:
22157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
22257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
22357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_check_and_alloc_array_from_code_with_access_check
22457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_check_and_alloc_array_from_code_with_access_check:
22557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
22657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
22757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_can_put_array_element_from_code
22857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_can_put_array_element_from_code:
22957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
23057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
23157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_check_cast_from_code
23257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_check_cast_from_code:
23357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
23457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
23557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_initialize_static_storage_from_code
23657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_initialize_static_storage_from_code:
23757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
23857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
23957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_initialize_type_and_verify_access_from_code
24057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_initialize_type_and_verify_access_from_code:
24157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
24257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
24357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_initialize_type_from_code
24457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_initialize_type_from_code:
24557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
24657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
24757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_resolve_string_from_code
24857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_resolve_string_from_code:
24957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
25057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
25157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_set32_instance_from_code
25257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set32_instance_from_code:
25357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
25457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
25557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_set64_instance_from_code
25657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set64_instance_from_code:
25757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
25857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
25957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_set_obj_instance_from_code
26057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set_obj_instance_from_code:
26157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
26257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
26357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_get32_instance_from_code
26457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get32_instance_from_code:
26557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
26657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
26757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_get64_instance_from_code
26857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get64_instance_from_code:
26957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
27057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
27157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_get_obj_instance_from_code
27257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get_obj_instance_from_code:
27357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
27457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
27557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_set32_static_from_code
27657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set32_static_from_code:
27757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
27857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
27957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_set64_static_from_code
28057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set64_static_from_code:
28157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
28257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
28357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_set_obj_static_from_code
28457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_set_obj_static_from_code:
28557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
28657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
28757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_get32_static_from_code
28857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get32_static_from_code:
28957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
29057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
29157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_get64_static_from_code
29257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get64_static_from_code:
29357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
29457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
29557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers   .globl art_get_obj_static_from_code
29657b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_get_obj_static_from_code:
29757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
29857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
29957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_handle_fill_data_from_code
30057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_handle_fill_data_from_code:
30157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
30257b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
30357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_lock_object_from_code
30457b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_lock_object_from_code:
30557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
30657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
30757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_unlock_object_from_code
30857b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_unlock_object_from_code:
30957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
31057b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
31157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_indexof
31257b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_indexof:
31357b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
31457b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
31557b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl __memcmp16
31657b86d47b66322693a070185fadfb43cb9c12eabIan Rogers__memcmp16:
31757b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
31857b86d47b66322693a070185fadfb43cb9c12eabIan Rogers
31957b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    .globl art_string_compareto
32057b86d47b66322693a070185fadfb43cb9c12eabIan Rogersart_string_compareto:
32157b86d47b66322693a070185fadfb43cb9c12eabIan Rogers    int3
322